我正在尝试从 struct ifaddrs获取网络接口信息
如何确定我正在查看的接口是 inet (ipv4) 还是 inet6 (ipv6)?
我正在尝试从 struct ifaddrs获取网络接口信息
如何确定我正在查看的接口是 inet (ipv4) 还是 inet6 (ipv6)?
您测试ifa_addr->sa_family
- 它将AF_INET
用于 IPv4 地址和AF_INET6
IPv6 地址。
然后,您可以将ifa_addr
成员投射到其中一个struct sockaddr_in *
或struct sockaddr_in6 *
视情况而定。
在 FreeBSD 中,假设您对两者都有内核支持,那么 IPv4 与 IPv6 的问题只是配置问题。
FreeBSD 中的“GENERIC”内核包含“INET6”选项,它为您提供 IPV6。如果您尚未重建内核并排除该选项,那么您只需配置 IPv6 地址即可在任何接口上使用 IPv6。
您可以尝试在接口上打开一个 IPV6 套接字,看看它是否支持 IPV6。