summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip/header/eth.go
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2020-10-09 19:17:35 +0000
committergVisor bot <gvisor-bot@google.com>2020-10-09 19:17:35 +0000
commit578aece760dd47a06a686f82efab5b650807d4c5 (patch)
treee57a1d077e19bf33dd2818e399557f7b359adbc5 /pkg/tcpip/header/eth.go
parent9774e9a0ca4110d88e5c4b4a59c188d5bedc0adc (diff)
parent257703c050e5901aeb3734f200f5a6b41856b4d9 (diff)
Merge release-20200928.0-77-g257703c05 (automated)
Diffstat (limited to 'pkg/tcpip/header/eth.go')
-rw-r--r--pkg/tcpip/header/eth.go16
1 files changed, 11 insertions, 5 deletions
diff --git a/pkg/tcpip/header/eth.go b/pkg/tcpip/header/eth.go
index eaface8cb..95ade0e5c 100644
--- a/pkg/tcpip/header/eth.go
+++ b/pkg/tcpip/header/eth.go
@@ -117,25 +117,31 @@ func (b Ethernet) Encode(e *EthernetFields) {
copy(b[dstMAC:][:EthernetAddressSize], e.DstAddr)
}
-// IsValidUnicastEthernetAddress returns true if addr is a valid unicast
+// IsMulticastEthernetAddress returns true if the address is a multicast
+// ethernet address.
+func IsMulticastEthernetAddress(addr tcpip.LinkAddress) bool {
+ if len(addr) != EthernetAddressSize {
+ return false
+ }
+
+ return addr[unicastMulticastFlagByteIdx]&unicastMulticastFlagMask != 0
+}
+
+// IsValidUnicastEthernetAddress returns true if the address is a unicast
// ethernet address.
func IsValidUnicastEthernetAddress(addr tcpip.LinkAddress) bool {
- // Must be of the right length.
if len(addr) != EthernetAddressSize {
return false
}
- // Must not be unspecified.
if addr == unspecifiedEthernetAddress {
return false
}
- // Must not be a multicast.
if addr[unicastMulticastFlagByteIdx]&unicastMulticastFlagMask != 0 {
return false
}
- // addr is a valid unicast ethernet address.
return true
}