-
Notifications
You must be signed in to change notification settings - Fork 8k
Description
Describe the bug
The current IGMP
implementation does not correctly calculate the length of the IGMP
payload. Since the length of the payload is used to detect the IGMP
version. The version is also not correctly determined.
The length of the IGMP
payload is calculated by subtracting the IP packet header length from to total IP packet length. Since the actual length of the header is the combination of the header length and the option length, the IGMP
length is always 4 bytes too long. This results in IGMPv2
messages being parsed as IGMPv3
, causing a drop of the packet.
Line 427 in 1ec5ce0
int igmp_buf_len = pkt->buffer->len - net_pkt_ip_hdr_len(pkt); |
To Reproduce
Enable CONFIG_NET_IPV4_IGMPV3
and add the device to an IGMPv2
network.
Expected behavior
The device should respond to IGMPv2
queries.
Impact
All IGMPv2
messages are ignored. This results in the multicast only working for the IGMP
querier-timeout. After that, the querier does forget the membership of the device.
Environment (please complete the following information):
- OS: on all OS
- All branches containing 1d0f47b