Skip to content

Commit

Permalink
devlink: move devlink_nl_put_nested_handle() into netlink.c
Browse files Browse the repository at this point in the history
As the next patch is going to call this helper out of the linecard.c,
move to netlink.c.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jiri Pirko authored and David S. Miller committed Sep 17, 2023
1 parent ad99637 commit af1f140
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 26 deletions.
2 changes: 2 additions & 0 deletions net/devlink/devl_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ devlink_nl_put_handle(struct sk_buff *msg, struct devlink *devlink)
return 0;
}

int devlink_nl_put_nested_handle(struct sk_buff *msg, struct net *net,
struct devlink *devlink);
int devlink_nl_msg_reply_and_new(struct sk_buff **msg, struct genl_info *info);

/* Notify */
Expand Down
26 changes: 0 additions & 26 deletions net/devlink/linecard.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,32 +65,6 @@ devlink_linecard_get_from_info(struct devlink *devlink, struct genl_info *info)
return devlink_linecard_get_from_attrs(devlink, info->attrs);
}

static int devlink_nl_put_nested_handle(struct sk_buff *msg, struct net *net,
struct devlink *devlink)
{
struct nlattr *nested_attr;

nested_attr = nla_nest_start(msg, DEVLINK_ATTR_NESTED_DEVLINK);
if (!nested_attr)
return -EMSGSIZE;
if (devlink_nl_put_handle(msg, devlink))
goto nla_put_failure;
if (!net_eq(net, devlink_net(devlink))) {
int id = peernet2id_alloc(net, devlink_net(devlink),
GFP_KERNEL);

if (nla_put_s32(msg, DEVLINK_ATTR_NETNS_ID, id))
return -EMSGSIZE;
}

nla_nest_end(msg, nested_attr);
return 0;

nla_put_failure:
nla_nest_cancel(msg, nested_attr);
return -EMSGSIZE;
}

struct devlink_linecard_type {
const char *type;
const void *priv;
Expand Down
26 changes: 26 additions & 0 deletions net/devlink/netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,32 @@ static const struct nla_policy devlink_nl_policy[DEVLINK_ATTR_MAX + 1] = {
[DEVLINK_ATTR_REGION_DIRECT] = { .type = NLA_FLAG },
};

int devlink_nl_put_nested_handle(struct sk_buff *msg, struct net *net,
struct devlink *devlink)
{
struct nlattr *nested_attr;

nested_attr = nla_nest_start(msg, DEVLINK_ATTR_NESTED_DEVLINK);
if (!nested_attr)
return -EMSGSIZE;
if (devlink_nl_put_handle(msg, devlink))
goto nla_put_failure;
if (!net_eq(net, devlink_net(devlink))) {
int id = peernet2id_alloc(net, devlink_net(devlink),
GFP_KERNEL);

if (nla_put_s32(msg, DEVLINK_ATTR_NETNS_ID, id))
return -EMSGSIZE;
}

nla_nest_end(msg, nested_attr);
return 0;

nla_put_failure:
nla_nest_cancel(msg, nested_attr);
return -EMSGSIZE;
}

int devlink_nl_msg_reply_and_new(struct sk_buff **msg, struct genl_info *info)
{
int err;
Expand Down

0 comments on commit af1f140

Please sign in to comment.