git: 1776633438f2 - main - carp: Fix checking IPv4 multicast address
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 22 Feb 2025 19:28:29 UTC
The branch main has been updated by zlei:
URL: https://cgit.FreeBSD.org/src/commit/?id=1776633438f24df09cb9815650891bcef0152874
commit 1776633438f24df09cb9815650891bcef0152874
Author: Zhenlei Huang <zlei@FreeBSD.org>
AuthorDate: 2025-02-22 19:26:33 +0000
Commit: Zhenlei Huang <zlei@FreeBSD.org>
CommitDate: 2025-02-22 19:26:33 +0000
carp: Fix checking IPv4 multicast address
An IPv4 address stored in `struct in_addr` is in network byte order but
`IN_MULTICAST` wants host order.
PR: 284872
Reported by: Steven Perreau
Reported by: Brett Merrick <brett.merrick@itcollective.nz>
Reviewed by: Franco Fichtner <franco@opnsense.org>, ae, kp, glebius
Tested by: Steven Perreau
Fixes: 137818006de5 carp: support unicast
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D49053
---
sys/netinet/ip_carp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c
index 5bec8fce3fcb..6fde7bd70c6b 100644
--- a/sys/netinet/ip_carp.c
+++ b/sys/netinet/ip_carp.c
@@ -855,7 +855,7 @@ carp_input_c(struct mbuf *m, struct carp_header *ch, sa_family_t af, int ttl)
}
if (ifa->ifa_addr->sa_family == AF_INET) {
- multicast = IN_MULTICAST(sc->sc_carpaddr.s_addr);
+ multicast = IN_MULTICAST(ntohl(sc->sc_carpaddr.s_addr));
} else {
multicast = IN6_IS_ADDR_MULTICAST(&sc->sc_carpaddr6);
}
@@ -1245,7 +1245,7 @@ carp_send_ad_locked(struct carp_softc *sc)
m->m_pkthdr.rcvif = NULL;
m->m_len = len;
M_ALIGN(m, m->m_len);
- if (IN_MULTICAST(sc->sc_carpaddr.s_addr))
+ if (IN_MULTICAST(ntohl(sc->sc_carpaddr.s_addr)))
m->m_flags |= M_MCAST;
ip = mtod(m, struct ip *);
ip->ip_v = IPVERSION;