summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoen Aerts2019-08-13 13:02:19 +0000
committerHans Dedecker2019-08-14 21:06:40 +0000
commit13928b3b651faa9ecd330bce42500986b38b49e3 (patch)
tree603c2599a609d85ce5f74c53640e2d8324f77727
parente9e824046f4df9f97f50d154f034e10cb8f13f96 (diff)
downloadodhcpd-13928b3b651faa9ecd330bce42500986b38b49e3.tar.gz
router: close socket upon NETEV_IFINDEX_CHANGE
Make sure the socket is closed in a case where the bridge goes down as a result of NO-CARRIER on the bridge. If not present Router Discovery and Router Advertisement will break permanently after the bridge went down. Related to https://github.com/openwrt/odhcpd/issues/135 Signed-off-by: Koen Aerts <aertskoen5@gmail.com>
-rw-r--r--src/router.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/router.c b/src/router.c
index 13c9117..5d09a3a 100644
--- a/src/router.c
+++ b/src/router.c
@@ -229,6 +229,11 @@ static void router_netevent_cb(unsigned long event, struct netevent_handler_info
struct interface *iface;
switch (event) {
+ case NETEV_IFINDEX_CHANGE:
+ iface = info->iface;
+ if (iface && iface->router_event.uloop.fd >= 0)
+ close(iface->router_event.uloop.fd);
+ break;
case NETEV_ROUTE6_ADD:
case NETEV_ROUTE6_DEL:
if (info->rt.dst_len)