From: Roy Marples Date: Wed, 15 Jan 2020 16:07:27 +0000 (+0000) Subject: Linux: Support hardware address randomisation X-Git-Tag: v9.0.0~117 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e2a713f5a88d65bc31e4e5118da11d9528d730a9;p=thirdparty%2Fdhcpcd.git Linux: Support hardware address randomisation --- diff --git a/src/if-linux.c b/src/if-linux.c index d5dfdeda..d42383b5 100644 --- a/src/if-linux.c +++ b/src/if-linux.c @@ -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) {