inet или inet6 в freebsd - PullRequest
       73

inet или inet6 в freebsd

0 голосов
/ 27 февраля 2012

Я пытаюсь получить информацию о сетевом интерфейсе от struct ifaddrs

Как я могу определить, имеет ли интерфейс, который я смотрю, inet (ipv4) или inet6 (ipv6)?

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Вы проверяете ifa_addr->sa_family - это будет AF_INET для адресов IPv4 и AF_INET6 для адресов IPv6.

Затем вы можете привести члена ifa_addr к struct sockaddr_in * или struct sockaddr_in6 *, в зависимости от ситуации.

0 голосов
/ 27 февраля 2012

Вы можете попытаться открыть сокет IPV6 на интерфейсе, чтобы проверить, поддерживает ли он IPV6.

0 голосов
/ 27 февраля 2012

В FreeBSD, если у вас есть поддержка ядра для обоих, вопрос IPv4 против IPv6 - это просто вопрос конфигурации.

Ядро "GENERIC" во FreeBSD включает опцию "INET6", котораядает вам IPV6.Если вы не перестроили свое ядро ​​и исключили эту опцию, то у вас есть IPv6 на любом интерфейсе, просто настроив адрес IPv6.

...