On Thu, 11 Oct 2018 08:06:18 -0700 David Ahern <dsah...@kernel.org> wrote:
> From: David Ahern <dsah...@gmail.com> > > Implement kernel side filtering of route dumps by protocol (e.g., which > routing daemon installed the route), route type (e.g., unicast), table > id and nexthop device. > > iproute2 has been doing this filtering in userspace for years; pushing > the filters to the kernel side reduces the amount of data the kernel > sends and reduces wasted cycles on both sides processing unwanted data. > These initial options provide a huge improvement for efficiently > examining routes on large scale systems. > > David Ahern (9): > net: Add struct for fib dump filter > net/ipv4: Plumb support for filtering route dumps > net/ipv6: Plumb support for filtering route dumps > net/mpls: Plumb support for filtering route dumps > net: Plumb support for filtering ipv4 and ipv6 multicast route dumps > net: Enable kernel side filtering of route dumps > net/mpls: Handle kernel side filtering of route dumps > net/ipv6: Bail early if user only wants cloned entries > net/ipv4: Bail early if user only wants prefix entries > > include/linux/mroute_base.h | 5 +-- > include/net/ip6_route.h | 1 + > include/net/ip_fib.h | 14 ++++++-- > net/ipv4/fib_frontend.c | 64 +++++++++++++++++++++++++++------ > net/ipv4/fib_trie.c | 37 +++++++++++++------ > net/ipv4/ipmr.c | 8 +++-- > net/ipv4/ipmr_base.c | 33 ++++++++++++++++- > net/ipv6/ip6_fib.c | 17 +++++++-- > net/ipv6/ip6mr.c | 7 ++-- > net/ipv6/route.c | 40 ++++++++++++++++----- > net/mpls/af_mpls.c | 86 > +++++++++++++++++++++++++++++++++++++++------ > 11 files changed, 262 insertions(+), 50 deletions(-) > You can do the something like this already with BPF socket filters. But writing BPF for multi-part messages is hard. Maybe a generic eBPF filter mechanism would be more flexible?