From 30b290f996366e9370eadc0321cb59ec4eb85181 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 23 Jan 2018 16:46:31 +0100 Subject: udhcpc6: additional fix for ppp interface type Invent a fictitious MAC only once Signed-off-by: Denys Vlasenko --- networking/udhcp/d6_socket.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'networking/udhcp/d6_socket.c') diff --git a/networking/udhcp/d6_socket.c b/networking/udhcp/d6_socket.c index f9082ee9d..315c8d98a 100644 --- a/networking/udhcp/d6_socket.c +++ b/networking/udhcp/d6_socket.c @@ -69,8 +69,12 @@ int FAST_FUNC d6_read_interface(const char *interface, int *ifindex, struct in6_ if (ioctl(fd, SIOCGIFINDEX, &ifr) == 0) { *ifindex = ifr.ifr_ifindex; log2("ifindex %d", *ifindex); - ((uint32_t*)mac)[0] = rand(); - ((uint16_t*)mac)[2] = rand(); + if (((uint32_t*)mac)[0] == 0) { + /* invent a fictitious MAC (once) */ + ((uint32_t*)mac)[0] = rand(); + ((uint16_t*)mac)[2] = rand(); + mac[0] &= 0xfc; /* make sure it's not bcast */ + } retval &= (3 - (1<<0)); } close(fd); -- cgit v1.2.3