# net.mac-address Checks that a text is an EUI-48 (MAC) address and normalises it to lower-case, colon-separated form, `00:1b:63:84:45:e6`. It never throws: an invalid address comes back with `valid: false` and a short `reason`, so an inventory can list every bad entry instead of stopping at the first. ## Forms accepted Exactly four, in either case: | form | example | where you see it | |------|---------|------------------| | colon | `00:1b:63:84:45:e6` | Linux, macOS, IEEE 802 | | hyphen | `00-1B-63-84-45-E6` | Windows | | Cisco dotted | `001b.6384.45e6` | Cisco IOS | | bare | `001b638445e6` | databases, DHCP exports | Refused, deliberately: - mixed separators (`00:1b-63:...`): `mixed separators`; - single-digit octets (`0:1b:63:84:45:e6`), which some tools print but which are more often a typo than an address; EUI-64 and short forms: `not a recognised MAC address format`; - surrounding whitespace, including a trailing newline: nothing is trimmed, so trim input yourself if you mean to; - anything that is not an ASCII hex digit, including non-ASCII digits and fullwidth letters: `not a hex digit`. Lengths are counted in characters in every language, so they fail the same way everywhere. ## What the bits say - `multicast` is the I/G bit, the least significant bit of the first octet: a group address (`01:00:5e:...` for IPv4 multicast, `ff:ff:ff:ff:ff:ff` broadcast) rather than one interface. - `locallyAdministered` is the U/L bit, the next bit up: the address was set by software (Docker's `02:42:...`, VMs, randomised Wi-Fi MACs) rather than assigned by the maker. - `oui` is the first three octets as the IEEE registry writes them, `00-1B-63`. For a locally administered address it is not a real maker's OUI. Source: IEEE 802-2014 section 8.2 (MAC address format, I/G and U/L bits), and the IEEE "Guidelines for Use of Extended Unique Identifier (EUI)".