}
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;
return 0;
}
- buf = new0(char, buflen);
+ _cleanup_free_ char *buf = new0(char, buflen);
if (!buf)
return -ENOMEM;
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:
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));
}
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;
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,
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) {
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 {
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)
/* 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;
}
}
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,
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) {