tcf_proto_ops
Regular
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
✅