aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rw-r--r--conf.c12
-rw-r--r--util.h1
2 files changed, 9 insertions, 4 deletions
diff --git a/conf.c b/conf.c
index 90d3436..3f30725 100644
--- a/conf.c
+++ b/conf.c
@@ -629,10 +629,12 @@ static unsigned int conf_ip4(unsigned int ifi,
if_indextoname(ifi, ifname), strerror(-rc));
return 0;
}
+
+ if (MAC_IS_ZERO(mac))
+ memcpy(mac, MAC_LAA, ETH_ALEN);
}
- if (IN4_IS_ADDR_UNSPECIFIED(&ip4->addr) ||
- MAC_IS_ZERO(mac))
+ if (IN4_IS_ADDR_UNSPECIFIED(&ip4->addr))
return 0;
return ifi;
@@ -688,11 +690,13 @@ static unsigned int conf_ip6(unsigned int ifi,
if_indextoname(ifi, ifname), strerror(-rc));
return 0;
}
+
+ if (MAC_IS_ZERO(mac))
+ memcpy(mac, MAC_LAA, ETH_ALEN);
}
if (IN6_IS_ADDR_UNSPECIFIED(&ip6->addr) ||
- IN6_IS_ADDR_UNSPECIFIED(&ip6->addr_ll) ||
- MAC_IS_ZERO(mac))
+ IN6_IS_ADDR_UNSPECIFIED(&ip6->addr_ll))
return 0;
return ifi;
diff --git a/util.h b/util.h
index 8c37729..ef01001 100644
--- a/util.h
+++ b/util.h
@@ -91,6 +91,7 @@
#define PORT_IS_EPHEMERAL(port) ((port) >= PORT_EPHEMERAL_MIN)
#define MAC_ZERO ((uint8_t [ETH_ALEN]){ 0 })
+#define MAC_LAA ((uint8_t [ETH_ALEN]){ BIT(1), 0, 0, 0, 0, 0 })
#define MAC_IS_ZERO(addr) (!memcmp((addr), MAC_ZERO, ETH_ALEN))
#ifndef __bswap_constant_16