add some helpers for working with ethernet addresses as uint64_t
authordlg <dlg@openbsd.org>
Fri, 26 Feb 2021 01:12:37 +0000 (01:12 +0000)
committerdlg <dlg@openbsd.org>
Fri, 26 Feb 2021 01:12:37 +0000 (01:12 +0000)
commitcf89a71d9e248649a2adb23d76cc1cef5a7a7bba
treec21cca81adc626cc347ce05c6f69e87cad565830
parente0fb9e33262c3bf4ce91944418e3295b683594f0
add some helpers for working with ethernet addresses as uint64_t

the main bits are ether_addr_to_e64 and ether_e64_to addr for loading
an ethernet address into a uin64_t and visa versa. there's also
some macros for testing if an address in a uint64_t is multicast,
broadcast, anyaddr, or if it's an 802.1q reserved multicast group
address.

the reason for this functionality is once you have an ethernet
address as a uint64_t, operations like compares, bit tests, and
so on are fast and easy.

tested on amd64 and sparc64
sys/net/if_ethersubr.c
sys/netinet/if_ether.h