tc_action_ops
Regular
4.4
: ✅struct tc_action_ops {
struct list_head head;
struct tcf_hashinfo *hinfo;
char kind[16];
__u32 type;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *, int);
int (*lookup)(struct tc_action *, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action *, int, int);
int (*walk)(struct sk_buff *, struct netlink_callback *, int, struct tc_action *);
};
4.8
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
__u32 type;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *, int);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *);
void (*stats_update)(struct tc_action *, u64, u32, u64);
};
4.10
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
__u32 type;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *, int);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *);
void (*stats_update)(struct tc_action *, u64, u32, u64);
int (*get_dev)(const struct tc_action *, struct net *, struct net_device **);
};
4.13
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
__u32 type;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *, int);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *);
void (*stats_update)(struct tc_action *, u64, u32, u64);
int (*get_dev)(const struct tc_action *, struct net *, struct net_device **);
};
4.15
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
__u32 type;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *, int);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *);
void (*stats_update)(struct tc_action *, u64, u32, u64);
struct net_device * (*get_dev)(const struct tc_action *);
};
4.18
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
__u32 type;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32, struct netlink_ext_ack *);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *);
};
5.0
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
__u32 type;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *);
void (*put_dev)(struct net_device *);
};
5.3
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *);
void (*put_dev)(struct net_device *);
};
5.4
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
5.8
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
5.11
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
5.13
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
5.15
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
5.19
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *);
};
6.2
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
unsigned int net_id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *);
};
6.5
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
unsigned int net_id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *);
};
6.8
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
unsigned int net_id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *);
};
arm64
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
armhf
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
ppc64el
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
riscv64
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
aws
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
azure
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
gcp
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
lowlatency
: ✅struct tc_action_ops {
struct list_head head;
char kind[16];
enum tca_id id;
size_t size;
struct module *owner;
int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
int (*dump)(struct sk_buff *, struct tc_action *, int, int);
void (*cleanup)(struct tc_action *);
int (*lookup)(struct net *, struct tc_action **, u32);
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *);
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
void (*stats_update)(struct tc_action *, u64, u32, u64, bool);
size_t (*get_fill_size)(const struct tc_action *);
struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
};
Regular
4.4
and 4.8
⚠️size_t size
void (*stats_update)(struct tc_action *, u64, u32, u64)
struct tcf_hashinfo *hinfo
int (*lookup)(struct tc_action *, u32)
➡️ int (*lookup)(struct net *, struct tc_action **, u32)
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action *, int, int)
➡️ int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int)
int (*walk)(struct sk_buff *, struct netlink_callback *, int, struct tc_action *)
➡️ int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *)
4.8
and 4.10
⚠️int (*get_dev)(const struct tc_action *, struct net *, struct net_device **)
4.10
and 4.13
✅
4.13
and 4.15
⚠️int (*get_dev)(const struct tc_action *, struct net *, struct net_device **)
➡️ struct net_device * (*get_dev)(const struct tc_action *)
4.15
and 4.18
⚠️size_t (*get_fill_size)(const struct tc_action *)
void (*cleanup)(struct tc_action *, int)
➡️ void (*cleanup)(struct tc_action *)
int (*lookup)(struct net *, struct tc_action **, u32)
➡️ int (*lookup)(struct net *, struct tc_action **, u32, struct netlink_ext_ack *)
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int)
➡️ int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, struct netlink_ext_ack *)
int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *)
➡️ int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *)
4.18
and 5.0
⚠️void (*put_dev)(struct net_device *)
int (*lookup)(struct net *, struct tc_action **, u32, struct netlink_ext_ack *)
➡️ int (*lookup)(struct net *, struct tc_action **, u32)
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, struct netlink_ext_ack *)
➡️ int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct netlink_ext_ack *)
void (*stats_update)(struct tc_action *, u64, u32, u64)
➡️ void (*stats_update)(struct tc_action *, u64, u32, u64, bool)
5.0
and 5.3
⚠️enum tca_id id
__u32 type
int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct netlink_ext_ack *)
➡️ int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *)
5.3
and 5.4
⚠️struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *)
void (*put_dev)(struct net_device *)
struct net_device * (*get_dev)(const struct tc_action *)
➡️ struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *)
5.4
and 5.8
⚠️int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, struct netlink_ext_ack *)
➡️ int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, u32, struct netlink_ext_ack *)
5.8
and 5.11
⚠️void (*stats_update)(struct tc_action *, u64, u32, u64, bool)
➡️ void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool)
5.11
and 5.13
✅
5.13
and 5.15
⚠️int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, int, int, bool, struct tcf_proto *, u32, struct netlink_ext_ack *)
➡️ int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *)
5.15
and 5.19
⚠️int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *)
5.19
and 6.2
⚠️unsigned int net_id
6.2
and 6.5
✅
6.5
and 6.8
✅
amd64
and arm64
✅
amd64
and armhf
✅
amd64
and ppc64el
✅
amd64
and riscv64
✅
generic
and aws
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅