Skip to content

Commit

Permalink
basic: show interface scope in sockaddr_pretty()
Browse files Browse the repository at this point in the history
If the interface scope is specified, this changes the meaning of the address
quite significantly. Let's show the IPv6 scope_id if present.

Sadly we don't even have a test for sockaddr_pretty() output :(
This will be implicitly tested through socket_address_parse() later on.
  • Loading branch information
keszybz committed Sep 9, 2020
1 parent 2313524 commit b16d17a
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/basic/socket-util.c
Expand Up @@ -399,19 +399,23 @@ int sockaddr_pretty(
if (r < 0)
return -ENOMEM;
} else {
char a[INET6_ADDRSTRLEN];
char a[INET6_ADDRSTRLEN], ifname[IF_NAMESIZE + 1];

inet_ntop(AF_INET6, &sa->in6.sin6_addr, a, sizeof(a));
if (sa->in6.sin6_scope_id != 0)
format_ifname_full(sa->in6.sin6_scope_id, ifname, FORMAT_IFNAME_IFINDEX);

if (include_port) {
r = asprintf(&p,
"[%s]:%u",
"[%s]:%u%s%s",
a,
be16toh(sa->in6.sin6_port));
be16toh(sa->in6.sin6_port),
sa->in6.sin6_scope_id != 0 ? "%" : "",
sa->in6.sin6_scope_id != 0 ? ifname : "");
if (r < 0)
return -ENOMEM;
} else {
p = strdup(a);
p = sa->in6.sin6_scope_id != 0 ? strjoin(a, "%", ifname) : strdup(a);
if (!p)
return -ENOMEM;
}
Expand Down

0 comments on commit b16d17a

Please sign in to comment.