ethnl_request_ops
Regular
4.4
: Absent ⚠️
4.8
: Absent ⚠️
4.10
: Absent ⚠️
4.13
: Absent ⚠️
4.15
: Absent ⚠️
4.18
: Absent ⚠️
5.0
: Absent ⚠️
5.3
: Absent ⚠️
5.4
: Absent ⚠️
5.8
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int max_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
const struct nla_policy *request_policy;
bool allow_nodev_do;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
};
5.11
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
bool allow_nodev_do;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
};
5.13
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
bool allow_nodev_do;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
};
5.15
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
bool allow_nodev_do;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
};
5.19
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
bool allow_nodev_do;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
};
6.2
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
bool allow_nodev_do;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
};
6.5
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
bool allow_nodev_do;
u8 set_ntf_cmd;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
int (*set_validate)(struct ethnl_req_info *, struct genl_info *);
int (*set)(struct ethnl_req_info *, struct genl_info *);
};
6.8
: ✅struct ethnl_request_ops {
u8 request_cmd;
u8 reply_cmd;
u16 hdr_attr;
unsigned int req_info_size;
unsigned int reply_data_size;
bool allow_nodev_do;
u8 set_ntf_cmd;
int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, const struct genl_info *);
int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
void (*cleanup_data)(struct ethnl_reply_data *);
int (*set_validate)(struct ethnl_req_info *, struct genl_info *);
int (*set)(struct ethnl_req_info *, struct genl_info *);
};
arm64
: Absent ⚠️
armhf
: Absent ⚠️
ppc64el
: Absent ⚠️
riscv64
: Absent ⚠️
aws
: Absent ⚠️
azure
: Absent ⚠️
gcp
: Absent ⚠️
lowlatency
: Absent ⚠️
Regular
5.8
and 5.11
⚠️unsigned int max_attr
const struct nla_policy *request_policy
5.11
and 5.13
✅
5.13
and 5.15
✅
5.15
and 5.19
✅
5.19
and 6.2
✅
6.2
and 6.5
⚠️u8 set_ntf_cmd
int (*set_validate)(struct ethnl_req_info *, struct genl_info *)
int (*set)(struct ethnl_req_info *, struct genl_info *)
6.5
and 6.8
⚠️int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, struct genl_info *)
➡️ int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, const struct genl_info *)