[Bug 284872] [carp] Missing byte order correction causing certain unicast announcements to have invalid destination MAC address

From: <bugzilla-noreply_at_freebsd.org>
Date: Tue, 18 Feb 2025 03:40:43 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=284872

            Bug ID: 284872
           Summary: [carp] Missing byte order correction causing certain
                    unicast announcements to have invalid destination MAC
                    address
           Product: Base System
           Version: 14.2-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: brett.merrick@itcollective.nz

sys/netinet/ip_carp.c - line 1248:

if (IN_MULTICAST(sc->sc_carpaddr.s_addr)) m->m_flags |= M_MCAST; 

Should read:

if (IN_MULTICAST(ntohl(sc->sc_carpaddr.s_addr))) m->m_flags |= M_MCAST; 

At present, any announcement where the peer IP address ends in .244-.239 rather
than begins with 244.-239. get sent to an invalid multicast destination MAC
address.

eg.

Frame 17: 70 bytes on wire (560 bits), 70 bytes captured (560 bits)
Ethernet II, Src: Microsoft_de:ed:00 (00:15:5d:de:ed:00), Dst:
IPv4mcast_28:c9:ef (01:00:5e:28:c9:ef)
Internet Protocol Version 4, Src: 192.168.201.238, Dst: 192.168.201.239
Common Address Redundancy Protocol

-- 
You are receiving this mail because:
You are the assignee for the bug.