tcf_proto_opsRegular
4.4: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
bool (*destroy)(struct tcf_proto *, bool);
long unsigned int (*get)(struct tcf_proto *, u32);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, long unsigned int *, bool);
int (*delete)(struct tcf_proto *, long unsigned int);
void (*walk)(struct tcf_proto *, struct tcf_walker *);
int (*dump)(struct net *, struct tcf_proto *, long unsigned int, struct sk_buff *, struct tcmsg *);
struct module *owner;
};
4.8: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
bool (*destroy)(struct tcf_proto *, bool);
long unsigned int (*get)(struct tcf_proto *, u32);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, long unsigned int *, bool);
int (*delete)(struct tcf_proto *, long unsigned int);
void (*walk)(struct tcf_proto *, struct tcf_walker *);
int (*dump)(struct net *, struct tcf_proto *, long unsigned int, struct sk_buff *, struct tcmsg *);
struct module *owner;
};
4.10: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
bool (*destroy)(struct tcf_proto *, bool);
long unsigned int (*get)(struct tcf_proto *, u32);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, long unsigned int *, bool);
int (*delete)(struct tcf_proto *, long unsigned int);
void (*walk)(struct tcf_proto *, struct tcf_walker *);
int (*dump)(struct net *, struct tcf_proto *, long unsigned int, struct sk_buff *, struct tcmsg *);
struct module *owner;
};
4.13: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *);
long unsigned int (*get)(struct tcf_proto *, u32);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, long unsigned int *, bool);
int (*delete)(struct tcf_proto *, long unsigned int, bool *);
void (*walk)(struct tcf_proto *, struct tcf_walker *);
int (*dump)(struct net *, struct tcf_proto *, long unsigned int, struct sk_buff *, struct tcmsg *);
struct module *owner;
};
4.15: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *);
void * (*get)(struct tcf_proto *, u32);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool);
int (*delete)(struct tcf_proto *, void *, bool *);
void (*walk)(struct tcf_proto *, struct tcf_walker *);
void (*bind_class)(void *, u32, long unsigned int);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *);
struct module *owner;
};
4.18: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, struct netlink_ext_ack *);
void (*walk)(struct tcf_proto *, struct tcf_walker *);
void (*bind_class)(void *, u32, long unsigned int);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *);
struct module *owner;
};
5.0: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, struct netlink_ext_ack *);
void (*walk)(struct tcf_proto *, struct tcf_walker *);
int (*reoffload)(struct tcf_proto *, bool, tc_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*bind_class)(void *, u32, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
};
5.3: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*bind_class)(void *, u32, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
5.4: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
5.8: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
5.11: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
5.13: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
5.15: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
5.19: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
6.2: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
6.5: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
struct tcf_exts * (*get_exts)(const struct tcf_proto *, u32);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
6.8: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
void (*tmplt_reoffload)(struct tcf_chain *, bool, flow_setup_cb_t *, void *);
struct tcf_exts * (*get_exts)(const struct tcf_proto *, u32);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
arm64: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
armhf: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
ppc64el: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
riscv64: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
aws: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
azure: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
gcp: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
lowlatency: ✅struct tcf_proto_ops {
struct list_head head;
char kind[16];
int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
int (*init)(struct tcf_proto *);
void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
void * (*get)(struct tcf_proto *, u32);
void (*put)(struct tcf_proto *, void *);
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *);
int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
bool (*delete_empty)(struct tcf_proto *);
void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
void (*hw_add)(struct tcf_proto *, void *);
void (*hw_del)(struct tcf_proto *, void *);
void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int);
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
void (*tmplt_destroy)(void *);
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
struct module *owner;
int flags;
};
Regular
4.4 and 4.8 ✅
4.8 and 4.10 ✅
4.10 and 4.13 ⚠️bool (*destroy)(struct tcf_proto *, bool) ➡️ void (*destroy)(struct tcf_proto *)
int (*delete)(struct tcf_proto *, long unsigned int) ➡️ int (*delete)(struct tcf_proto *, long unsigned int, bool *)
4.13 and 4.15 ⚠️void (*bind_class)(void *, u32, long unsigned int)
long unsigned int (*get)(struct tcf_proto *, u32) ➡️ void * (*get)(struct tcf_proto *, u32)
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, long unsigned int *, bool) ➡️ int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool)
int (*delete)(struct tcf_proto *, long unsigned int, bool *) ➡️ int (*delete)(struct tcf_proto *, void *, bool *)
int (*dump)(struct net *, struct tcf_proto *, long unsigned int, struct sk_buff *, struct tcmsg *) ➡️ int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *)
4.15 and 4.18 ⚠️void (*destroy)(struct tcf_proto *) ➡️ void (*destroy)(struct tcf_proto *, struct netlink_ext_ack *)
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool) ➡️ int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, struct netlink_ext_ack *)
int (*delete)(struct tcf_proto *, void *, bool *) ➡️ int (*delete)(struct tcf_proto *, void *, bool *, struct netlink_ext_ack *)
4.18 and 5.0 ⚠️int (*reoffload)(struct tcf_proto *, bool, tc_setup_cb_t *, void *, struct netlink_ext_ack *)
void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *)
void (*tmplt_destroy)(void *)
int (*tmplt_dump)(struct sk_buff *, struct net *, void *)
5.0 and 5.3 ⚠️void (*put)(struct tcf_proto *, void *)
int flags
void (*destroy)(struct tcf_proto *, struct netlink_ext_ack *) ➡️ void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *)
int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, struct netlink_ext_ack *) ➡️ int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *)
int (*delete)(struct tcf_proto *, void *, bool *, struct netlink_ext_ack *) ➡️ int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *)
void (*walk)(struct tcf_proto *, struct tcf_walker *) ➡️ void (*walk)(struct tcf_proto *, struct tcf_walker *, bool)
int (*reoffload)(struct tcf_proto *, bool, tc_setup_cb_t *, void *, struct netlink_ext_ack *) ➡️ int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *)
int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *) ➡️ int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool)
5.3 and 5.4 ⚠️bool (*delete_empty)(struct tcf_proto *)
void (*hw_add)(struct tcf_proto *, void *)
void (*hw_del)(struct tcf_proto *, void *)
void (*bind_class)(void *, u32, long unsigned int) ➡️ void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int)
5.4 and 5.8 ⚠️int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool)
5.8 and 5.11 ✅
5.11 and 5.13 ✅
5.13 and 5.15 ⚠️int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *) ➡️ int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *)
5.15 and 5.19 ✅
5.19 and 6.2 ✅
6.2 and 6.5 ⚠️struct tcf_exts * (*get_exts)(const struct tcf_proto *, u32)
6.5 and 6.8 ⚠️void (*tmplt_reoffload)(struct tcf_chain *, bool, flow_setup_cb_t *, void *)
amd64 and arm64 ✅
amd64 and armhf ✅
amd64 and ppc64el ✅
amd64 and riscv64 ✅
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅