Using IPv6 multicast it is impossible to receive packets on the same host. Problem is that the packet checksums are not calculated yet when the packet is handed over to if_simloop() and get dropped later in udp6_input(). The fix handles the problem with IPv6, but it wasn't verified if IPv4 code has a similar bug. How-To-Repeat: send packet via mcastsend from mcast-tools port and try to receive the packet with mcread on the same host. Another host can receive the packet, but no process on the same host.
Responsible Changed From-To: freebsd-bugs->freebsd-net Over to maintainer(s).
ae, glebius -- you seem to be active in IPv6 / multicast somewhat recently I was alerted via Twitter that a user has been applying this patch for a few years. Is it still relevant? If so, can you help get this into the tree? It doesn't seem to apply cleanly to head a the moment -- perhaps due to your recent multicast work Thanks!!
I'll take a look.
A commit references this bug: Author: ae Date: Thu May 7 14:17:44 UTC 2015 New revision: 282578 URL: https://svnweb.freebsd.org/changeset/base/282578 Log: Mark data checksum as valid for multicast packets, that we send back to myself via simloop. Also remove duplicate check under #ifdef DIAGNOSTIC. PR: 180065 MFC after: 1 week Changes: head/sys/netinet6/ip6_output.c
A commit references this bug: Author: ae Date: Thu May 14 11:47:18 UTC 2015 New revision: 282894 URL: https://svnweb.freebsd.org/changeset/base/282894 Log: MFC r282578: Mark data checksum as valid for multicast packets, that we send back to myself via simloop. Also remove duplicate check under #ifdef DIAGNOSTIC. PR: 180065 Changes: _U stable/10/ stable/10/sys/netinet6/ip6_output.c
A commit references this bug: Author: ae Date: Thu May 14 11:52:27 UTC 2015 New revision: 282895 URL: https://svnweb.freebsd.org/changeset/base/282895 Log: MFC r282578: Mark data checksum as valid for multicast packets, that we send back to myself via simloop. Also remove duplicate check under #ifdef DIAGNOSTIC. PR: 180065 Changes: _U stable/9/sys/ stable/9/sys/netinet6/ip6_output.c
Fixed in head/, stable/10 and stable/9. Thanks!