diff options
| author | Koen Aerts | 2019-08-13 13:02:19 +0000 |
|---|---|---|
| committer | Hans Dedecker | 2019-08-14 21:06:40 +0000 |
| commit | 13928b3b651faa9ecd330bce42500986b38b49e3 (patch) | |
| tree | 603c2599a609d85ce5f74c53640e2d8324f77727 | |
| parent | e9e824046f4df9f97f50d154f034e10cb8f13f96 (diff) | |
| download | odhcpd-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.c | 5 |
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) |