net: Add struct for fib dump filter
Add struct fib_dump_filter for options on limiting which routes are returned in a dump request. The current list is table id, protocol, route type, rtm_flags and nexthop device index. struct net is needed to lookup the net_device from the index. Declare the filter for each route dump handler and plumb the new arguments from dump handlers to ip_valid_fib_dump_req. Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
22e6c58b8c
commit
4724676d55
@@ -802,7 +802,8 @@ errout:
|
||||
return err;
|
||||
}
|
||||
|
||||
int ip_valid_fib_dump_req(const struct nlmsghdr *nlh,
|
||||
int ip_valid_fib_dump_req(struct net *net, const struct nlmsghdr *nlh,
|
||||
struct fib_dump_filter *filter,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct rtmsg *rtm;
|
||||
@@ -837,6 +838,7 @@ static int inet_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
{
|
||||
const struct nlmsghdr *nlh = cb->nlh;
|
||||
struct net *net = sock_net(skb->sk);
|
||||
struct fib_dump_filter filter = {};
|
||||
unsigned int h, s_h;
|
||||
unsigned int e = 0, s_e;
|
||||
struct fib_table *tb;
|
||||
@@ -844,7 +846,7 @@ static int inet_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
int dumped = 0, err;
|
||||
|
||||
if (cb->strict_check) {
|
||||
err = ip_valid_fib_dump_req(nlh, cb->extack);
|
||||
err = ip_valid_fib_dump_req(net, nlh, &filter, cb->extack);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
Reference in New Issue
Block a user