diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-10-09 19:17:35 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-10-09 19:17:35 +0000 |
commit | 578aece760dd47a06a686f82efab5b650807d4c5 (patch) | |
tree | e57a1d077e19bf33dd2818e399557f7b359adbc5 /pkg/tcpip/header/eth.go | |
parent | 9774e9a0ca4110d88e5c4b4a59c188d5bedc0adc (diff) | |
parent | 257703c050e5901aeb3734f200f5a6b41856b4d9 (diff) |
Merge release-20200928.0-77-g257703c05 (automated)
Diffstat (limited to 'pkg/tcpip/header/eth.go')
-rw-r--r-- | pkg/tcpip/header/eth.go | 16 |
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 } |