diff options
author | David Ahern <dsahern@gmail.com> | 2018-10-07 20:16:35 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-10-08 10:39:05 -0700 |
commit | e8ba330ac0c55004e775eab53fa1e748e5d71bdb (patch) | |
tree | 7395f21e571ed0d138ec5c6981cecab92942bb1f /net/ipv4/ipmr.c | |
parent | 14fc5bb29fe78aaa1777cfee248339497e30c02e (diff) | |
download | op-kernel-dev-e8ba330ac0c55004e775eab53fa1e748e5d71bdb.zip op-kernel-dev-e8ba330ac0c55004e775eab53fa1e748e5d71bdb.tar.gz |
rtnetlink: Update fib dumps for strict data checking
Add helper to check netlink message for route dumps. If the strict flag
is set the dump request is expected to have an rtmsg struct as the header.
All elements of the struct are expected to be 0 with the exception of
rtm_flags (which is used by both ipv4 and ipv6 dumps) and no attributes
can be appended. rtm_flags can only have RTM_F_CLONED and RTM_F_PREFIX
set.
Update inet_dump_fib, inet6_dump_fib, mpls_dump_routes, ipmr_rtm_dumproute,
and ip6mr_rtm_dumproute to call this helper if strict data checking is
enabled.
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ipmr.c')
-rw-r--r-- | net/ipv4/ipmr.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index e7322e4..91b0d56 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c @@ -2527,6 +2527,13 @@ errout_free: static int ipmr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb) { + if (cb->strict_check) { + int err = ip_valid_fib_dump_req(cb->nlh, cb->extack); + + if (err < 0) + return err; + } + return mr_rtm_dumproute(skb, cb, ipmr_mr_table_iter, _ipmr_fill_mroute, &mfc_unres_lock); } |