[PATCH 14/15] netconfig: Set a limit on number of routes from ICMPv6

Andrew Zaborowski <andrew.zaborowski at intel.com>
Newsgroups dev.linux.lists.ell
Message-ID <[email protected]>
While some networks can be configured in a way that prevents rogue
Router Advertisements from reaching clients, add a very basic mechanism
to avoid a denial-of-service in such a case by limiting the number of
routes we track from RAs.  This won't prevent the loss of routing but
might prevent OOM crashes or slowdowns.
---
 ell/netconfig.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/ell/netconfig.c b/ell/netconfig.c
index af85f71..f86fcfb 100644
--- a/ell/netconfig.c
+++ b/ell/netconfig.c
@@ -134,6 +134,8 @@ union netconfig_addr {
 static struct l_queue *addr_wait_list;
 static unsigned int rtnl_id;
 
+static const unsigned int max_icmp6_routes = 100;
+
 static void netconfig_update_cleanup(struct l_netconfig *nc)
 {
 	l_queue_clear(nc->addresses.added, NULL);
@@ -734,6 +736,9 @@ static struct netconfig_route_data *netconfig_add_icmp6_route(
 	struct netconfig_route_data *rd;
 	struct l_rtnl_route *rt;
 
+	if (l_queue_length(nc->icmp_route_data) >= max_icmp6_routes)
+		return NULL;	/* TODO: log a warning the first time */
+
 	rt = netconfig_route_new(nc, AF_INET6, dst ? dst->address : NULL,
 					dst ? dst->prefix_len : 0, gateway,
 					RTPROT_RA);
-- 
2.32.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.