From d81d9cf5582b9be41968c10c01bf436b066d4e34 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 11 Feb 2023 12:10:15 +0000 Subject: [PATCH] networkd: Check if Ethernet addresses from config are usable Signed-off-by: Michael Tremer --- src/networkd/address.h | 4 ++++ src/networkd/port.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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; -- 2.47.3