Hi, maybe add a hint about the needed check?
comments? ok? diff --git lib/libc/net/getifaddrs.3 lib/libc/net/getifaddrs.3 index 26eac493202..946c2d9a9b0 100644 --- lib/libc/net/getifaddrs.3 +++ lib/libc/net/getifaddrs.3 @@ -74,13 +74,13 @@ Contains the interface flags, as set by References either the address of the interface or the link level address of the interface, if one exists, otherwise it is .Dv NULL . -(The +After checking for NULL, the .Fa sa_family field of the .Fa ifa_addr -field should be consulted to determine the format of the +struct should be consulted to determine the format of the .Fa ifa_addr -address.) +address. .It Fa ifa_netmask References the netmask associated with .Fa ifa_addr , @@ -119,6 +119,23 @@ is dynamically allocated and should be freed using when no longer needed. .Sh RETURN VALUES .Rv -std +.Sh EXAMPLES +The interface addresses can be accessed through +*ifa_addr +like this: +.Bd -literal -offset indent + struct ifaddrs *ifap, *ifa; + struct sockaddr_in6 *sin6; + + if (getifaddrs(&ifap) == -1) + fatal("getifaddrs"); + + for (ifa = ifap; ifa; ifa = ifa->ifa_next) { + if (ifa->ifa_addr == NULL || + ifa->ifa_addr->sa_family != AF_INET6) + continue; + sin6 = (struct sockaddr_in6 *)ifa->ifa_addr; +.Ed .Sh ERRORS The .Fn getifaddrs