On Fri, 14 Jun 2019 20:54:49 -0600 David Ahern <dsah...@gmail.com> wrote:
> On 6/14/19 7:32 PM, Stefano Brivio wrote: > > ip_valid_fib_dump_req() does two things: performs strict checking on > > netlink attributes for dump requests, and sets a dump filter if netlink > > attributes require it. > > > > We might want to just set a filter, without performing strict validation. > > > > Rename it to ip_filter_fib_dump_req(), and add a 'strict' boolean > > argument that must be set if strict validation is requested. > > > > This patch doesn't introduce any functional changes. > > > > Signed-off-by: Stefano Brivio <sbri...@redhat.com> > > --- > > v4: New patch > > > > Can you explain why this patch is needed? The existing function requires > strict mode and is needed to enable any of the kernel side filtering > beyond the RTM_F_CLONED setting in rtm_flags. It's mostly to have proper NLM_F_MATCH support. Let's pick an iproute2 version without strict checking support (< 5.0), that sets NLM_F_MATCH though. Then we need this check: if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*rtm))) and to set filter parameters not just based on flags (i.e. RTM_F_CLONED), but also on table, protocol, etc. For example one might want to: 'ip route list cache table main', and this is then taken into account in fn_trie_dump_leaf() and rt6_dump_route(). Reusing this function avoids a nice amount of duplicated code and allows to have an almost common path with strict checking. -- Stefano