chiark / gitweb /
sd-icmp6-nd: Add function to stop ongoing ICMPv6 discovery
[elogind.git] / src / libsystemd-network / sd-icmp6-nd.c
index f820a9c..80915c3 100644 (file)
@@ -171,6 +171,7 @@ int sd_icmp6_nd_new(sd_icmp6_nd **ret) {
         nd->n_ref = REFCNT_INIT;
 
         nd->index = -1;
+        nd->fd = -1;
 
         *ret = nd;
         nd = NULL;
@@ -281,6 +282,19 @@ static int icmp6_router_solicitation_timeout(sd_event_source *s, uint64_t usec,
         return 0;
 }
 
+int sd_icmp6_nd_stop(sd_icmp6_nd *nd) {
+        assert_return(nd, -EINVAL);
+        assert_return(nd->event, -EINVAL);
+
+        log_icmp6_nd(client, "Stop ICMPv6");
+
+        icmp6_nd_init(nd);
+
+        nd->state = ICMP6_NEIGHBOR_DISCOVERY_IDLE;
+
+        return 0;
+}
+
 int sd_icmp6_router_solicitation_start(sd_icmp6_nd *nd) {
         int r;