ethnl_request_opsRegular
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 *)