chiark / gitweb /
sd-icmp6-nd: Add function to stop ongoing ICMPv6 discovery
[elogind.git] / src / libsystemd-network / sd-icmp6-nd.c
index f820a9c8f04540be3e913d5edc7a81887b9cf9bf..80915c34d6bcb66c3915b25fe41bea70ed98f4af 100644 (file)
@@ -171,6 +171,7 @@ int sd_icmp6_nd_new(sd_icmp6_nd **ret) {
         nd->n_ref = REFCNT_INIT;
 
         nd->index = -1;
         nd->n_ref = REFCNT_INIT;
 
         nd->index = -1;
+        nd->fd = -1;
 
         *ret = nd;
         nd = NULL;
 
         *ret = nd;
         nd = NULL;
@@ -281,6 +282,19 @@ static int icmp6_router_solicitation_timeout(sd_event_source *s, uint64_t usec,
         return 0;
 }
 
         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;
 
 int sd_icmp6_router_solicitation_start(sd_icmp6_nd *nd) {
         int r;