Как прочитать TENTATIVE флаг IPv6-адреса? - PullRequest
10 голосов
/ 08 июля 2010

Я назначаю адрес ipv6 с помощью системного вызова ioctl () программно.Я хочу знать, если есть способ, я могу найти назначенный ip является предварительным / дубликатом?

Спасибо.

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Вы можете прочитать флаг TENTATIVE IPv6-адреса, как показано ниже:

Указывает флаги, которые установлены на многоадресном адресе. Начиная с RFC 2373, единственным определенным флагом является флаг Transient (T). Флаг T использует младший бит поля Flags.

* If 0, the multicast address is a permanently assigned, well-known multicast address allocated by the Internet Assigned Numbers Authority (IANA).
* If 1, the multicast address is a not permanently assigned, or transient.
1 голос
/ 09 июля 2010

Host: перечислите интерфейсы с getifaddrs().

( edit ) Похоже, вам нужно позвонить sysctl(NET_IPV6_OPT_DAD_ENABLE) до getifaddrs()?

http://lwn.net/Articles/218597/

Сеть: отправка ICMP-запроса - это типичный, но не надежный метод, используемый DHCP-серверами.

Предполагается, что если вы устанавливаете IP-адрес, вы реализуете форму DHCP и управляете всеми адресами для этого сегмента. В противном случае просто используйте локальную область ссылок, уже уникальные адреса.

0 голосов
/ 04 октября 2017

Одним из способов получения состояния адреса является использование библиотеки rtnetlink через сообщение RTM_GETADDR, которое извлекает структуру ifaddrmsg, которая содержит ifa_flags. Обратитесь к странице справочника за информацией:

http://man7.org/linux/man-pages/man7/rtnetlink.7.html

Флаги и структура ifaddrmsg показаны в if_addr.h:

https://github.com/torvalds/linux/blob/master/include/uapi/linux/if_addr.h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...