summaryrefslogtreecommitdiffstats
path: root/src/dhcpcd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2020-02-07 15:04:25 +0000
committerRoy Marples <roy@marples.name>2020-02-07 15:04:25 +0000
commit57ab5f7c51248ddb529ac28617082f306418065c (patch)
tree8fcb6c928ec37476a8cf99fdee47995386dcee7f /src/dhcpcd.c
parentccf3a5e9fe4ea8f63cfcdb27f96b02ec2cc8ff70 (diff)
downloaddhcpcd-57ab5f7c51248ddb529ac28617082f306418065c.tar.xz
dhcpcd: randomise hardware address on start if no carrier
For more anonymity.
Diffstat (limited to 'src/dhcpcd.c')
-rw-r--r--src/dhcpcd.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/dhcpcd.c b/src/dhcpcd.c
index 3da52982..46564d01 100644
--- a/src/dhcpcd.c
+++ b/src/dhcpcd.c
@@ -940,9 +940,19 @@ static void
dhcpcd_prestartinterface(void *arg)
{
struct interface *ifp = arg;
+ bool anondown;
+
+ if (ifp->carrier == LINK_DOWN &&
+ ifp->options->options & DHCPCD_ANONYMOUS &&
+ ifp->flags & IFF_UP)
+ {
+ if_down(ifp);
+ anondown = true;
+ } else
+ anondown = false;
if ((!(ifp->ctx->options & DHCPCD_MASTER) ||
- ifp->options->options & DHCPCD_IF_UP) &&
+ ifp->options->options & DHCPCD_IF_UP || anondown) &&
!(ifp->flags & IFF_UP))
{
if (ifp->options->options & DHCPCD_ANONYMOUS &&