summaryrefslogtreecommitdiffhomepage
path: root/src/ndp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ndp.c')
-rw-r--r--src/ndp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ndp.c b/src/ndp.c
index fd0134e..a3c6916 100644
--- a/src/ndp.c
+++ b/src/ndp.c
@@ -130,7 +130,9 @@ int setup_ndp_interface(struct interface *iface, bool enable)
close(iface->ndp_event.uloop.fd);
iface->ndp_event.uloop.fd = -1;
- write(procfd, "0\n", 2);
+ if (!enable || iface->ndp != RELAYD_RELAY)
+ write(procfd, "0\n", 2);
+
dump_neigh = true;
}
@@ -149,6 +151,7 @@ int setup_ndp_interface(struct interface *iface, bool enable)
if (enable && iface->ndp == RELAYD_RELAY) {
write(procfd, "1\n", 2);
+ close(procfd);
int sock = socket(AF_PACKET, SOCK_DGRAM | SOCK_CLOEXEC, htons(ETH_P_IPV6));
if (sock < 0) {
@@ -191,8 +194,9 @@ int setup_ndp_interface(struct interface *iface, bool enable)
dump_neigh_table(false);
else
dump_neigh = false;
+ } else {
+ close(procfd);
}
- close(procfd);
if (dump_neigh)
dump_neigh_table(true);