[isc-dhcp-relay] Patch to allow DHCP relay to discover interfaces even if they are down (#3852)
Patch isc-dhcp-relay in order to allow the relay agent to discover configured interfaces even if they are down. Without this patch, the relay agent will not discover configured interfaces if they are down when the relay agent starts up. If the interface(s) then get brought up after the relay started, the relay will discard packets received on these interfaces and log the message, Discarding packet received on <iface_name> interface that has no IPv4 address assigned. This led to race conditions when starting SONiC (or loading configuration). To resolve this, the relay agent would need to be restarted with all configured interfaces up. With this patch, the relay agent will discover all configured interfaces, whether or not they are up at the time the relay agent starts. Thus, the state of the configured interfaces can be down when the relay agent starts and brought up during the lifetime of the relay agent process, and the relay agent will relay packets as expected; it will not discard them.
This commit is contained in:
parent
92df547d83
commit
4efaeef31c
@ -0,0 +1,32 @@
|
||||
From 422b08d47dca630396fa38d4239b9c0847dd4fb5 Mon Sep 17 00:00:00 2001
|
||||
From: Joe LeVeque <jolevequ@microsoft.com>
|
||||
Date: Fri, 6 Dec 2019 06:09:17 +0000
|
||||
Subject: [PATCH] Don't skip down interfaces when discovering interfaces in
|
||||
relay mode
|
||||
|
||||
When discovering interfaces in relay mode, don't skip interfaces just
|
||||
because they're down. If we fail to discover the interfaces because they
|
||||
are down when the relay starts, but then are brought up at a later point
|
||||
in time, the relay will discard any packets received on them because it
|
||||
didn't discover the interface(s) when it started up.
|
||||
---
|
||||
common/discover.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/common/discover.c b/common/discover.c
|
||||
index bf82735..f57e3ef 100644
|
||||
--- a/common/discover.c
|
||||
+++ b/common/discover.c
|
||||
@@ -1014,7 +1014,8 @@ discover_interfaces(int state) {
|
||||
info.flags & IFF_LOOPBACK ||
|
||||
info.flags & IFF_POINTOPOINT) && !tmp) ||
|
||||
(!(info.flags & IFF_UP) &&
|
||||
- state != DISCOVER_UNCONFIGURED))
|
||||
+ state != DISCOVER_UNCONFIGURED &&
|
||||
+ state != DISCOVER_RELAY))
|
||||
continue;
|
||||
|
||||
/* If there isn't already an interface by this name,
|
||||
--
|
||||
2.17.1
|
||||
|
@ -11,3 +11,4 @@
|
||||
0010-Add-enable-use-sockets-to-configure-flags-in-debian-.patch
|
||||
0011-Bugfix-Ensure-HAVE_SO_BINDTODEVICE-has-a-chance-to-b.patch
|
||||
0012-If-destination-of-BOOTREQUEST-is-directed-broadcast-.patch
|
||||
0013-Don-t-skip-down-interfaces-when-discovering-interfac.patch
|
||||
|
Loading…
Reference in New Issue
Block a user