mirror of https://gitee.com/openkylin/linux.git
genetlink: factor skb preparation out of ctrl_dumppolicy()
We'll need this later for the per-op policy index dump. Reviewed-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
04a351a62b
commit
aa85ee5f95
|
@ -1154,6 +1154,24 @@ static int ctrl_dumppolicy_start(struct netlink_callback *cb)
|
||||||
rt->maxattr);
|
rt->maxattr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *ctrl_dumppolicy_prep(struct sk_buff *skb,
|
||||||
|
struct netlink_callback *cb)
|
||||||
|
{
|
||||||
|
struct ctrl_dump_policy_ctx *ctx = (void *)cb->ctx;
|
||||||
|
void *hdr;
|
||||||
|
|
||||||
|
hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid,
|
||||||
|
cb->nlh->nlmsg_seq, &genl_ctrl,
|
||||||
|
NLM_F_MULTI, CTRL_CMD_GETPOLICY);
|
||||||
|
if (!hdr)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (nla_put_u16(skb, CTRL_ATTR_FAMILY_ID, ctx->fam_id))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return hdr;
|
||||||
|
}
|
||||||
|
|
||||||
static int ctrl_dumppolicy(struct sk_buff *skb, struct netlink_callback *cb)
|
static int ctrl_dumppolicy(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
{
|
{
|
||||||
struct ctrl_dump_policy_ctx *ctx = (void *)cb->ctx;
|
struct ctrl_dump_policy_ctx *ctx = (void *)cb->ctx;
|
||||||
|
@ -1162,15 +1180,10 @@ static int ctrl_dumppolicy(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
void *hdr;
|
void *hdr;
|
||||||
struct nlattr *nest;
|
struct nlattr *nest;
|
||||||
|
|
||||||
hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid,
|
hdr = ctrl_dumppolicy_prep(skb, cb);
|
||||||
cb->nlh->nlmsg_seq, &genl_ctrl,
|
|
||||||
NLM_F_MULTI, CTRL_CMD_GETPOLICY);
|
|
||||||
if (!hdr)
|
if (!hdr)
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
if (nla_put_u16(skb, CTRL_ATTR_FAMILY_ID, ctx->fam_id))
|
|
||||||
goto nla_put_failure;
|
|
||||||
|
|
||||||
nest = nla_nest_start(skb, CTRL_ATTR_POLICY);
|
nest = nla_nest_start(skb, CTRL_ATTR_POLICY);
|
||||||
if (!nest)
|
if (!nest)
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
Loading…
Reference in New Issue