]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/libsystemd-network/sd-radv.c
tree-wide: use ASSERT_PTR more
[thirdparty/systemd.git] / src / libsystemd-network / sd-radv.c
index 7b5c12e4893925eeba905b15429f1e79b94e65c0..6611746a589546db97eee8910afd03a7002f0c2d 100644 (file)
@@ -243,19 +243,15 @@ static int radv_send(sd_radv *ra, const struct in6_addr *dst, usec_t lifetime_us
 }
 
 static int radv_recv(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-        sd_radv *ra = userdata;
-        _cleanup_free_ char *addr = NULL;
+        sd_radv *ra = ASSERT_PTR(userdata);
         struct in6_addr src;
         triple_timestamp timestamp;
         int r;
-        ssize_t buflen;
-        _cleanup_free_ char *buf = NULL;
 
         assert(s);
-        assert(ra);
         assert(ra->event);
 
-        buflen = next_datagram_size_fd(fd);
+        ssize_t buflen = next_datagram_size_fd(fd);
         if (buflen < 0) {
                 if (ERRNO_IS_TRANSIENT(buflen) || ERRNO_IS_DISCONNECT(buflen))
                         return 0;
@@ -264,7 +260,7 @@ static int radv_recv(sd_event_source *s, int fd, uint32_t revents, void *userdat
                 return 0;
         }
 
-        buf = new0(char, buflen);
+        _cleanup_free_ char *buf = new0(char, buflen);
         if (!buf)
                 return -ENOMEM;
 
@@ -275,8 +271,8 @@ static int radv_recv(sd_event_source *s, int fd, uint32_t revents, void *userdat
 
                 switch (r) {
                 case -EADDRNOTAVAIL:
-                        (void) in_addr_to_string(AF_INET6, (const union in_addr_union*) &src, &addr);
-                        log_radv(ra, "Received RS from non-link-local address %s. Ignoring", addr);
+                        log_radv(ra, "Received RS from non-link-local address %s. Ignoring",
+                                 IN6_ADDR_TO_STRING(&src));
                         break;
 
                 case -EMULTIHOP:
@@ -300,24 +296,23 @@ static int radv_recv(sd_event_source *s, int fd, uint32_t revents, void *userdat
                 return 0;
         }
 
-        (void) in_addr_to_string(AF_INET6, (const union in_addr_union*) &src, &addr);
+        const char *addr = IN6_ADDR_TO_STRING(&src);
 
         r = radv_send(ra, &src, ra->lifetime_usec);
         if (r < 0)
-                log_radv_errno(ra, r, "Unable to send solicited Router Advertisement to %s, ignoring: %m", strnull(addr));
+                log_radv_errno(ra, r, "Unable to send solicited Router Advertisement to %s, ignoring: %m", addr);
         else
-                log_radv(ra, "Sent solicited Router Advertisement to %s", strnull(addr));
+                log_radv(ra, "Sent solicited Router Advertisement to %s", addr);
 
         return 0;
 }
 
 static int radv_timeout(sd_event_source *s, uint64_t usec, void *userdata) {
         usec_t min_timeout, max_timeout, time_now, timeout;
-        sd_radv *ra = userdata;
+        sd_radv *ra = ASSERT_PTR(userdata);
         int r;
 
         assert(s);
-        assert(ra);
         assert(ra->event);
         assert(router_lifetime_is_valid(ra->lifetime_usec));
 
@@ -575,7 +570,6 @@ int sd_radv_set_preference(sd_radv *ra, unsigned preference) {
 }
 
 int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
-        _cleanup_free_ char *addr_p = NULL;
         sd_radv_prefix *found = NULL;
         int r;
 
@@ -586,10 +580,9 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
         if (in6_addr_is_null(&p->opt.in6_addr))
                 return -ENOEXEC;
 
-        (void) in6_addr_prefix_to_string(&p->opt.in6_addr, p->opt.prefixlen, &addr_p);
+        const char *addr_p = IN6_ADDR_PREFIX_TO_STRING(&p->opt.in6_addr, p->opt.prefixlen);
 
         LIST_FOREACH(prefix, cur, ra->prefixes) {
-
                 r = in_addr_prefix_intersect(AF_INET6,
                                              (const union in_addr_union*) &cur->opt.in6_addr,
                                              cur->opt.prefixlen,
@@ -605,11 +598,10 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
                         break;
                 }
 
-                _cleanup_free_ char *addr_cur = NULL;
-                (void) in6_addr_prefix_to_string(&cur->opt.in6_addr, cur->opt.prefixlen, &addr_cur);
                 return log_radv_errno(ra, SYNTHETIC_ERRNO(EEXIST),
                                       "IPv6 prefix %s conflicts with %s, ignoring.",
-                                      strna(addr_p), strna(addr_cur));
+                                      addr_p,
+                                      IN6_ADDR_PREFIX_TO_STRING(&cur->opt.in6_addr, cur->opt.prefixlen));
         }
 
         if (found) {
@@ -624,7 +616,7 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
                 LIST_APPEND(prefix, ra->prefixes, p);
 
                 log_radv(ra, "Updated/replaced IPv6 prefix %s (preferred: %s, valid: %s)",
-                         strna(addr_p),
+                         addr_p,
                          FORMAT_TIMESPAN(p->lifetime_preferred_usec, USEC_PER_SEC),
                          FORMAT_TIMESPAN(p->lifetime_valid_usec, USEC_PER_SEC));
         } else {
@@ -634,7 +626,7 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
                 LIST_APPEND(prefix, ra->prefixes, p);
                 ra->n_prefixes++;
 
-                log_radv(ra, "Added prefix %s", strna(addr_p));
+                log_radv(ra, "Added prefix %s", addr_p);
         }
 
         if (ra->state == RADV_STATE_IDLE)
@@ -646,10 +638,9 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
         /* If RAs have already been sent, send an RA immediately to announce the newly-added prefix */
         r = radv_send(ra, NULL, ra->lifetime_usec);
         if (r < 0)
-                log_radv_errno(ra, r, "Unable to send Router Advertisement for added prefix %s: %m",
-                               strna(addr_p));
+                log_radv_errno(ra, r, "Unable to send Router Advertisement for added prefix %s: %m", addr_p);
         else
-                log_radv(ra, "Sent Router Advertisement for added/updated prefix %s.", strna(addr_p));
+                log_radv(ra, "Sent Router Advertisement for added/updated prefix %s.", addr_p);
 
         return 0;
 }
@@ -680,17 +671,15 @@ void sd_radv_remove_prefix(
 }
 
 int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p) {
-        _cleanup_free_ char *addr_p = NULL;
         sd_radv_route_prefix *found = NULL;
         int r;
 
         assert_return(ra, -EINVAL);
         assert_return(p, -EINVAL);
 
-        (void) in6_addr_prefix_to_string(&p->opt.in6_addr, p->opt.prefixlen, &addr_p);
+        const char *addr_p = IN6_ADDR_PREFIX_TO_STRING(&p->opt.in6_addr, p->opt.prefixlen);
 
         LIST_FOREACH(prefix, cur, ra->route_prefixes) {
-
                 r = in_addr_prefix_intersect(AF_INET6,
                                              (const union in_addr_union*) &cur->opt.in6_addr,
                                              cur->opt.prefixlen,
@@ -706,11 +695,10 @@ int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p) {
                         break;
                 }
 
-                _cleanup_free_ char *addr_cur = NULL;
-                (void) in6_addr_prefix_to_string(&cur->opt.in6_addr, cur->opt.prefixlen, &addr_cur);
                 return log_radv_errno(ra, SYNTHETIC_ERRNO(EEXIST),
                                       "IPv6 route prefix %s conflicts with %s, ignoring.",
-                                      strna(addr_p), strna(addr_cur));
+                                      addr_p,
+                                      IN6_ADDR_PREFIX_TO_STRING(&cur->opt.in6_addr, cur->opt.prefixlen));
         }
 
         if (found) {