Есть ли способ перечислить все IP-адреса многоадресной передачи, привязанные к определенному устройству, из сетевого драйвера?Список IP-адресов многоадресной передачи, привязанных к определенному устройству от сетевого драйвера
Я понимаю, как перебирать список MAC-адресов многоадресной передачи через структуру net_device
, используя netdev_for_each_mc_addr()
. Я также понимаю, что существует сопоставление MAC-адресов с многоадресной рассылкой, но это не сопоставление от 1 до 1, поэтому я заинтересован в получении групп многоадресной передачи IP.
Я бегу Centos 7 с 3.10.0 ядром
Цель состоит в том, чтобы этот список в set_rx_mode()
при многоадресной группы соединяются и отброшен.
Я вижу, что содержание, содержащееся в структуре net_device
, является struct in_device
и далее вложенным в него является struct ip_mc_list
. Имея это в виду, я попробовал повторить итерацию через ip_mc_list
.
static void set_rx_mode(struct net_device *netdev)
{
struct ip_mc_list *ip_list = netdev->ip_ptr->mc_list;
while(ip_list) {
printk(KERN_DEBUG " IP MC Address: 0x%x\n", ip_list->multiaddr);
ip_list = ip_list->next;
}
}
К сожалению, ip_list остается NULL
когда Multicast IP-адрес, связанный с устройством. Если это не то же самое struct in_device
, используемое в реализации IGMP ядра, есть ли способ получить доступ к правильному?