Вы можете открыть сокет AF_INET
если в системе доступны только адреса IPv6?
Я пытаюсь получить HWADDR для одной системы, у которой могут быть только активные IPv6-адреса (а не двойной стек).
Смогу ли я открыть сокет, используя AF_INET
? Меня интересует только поиск MAC-адреса
Я не вижу проблемы. Вы можете позвонить SIOCGIFHWADDR
как на IPv4, так и на IPv6.
Независимо от того, использую ли я AF_INET
или AF_INET6
для создания сокета, вызов ioctl()
завершается успешно и дает мне HW addr устройства, которое я прошу.
Вы, конечно же, можете создать сокет IPv4 с помощью системного вызова socket()
. Однако привязка его к интерфейсу IPv6 с помощью bind()
завершится неудачно.
Вы можете создать сокет IPv4. Если бы вы не смогли, система также не смогла бы принять адрес IPv4 при подключении к сети, совместимой с v4, в следующем месяце, см.?
Но я не уверен, что SIOCGIFHWADDR будет работать без маршрутов через интерфейс без обратной циклы. Вы можете попробовать использовать свои целевые системы или просто попробовать AF_INET и AF_INET6, поймать ошибку (-ы) и использовать все, что возвращает результат.
SIOCGIFHWADDR
на сокетеAF_INET6
?