From 46b2cafb25e5241e0bbe0a802ae6b98ea9e6ab14 Mon Sep 17 00:00:00 2001 From: Stefan Berger Date: Thu, 30 Aug 2012 14:29:49 -0400 Subject: [PATCH] Implement virMacAddrIsBroadcastRaw Add function for testing for Ethernet broadcast address --- src/libvirt_private.syms | 1 + src/util/virmacaddr.c | 9 +++++++++ src/util/virmacaddr.h | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 27eb43e74b..6f14763e70 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1326,6 +1326,7 @@ virMacAddrCompare; virMacAddrFormat; virMacAddrGenerate; virMacAddrGetRaw; +virMacAddrIsBroadcastRaw; virMacAddrIsMulticast; virMacAddrIsUnicast; virMacAddrParse; diff --git a/src/util/virmacaddr.c b/src/util/virmacaddr.c index e207927112..671ba98d52 100644 --- a/src/util/virmacaddr.c +++ b/src/util/virmacaddr.c @@ -30,6 +30,9 @@ #include "virmacaddr.h" #include "virrandom.h" +static const unsigned char virMacAddrBroadcastAddrRaw[VIR_MAC_BUFLEN] = + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + /* Compare two MAC addresses, ignoring differences in case, * as well as leading zeros. */ @@ -218,3 +221,9 @@ virMacAddrIsUnicast(const virMacAddrPtr mac) { return !(mac->addr[0] & 1); } + +bool +virMacAddrIsBroadcastRaw(const unsigned char s[VIR_MAC_BUFLEN]) +{ + return memcmp(virMacAddrBroadcastAddrRaw, s, sizeof(*s)) == 0; +} diff --git a/src/util/virmacaddr.h b/src/util/virmacaddr.h index 4c5074ce3c..1a2ff74da0 100644 --- a/src/util/virmacaddr.h +++ b/src/util/virmacaddr.h @@ -52,4 +52,6 @@ int virMacAddrParse(const char* str, virMacAddrPtr addr) ATTRIBUTE_RETURN_CHECK; bool virMacAddrIsUnicast(const virMacAddrPtr addr); bool virMacAddrIsMulticast(const virMacAddrPtr addr); +bool virMacAddrIsBroadcastRaw(const unsigned char s[VIR_MAC_BUFLEN]); + #endif /* __VIR_MACADDR_H__ */