diff options
author | sam <sam@FreeBSD.org> | 2007-02-24 23:55:46 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2007-02-24 23:55:46 +0000 |
commit | cd822ec72803ef63ba2d56e1fcdc837cd656a1b5 (patch) | |
tree | c3dc617e94bd4dffc5a8ead0c6679f2de41ca65d /sbin/ifconfig/af_inet6.c | |
parent | a95c51b9e7cc53e67b4c98f5bbf806aa8df2e32c (diff) | |
download | FreeBSD-src-cd822ec72803ef63ba2d56e1fcdc837cd656a1b5.zip FreeBSD-src-cd822ec72803ef63ba2d56e1fcdc837cd656a1b5.tar.gz |
use getifaddrs from libc instead of private code
Reviewed by: bms
MFC after: 1 month
Diffstat (limited to 'sbin/ifconfig/af_inet6.c')
-rw-r--r-- | sbin/ifconfig/af_inet6.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/sbin/ifconfig/af_inet6.c b/sbin/ifconfig/af_inet6.c index 2aae382..f1871fb 100644 --- a/sbin/ifconfig/af_inet6.c +++ b/sbin/ifconfig/af_inet6.c @@ -36,7 +36,6 @@ static const char rcsid[] = #include <sys/ioctl.h> #include <sys/socket.h> #include <net/if.h> -#include <net/route.h> /* for RTX_IFA */ #include <err.h> #include <stdio.h> @@ -179,7 +178,7 @@ in6_fillscopeid(struct sockaddr_in6 *sin6) } static void -in6_status(int s __unused, const struct rt_addrinfo * info) +in6_status(int s __unused, const struct ifaddrs *ifa) { struct sockaddr_in6 *sin, null_sin; struct in6_ifreq ifr6; @@ -192,7 +191,7 @@ in6_status(int s __unused, const struct rt_addrinfo * info) memset(&null_sin, 0, sizeof(null_sin)); - sin = (struct sockaddr_in6 *)info->rti_info[RTAX_IFA]; + sin = (struct sockaddr_in6 *)ifa->ifa_addr; if (sin == NULL) return; @@ -237,14 +236,13 @@ in6_status(int s __unused, const struct rt_addrinfo * info) sizeof(addr_buf)); printf("\tinet6 %s ", addr_buf); - if (flags & IFF_POINTOPOINT) { - /* note RTAX_BRD overlap with IFF_BROADCAST */ - sin = (struct sockaddr_in6 *)info->rti_info[RTAX_BRD]; + if (ifa->ifa_flags & IFF_POINTOPOINT) { + sin = (struct sockaddr_in6 *)ifa->ifa_dstaddr; /* * some of the interfaces do not have valid destination * address. */ - if (sin && sin->sin6_family == AF_INET6) { + if (sin != NULL && sin->sin6_family == AF_INET6) { int error; /* XXX: embedded link local addr check */ @@ -269,8 +267,8 @@ in6_status(int s __unused, const struct rt_addrinfo * info) } } - sin = (struct sockaddr_in6 *)info->rti_info[RTAX_NETMASK]; - if (!sin) + sin = (struct sockaddr_in6 *)ifa->ifa_netmask; + if (sin == NULL) sin = &null_sin; printf("prefixlen %d ", prefix(&sin->sin6_addr, sizeof(struct in6_addr))); |