mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
genetlink: refactor the cmd <> policy mapping dump
The code at the top of ctrl_dumppolicy() dumps mappings between ops and policies. It supports dumping both the entire family and single op if dump is filtered. But both of those cases are handled inside a loop, which makes the logic harder to follow and change. Refactor to split the two cases more clearly. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e2dbda0fd2
commit
ff14adbd87
@ -1319,21 +1319,24 @@ static int ctrl_dumppolicy(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
void *hdr;
|
||||
|
||||
if (!ctx->policies) {
|
||||
struct genl_ops op;
|
||||
|
||||
if (ctx->single_op) {
|
||||
int err;
|
||||
|
||||
err = genl_get_cmd(ctx->op, ctx->rt, &op);
|
||||
if (WARN_ON(err))
|
||||
return err;
|
||||
|
||||
if (ctrl_dumppolicy_put_op(skb, cb, &op))
|
||||
return skb->len;
|
||||
|
||||
/* don't enter the loop below */
|
||||
ctx->opidx = genl_get_cmd_cnt(ctx->rt);
|
||||
}
|
||||
|
||||
while (ctx->opidx < genl_get_cmd_cnt(ctx->rt)) {
|
||||
struct genl_ops op;
|
||||
|
||||
if (ctx->single_op) {
|
||||
int err;
|
||||
|
||||
err = genl_get_cmd(ctx->op, ctx->rt, &op);
|
||||
if (WARN_ON(err))
|
||||
return skb->len;
|
||||
|
||||
/* break out of the loop after this one */
|
||||
ctx->opidx = genl_get_cmd_cnt(ctx->rt);
|
||||
} else {
|
||||
genl_get_cmd_by_index(ctx->opidx, ctx->rt, &op);
|
||||
}
|
||||
genl_get_cmd_by_index(ctx->opidx, ctx->rt, &op);
|
||||
|
||||
if (ctrl_dumppolicy_put_op(skb, cb, &op))
|
||||
return skb->len;
|
||||
|
Loading…
Reference in New Issue
Block a user