[Dnsmasq-discuss] [PATCH] Ignore routes in non-main tables

Simon Kelley simon at thekelleys.org.uk
Mon Mar 2 18:13:53 GMT 2020


Patch applied. That looks like the best available solution. Thanks.


Simon.



On 02/03/2020 16:23, Donald Sharp wrote:
> Route lookup in Linux is bounded by `ip rules` as well
> as the contents of specific routing tables.  With the
> advent of vrf's(l3mdev's) non-default tables are regularly being
> used for routing purposes.
> 
> dnsmasq listens to all route changes on the box and responds
> to each one with an event.  This is *expensive* when a full
> BGP routing table is placed into the linux kernel, moreso
> when dnsmasq is responding to events in tables that it will
> never actually need to respond to, since dnsmasq at this
> point in time has no concept of vrf's and would need
> to be programmed to understand them.  Help alleviate this load
> by reducing the set of data that dnsmasq pays attention to
> when we know there are events that are not useful at this
> point in time.
> 
> Signed-off-by: Donald Sharp <donaldsharp72 at gmail.com>
> ---
>  src/netlink.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/src/netlink.c b/src/netlink.c
> index b63e8b6..d59bf62 100644
> --- a/src/netlink.c
> +++ b/src/netlink.c
> @@ -360,7 +360,9 @@ static void nl_async(struct nlmsghdr *h)
>  	 failing. */ 
>        struct rtmsg *rtm = NLMSG_DATA(h);
>        
> -      if (rtm->rtm_type == RTN_UNICAST && rtm->rtm_scope == RT_SCOPE_LINK)
> +      if (rtm->rtm_type == RTN_UNICAST && rtm->rtm_scope == RT_SCOPE_LINK &&
> +	  (rtm->rtm_table == RT_TABLE_MAIN ||
> +	   rtm->rtm_table == RT_TABLE_LOCAL))
>  	queue_event(EVENT_NEWROUTE);
>      }
>    else if (h->nlmsg_type == RTM_NEWADDR || h->nlmsg_type == RTM_DELADDR) 
> 




More information about the Dnsmasq-discuss mailing list