]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: currently IPv4ACD requires MAC address whose length is ETH_ALEN 22316/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 31 Jan 2022 04:07:34 +0000 (13:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 31 Jan 2022 04:10:28 +0000 (13:10 +0900)
src/network/networkd-ipv4acd.c

index 703278f8b86c0431d394d957a68656481c0b74cb..009cde27de19679bfc3b3fe420f4eb18dbd0290e 100644 (file)
@@ -132,7 +132,8 @@ int ipv4acd_configure(Address *address) {
         int r;
 
         assert(address);
-        assert(address->link);
+
+        link = ASSERT_PTR(address->link);
 
         if (address->family != AF_INET)
                 return 0;
@@ -140,6 +141,9 @@ int ipv4acd_configure(Address *address) {
         if (!FLAGS_SET(address->duplicate_address_detection, ADDRESS_FAMILY_IPV4))
                 return 0;
 
+        if (link->hw_addr.length != ETH_ALEN || hw_addr_is_null(&link->hw_addr))
+                return 0;
+
         /* Currently, only static and DHCP4 addresses are supported. */
         assert(IN_SET(address->source, NETWORK_CONFIG_SOURCE_STATIC, NETWORK_CONFIG_SOURCE_DHCP4));
 
@@ -148,8 +152,6 @@ int ipv4acd_configure(Address *address) {
                 return 0;
         }
 
-        link = address->link;
-
         log_link_debug(link, "Configuring IPv4ACD for address "IPV4_ADDRESS_FMT_STR,
                        IPV4_ADDRESS_FMT_VAL(address->in_addr.in));