Blame SOURCES/dnsmasq-2.81-netlink-table.patch

0e847a
From 595b2e2e87f152c4ade7e2d66cb78915096f60c2 Mon Sep 17 00:00:00 2001
0e847a
From: Donald Sharp <donaldsharp72@gmail.com>
0e847a
Date: Mon, 2 Mar 2020 11:23:36 -0500
0e847a
Subject: [PATCH] Ignore routes in non-main tables
0e847a
0e847a
Route lookup in Linux is bounded by `ip rules` as well
0e847a
as the contents of specific routing tables.  With the
0e847a
advent of vrf's(l3mdev's) non-default tables are regularly being
0e847a
used for routing purposes.
0e847a
0e847a
dnsmasq listens to all route changes on the box and responds
0e847a
to each one with an event.  This is *expensive* when a full
0e847a
BGP routing table is placed into the linux kernel, moreso
0e847a
when dnsmasq is responding to events in tables that it will
0e847a
never actually need to respond to, since dnsmasq at this
0e847a
point in time has no concept of vrf's and would need
0e847a
to be programmed to understand them.  Help alleviate this load
0e847a
by reducing the set of data that dnsmasq pays attention to
0e847a
when we know there are events that are not useful at this
0e847a
point in time.
0e847a
0e847a
Signed-off-by: Donald Sharp <donaldsharp72@gmail.com>
0e847a
(cherry picked from commit b2ed691eb3ca6488a8878f5f3dd950a07b14a9db)
0e847a
---
0e847a
 src/netlink.c | 4 +++-
0e847a
 1 file changed, 3 insertions(+), 1 deletion(-)
0e847a
0e847a
diff --git a/src/netlink.c b/src/netlink.c
0e847a
index 8cd51af..0a3da3e 100644
0e847a
--- a/src/netlink.c
0e847a
+++ b/src/netlink.c
0e847a
@@ -363,7 +363,9 @@ static void nl_async(struct nlmsghdr *h)
0e847a
 	 failing. */ 
0e847a
       struct rtmsg *rtm = NLMSG_DATA(h);
0e847a
       
0e847a
-      if (rtm->rtm_type == RTN_UNICAST && rtm->rtm_scope == RT_SCOPE_LINK)
0e847a
+      if (rtm->rtm_type == RTN_UNICAST && rtm->rtm_scope == RT_SCOPE_LINK &&
0e847a
+	  (rtm->rtm_table == RT_TABLE_MAIN ||
0e847a
+	   rtm->rtm_table == RT_TABLE_LOCAL))
0e847a
 	queue_event(EVENT_NEWROUTE);
0e847a
     }
0e847a
   else if (h->nlmsg_type == RTM_NEWADDR || h->nlmsg_type == RTM_DELADDR) 
0e847a
-- 
0e847a
2.26.2
0e847a