From: Roy Marples Date: Sat, 11 Aug 2007 16:03:25 +0000 (+0000) Subject: -L actually doesn't do IPv4LL as advertised. X-Git-Tag: v3.2.3~212 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dfecbc78af96f9d3ca99205df668c1fb5eac9bad;p=thirdparty%2Fdhcpcd.git -L actually doesn't do IPv4LL as advertised. --- diff --git a/ChangeLog b/ChangeLog index 6b8793d8..4371c8ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,5 @@ +-L actually doesn't do IPv4LL as advertised. + dhcpcd-3.1.4 Ensure ARP checking times out when there is a flood. Add -x option to quit without releasing the lease. diff --git a/client.c b/client.c index b7c92bca..656fc6de 100644 --- a/client.c +++ b/client.c @@ -152,9 +152,11 @@ static bool get_old_lease (const options_t *options, interface_t *iface, #ifdef ENABLE_ARP /* Check that no-one is using the address */ - if ((options->dolastlease || - IN_LINKLOCAL (dhcp->address.s_addr)) && - arp_claim (iface, dhcp->address)) { + if ((options->dolastlease || + (IN_LINKLOCAL (dhcp->address.s_addr) && + (! options->doipv4ll || + arp_claim (iface, dhcp->address))))) + { memset (&dhcp->address, 0, sizeof (struct in_addr)); memset (&dhcp->netmask, 0, sizeof (struct in_addr)); memset (&dhcp->broadcast, 0, sizeof (struct in_addr)); @@ -424,7 +426,7 @@ int dhcp_run (const options_t *options, int *pidfd) #endif #ifdef ENABLE_IPV4LL - if (! options->test && + if (! options->test && options->doipv4ll && (! dhcp->address.s_addr || (! IN_LINKLOCAL (dhcp->address.s_addr) && ! options->dolastlease)))