tc_action_opsRegular
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 ✅