]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Linux: Support hardware address randomisation
authorRoy Marples <roy@marples.name>
Wed, 15 Jan 2020 16:07:27 +0000 (16:07 +0000)
committerRoy Marples <roy@marples.name>
Wed, 15 Jan 2020 16:07:27 +0000 (16:07 +0000)
src/if-linux.c

index d5dfdedaef0165d78e347dee7b1d7c9d6e3aa73c..d42383b58754ec3fecb6ff0b599494e6dd02b458 100644 (file)
@@ -433,6 +433,23 @@ if_closesockets_os(struct dhcpcd_ctx *ctx)
        }
 }
 
+int
+if_setmac(struct interface *ifp, void *mac, uint8_t maclen)
+{
+       struct ifreq ifr = {
+               .ifr_hwaddr.sa_family = ifp->family,
+       };
+
+       if (ifp->hwlen != maclen || maclen > sizeof(ifr.ifr_hwaddr.sa_data)) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       strlcpy(ifr.ifr_name, ifp->name, sizeof(ifr.ifr_name));
+       memcpy(ifr.ifr_hwaddr.sa_data, mac, maclen);
+       return if_ioctl(ifp->ctx, SIOCSIFHWADDR, &ifr, sizeof(ifr));
+}
+
 int
 if_carrier(struct interface *ifp)
 {