chiark / gitweb /
Fix a few more typos
[elogind.git] / src / libsystemd-network / sd-icmp6-nd.c
index f820a9c..bbb4531 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;
@@ -211,7 +212,7 @@ static int icmp6_router_advertisment_recv(sd_event_source *s, int fd,
         if (ra.nd_ra_flags_reserved & ND_RA_FLAG_MANAGED)
                 event = ICMP6_EVENT_ROUTER_ADVERTISMENT_MANAGED;
 
-        log_icmp6_nd(nd, "Received Router Advertisment flags %s/%s",
+        log_icmp6_nd(nd, "Received Router Advertisement flags %s/%s",
                      (ra.nd_ra_flags_reserved & ND_RA_FLAG_MANAGED)? "MANAGED":
                      "none",
                      (ra.nd_ra_flags_reserved & ND_RA_FLAG_OTHER)? "OTHER":
@@ -254,7 +255,7 @@ static int icmp6_router_solicitation_timeout(sd_event_source *s, uint64_t usec,
 
                 nd->nd_sent++;
 
-                r = sd_event_now(nd->event, CLOCK_MONOTONIC, &time_now);
+                r = sd_event_now(nd->event, clock_boottime_or_monotonic(), &time_now);
                 if (r < 0) {
                         icmp6_nd_notify(nd, r);
                         return 0;
@@ -262,7 +263,7 @@ static int icmp6_router_solicitation_timeout(sd_event_source *s, uint64_t usec,
 
                 next_timeout = time_now + ICMP6_ROUTER_SOLICITATION_INTERVAL;
 
-                r = sd_event_add_time(nd->event, &nd->timeout, CLOCK_MONOTONIC,
+                r = sd_event_add_time(nd->event, &nd->timeout, clock_boottime_or_monotonic(),
                                       next_timeout, 0,
                                       icmp6_router_solicitation_timeout, nd);
                 if (r < 0) {
@@ -276,11 +277,30 @@ static int icmp6_router_solicitation_timeout(sd_event_source *s, uint64_t usec,
                         icmp6_nd_notify(nd, r);
                         return 0;
                 }
+
+                r = sd_event_source_set_name(nd->timeout, "icmp6-timeout");
+                if (r < 0) {
+                        icmp6_nd_notify(nd, r);
+                        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;
 
@@ -308,13 +328,20 @@ int sd_icmp6_router_solicitation_start(sd_icmp6_nd *nd) {
         if (r < 0)
                 goto error;
 
-        r = sd_event_add_time(nd->event, &nd->timeout, CLOCK_MONOTONIC,
+        r = sd_event_source_set_name(nd->recv, "icmp6-receive-message");
+        if (r < 0)
+                goto error;
+
+        r = sd_event_add_time(nd->event, &nd->timeout, clock_boottime_or_monotonic(),
                               0, 0, icmp6_router_solicitation_timeout, nd);
         if (r < 0)
                 goto error;
 
         r = sd_event_source_set_priority(nd->timeout, nd->event_priority);
+        if (r < 0)
+                goto error;
 
+        r = sd_event_source_set_name(nd->timeout, "icmp6-timeout");
 error:
         if (r < 0)
                 icmp6_nd_init(nd);