присоединиться к igmp_group не работает в легком IP (lwip)

Я новичок в lwip и хочу создать многоадресный приемник с помощью lwip. Мои шаги следующие: 1. Включить LWIP_IGMP; 2. Установите NETIF_FLAG_IGMP в low_level_init(); 3. Присоединиться к многоадресной группе, создать и привязать плату; 4. udp_connect к remote_ip (или многоадресный IP-адрес? Обе попытки, но безуспешно)

Присоединение к группе возвращает успех, и все выглядит нормально, когда программа выполняет это. Однако мультикаст-приемник не работает, мультикаст-данные не приходят в сетевой интерфейс. Кажется, я на самом деле не присоединяю свой приемник к группе igmp, хотя процесс присоединения выглядит нормально. Кто-нибудь знает, что мне не хватает?

Я нашел «netif->igmp_mac_filter != NULL» в igmp_joingroup(), но этот обратный вызов установлен как NULL и не реализован. Нужно ли мне реализовать это самостоятельно, чтобы установить фильтр MAC, или все в порядке, просто оставьте его равным NULL?

Спасибо большое за вашу помощь!

Райан


person user3567175    schedule 24.04.2014    source источник


Ответы (3)


Когда вы присоединяетесь к группе многоадресной рассылки, обратный вызов netif->igmp_mac_filter обычно вызывается для настройки фильтра MAC в вашем контроллере Ethernet для приема пакетов с MAC-адресом многоадресной рассылки, соответствующим группе. Таким образом, в зависимости от используемого аппаратного обеспечения Ethernet вам может потребоваться реализовать обратный вызов.

person stathisv    schedule 24.04.2014

Аппаратное обеспечение должно быть настроено на получение многоадресных MAC-кадров, иначе оно просто отбросит все кадры с многоадресным адресом назначения. Вероятно, есть возможность принимать все входящие многоадресные кадры. Включите это в low_level_init(), и вы сможете видеть входящие многоадресные кадры. Вам не нужно реализовывать какой-либо фильтр.

person Fredrik Möller    schedule 11.05.2014

У меня такая же проблема. Я решил это, удалив фильтр ETH Multicast Frame в инициализации интерфейса MAC. Для проверки вы также можете установить интерфейс в неразборчивый режим, проверить, получены ли многоадресные пакеты, а затем удалить неразборчивый режим и установить соответствующий режим фильтрации многоадресных кадров в соответствии с вашими потребностями.

person peregrinus    schedule 15.12.2017