From: Michael Tremer Date: Sat, 11 Feb 2023 12:10:15 +0000 (+0000) Subject: networkd: Check if Ethernet addresses from config are usable X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d81d9cf5582b9be41968c10c01bf436b066d4e34;p=network.git networkd: Check if Ethernet addresses from config are usable Signed-off-by: Michael Tremer --- diff --git a/src/networkd/address.h b/src/networkd/address.h index 0885d755..d284a0bb 100644 --- a/src/networkd/address.h +++ b/src/networkd/address.h @@ -74,4 +74,8 @@ static inline int nw_address_generate(nw_address_t* addr) { return 0; } +static inline int nw_address_is_multicast(const nw_address_t* addr) { + return (addr->ether_addr_octet[0] & NW_ADDRESS_MULTICAST); +} + #endif /* NETWORKD_ADDRESS_H */ diff --git a/src/networkd/port.c b/src/networkd/port.c index 4c325924..89f31812 100644 --- a/src/networkd/port.c +++ b/src/networkd/port.c @@ -85,7 +85,12 @@ static int nw_port_setup_address(struct nw_port* port) { goto ERROR; } - // XXX Do we need to check for multicast here? + // Check if this address is usable + r = nw_address_is_multicast(&port->address); + if (r) { + DEBUG("Port %s: Multicast bit is set on Ethernet address\n", port->name); + goto ERROR; + } return 0;