#include <linux/ethtool.h>
#include <linux/phy.h>
#include "netlink.h"
#include "common.h"
struct strset_info { … };
static const struct strset_info info_template[] = …;
struct strset_req_info { … };
#define STRSET_REQINFO(__req_base) …
struct strset_reply_data { … };
#define STRSET_REPDATA(__reply_base) …
const struct nla_policy ethnl_strset_get_policy[] = …;
static const struct nla_policy get_stringset_policy[] = …;
static bool strset_include(const struct strset_req_info *info,
const struct strset_reply_data *data, u32 id)
{ … }
static int strset_get_id(const struct nlattr *nest, u32 *val,
struct netlink_ext_ack *extack)
{ … }
static const struct nla_policy strset_stringsets_policy[] = …;
static int strset_parse_request(struct ethnl_req_info *req_base,
struct nlattr **tb,
struct netlink_ext_ack *extack)
{ … }
static void strset_cleanup_data(struct ethnl_reply_data *reply_base)
{ … }
static int strset_prepare_set(struct strset_info *info, struct net_device *dev,
unsigned int id, bool counts_only)
{ … }
static int strset_prepare_data(const struct ethnl_req_info *req_base,
struct ethnl_reply_data *reply_base,
const struct genl_info *info)
{ … }
static int strset_set_size(const struct strset_info *info, bool counts_only)
{ … }
static int strset_reply_size(const struct ethnl_req_info *req_base,
const struct ethnl_reply_data *reply_base)
{ … }
static int strset_fill_string(struct sk_buff *skb,
const struct strset_info *set_info, u32 idx)
{ … }
static int strset_fill_set(struct sk_buff *skb,
const struct strset_info *set_info, u32 id,
bool counts_only)
{ … }
static int strset_fill_reply(struct sk_buff *skb,
const struct ethnl_req_info *req_base,
const struct ethnl_reply_data *reply_base)
{ … }
const struct ethnl_request_ops ethnl_strset_request_ops = …;