summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormhorne <mhorne@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>2020-10-30 13:32:58 +0000
committermhorne <mhorne@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>2020-10-30 13:32:58 +0000
commitf732276de5f1ab4e2190957e7ab8f86c2e8303a3 (patch)
treeef7f037b6303e4e3e53bef2071584f6b748fad0e
parentd2eb37e118ed4e2e6305c82f2bf72cf3d9ece353 (diff)
downloadfreebsd-f732276de5f1ab4e2190957e7ab8f86c2e8303a3.tar.gz
freebsd-f732276de5f1ab4e2190957e7ab8f86c2e8303a3.tar.bz2
net: add ETHER_IS_IPV6_MULTICAST
This can be used to detect if an ethernet address is specifically an IPv6 multicast address, defined in accordance to RFC 2464. ETHER_IS_MULTICAST is still preferred in the general case. Reviewed by: ae Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D26611 git-svn-id: http://svn.freebsd.org/base/head@367163 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
-rw-r--r--sys/net/ethernet.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net/ethernet.h b/sys/net/ethernet.h
index f9217f7cf21..38c0aa24927 100644
--- a/sys/net/ethernet.h
+++ b/sys/net/ethernet.h
@@ -71,6 +71,8 @@ struct ether_addr {
} __packed;
#define ETHER_IS_MULTICAST(addr) (*(addr) & 0x01) /* is address mcast/bcast? */
+#define ETHER_IS_IPV6_MULTICAST(addr) \
+ (((addr)[0] == 0x33) && ((addr)[1] == 0x33))
#define ETHER_IS_BROADCAST(addr) \
(((addr)[0] & (addr)[1] & (addr)[2] & \
(addr)[3] & (addr)[4] & (addr)[5]) == 0xff)