Я написал простой код, который использует ioctl SIOCGIFCONF для запроса всех сетевых интерфейсов в системе и, используя inet_ntop, возвращает текстовое представление найденного адреса. Странно то, что при обнаружении локального IPv6-адреса ссылки, версия OSX кода, похоже, встраивает область действия в адрес.Адрес локальной сети IPv6 с областью «встроенный» в OSX
Вот строки из/SBIN/Ifconfig на OSX после autoconfiguring интерфейсов (:
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 00:17:f2:0b:52:73
inet6 fe80::217:f2ff:fe0b:5273%en1 prefixlen 64 scopeid 0x5
и IP-адрес, возвращаемый IOCTL SIOCGIFCONF:
IPv6 адр: fe80: 5 :: 217 : f2ff: fe0b:. 5273
похоже, значение для сферы (5) была вставлена непосредственно после fe80
Тот же самый код на Linux возвращает адрес IPv6 Wi любые дополнительные данные.
У меня есть два вопроса: 1) Можно ли написать адрес ipv6 следующим образом? 2) Является ли поведение OSX документированным где угодно?
Отзывы, пожалуйста!
На большинстве платформ 'inet_ntop' и' inet_pton' не поддерживают зоны IPv6, вы должны использовать только 'getnameinfo' и' getaddrinfo'. –
Спасибо, Стив, этого не знал. Мой вопрос остается: должен ли адрес IPv6 иметь информацию о зоне? Не упоминается в главе 2.2 RFC4291. Текстовое представление адресов – Spaceghost
Только адреса локальных областей связи, то есть fe80 :: префиксы. –