There is no functional change in this patch, it only prepares the next one where rtnl_net_newid() will use rtnl_net_get_size() and rtnl_net_fill().
Signed-off-by: Nicolas Dichtel <nicolas.dich...@6wind.com> --- net/core/net_namespace.c | 92 ++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index a0e0d298c991..8f5fa5d5becd 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -716,6 +716,52 @@ static const struct nla_policy rtnl_net_policy[NETNSA_MAX + 1] = { [NETNSA_TARGET_NSID] = { .type = NLA_S32 }, }; +struct net_fill_args { + u32 portid; + u32 seq; + int flags; + int cmd; + int nsid; + bool add_ref; + int ref_nsid; +}; + +static int rtnl_net_get_size(void) +{ + return NLMSG_ALIGN(sizeof(struct rtgenmsg)) + + nla_total_size(sizeof(s32)) /* NETNSA_NSID */ + + nla_total_size(sizeof(s32)) /* NETNSA_CURRENT_NSID */ + ; +} + +static int rtnl_net_fill(struct sk_buff *skb, struct net_fill_args *args) +{ + struct nlmsghdr *nlh; + struct rtgenmsg *rth; + + nlh = nlmsg_put(skb, args->portid, args->seq, args->cmd, sizeof(*rth), + args->flags); + if (!nlh) + return -EMSGSIZE; + + rth = nlmsg_data(nlh); + rth->rtgen_family = AF_UNSPEC; + + if (nla_put_s32(skb, NETNSA_NSID, args->nsid)) + goto nla_put_failure; + + if (args->add_ref && + nla_put_s32(skb, NETNSA_CURRENT_NSID, args->ref_nsid)) + goto nla_put_failure; + + nlmsg_end(skb, nlh); + return 0; + +nla_put_failure: + nlmsg_cancel(skb, nlh); + return -EMSGSIZE; +} + static int rtnl_net_newid(struct sk_buff *skb, struct nlmsghdr *nlh, struct netlink_ext_ack *extack) { @@ -776,52 +822,6 @@ static int rtnl_net_newid(struct sk_buff *skb, struct nlmsghdr *nlh, return err; } -static int rtnl_net_get_size(void) -{ - return NLMSG_ALIGN(sizeof(struct rtgenmsg)) - + nla_total_size(sizeof(s32)) /* NETNSA_NSID */ - + nla_total_size(sizeof(s32)) /* NETNSA_CURRENT_NSID */ - ; -} - -struct net_fill_args { - u32 portid; - u32 seq; - int flags; - int cmd; - int nsid; - bool add_ref; - int ref_nsid; -}; - -static int rtnl_net_fill(struct sk_buff *skb, struct net_fill_args *args) -{ - struct nlmsghdr *nlh; - struct rtgenmsg *rth; - - nlh = nlmsg_put(skb, args->portid, args->seq, args->cmd, sizeof(*rth), - args->flags); - if (!nlh) - return -EMSGSIZE; - - rth = nlmsg_data(nlh); - rth->rtgen_family = AF_UNSPEC; - - if (nla_put_s32(skb, NETNSA_NSID, args->nsid)) - goto nla_put_failure; - - if (args->add_ref && - nla_put_s32(skb, NETNSA_CURRENT_NSID, args->ref_nsid)) - goto nla_put_failure; - - nlmsg_end(skb, nlh); - return 0; - -nla_put_failure: - nlmsg_cancel(skb, nlh); - return -EMSGSIZE; -} - static int rtnl_net_valid_getid_req(struct sk_buff *skb, const struct nlmsghdr *nlh, struct nlattr **tb, -- 2.23.0