diff options
| author | Roy Marples <roy@marples.name> | 2019-01-17 11:44:08 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2019-01-17 11:44:08 +0000 |
| commit | 28a9b91a3667af48a45ff0cf91d4aed0cc9daf85 (patch) | |
| tree | e5788f700d5a6aaeb89661e0786c5e70c9d82a86 /src/dhcpcd.c | |
| parent | 63fac97fee20c076650225c0ebeaafe9aadb1c90 (diff) | |
| download | dhcpcd-28a9b91a3667af48a45ff0cf91d4aed0cc9daf85.tar.xz | |
IPv4LL: Preserve address when carrier drops
Apple Conformance testing now requires this.
However, if associated SSID changes on wireless networks,
any remembered address is reset.
Diffstat (limited to 'src/dhcpcd.c')
| -rw-r--r-- | src/dhcpcd.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dhcpcd.c b/src/dhcpcd.c index 6c46820b..616a2ee0 100644 --- a/src/dhcpcd.c +++ b/src/dhcpcd.c @@ -759,12 +759,16 @@ dhcpcd_handlecarrier(struct dhcpcd_ctx *ctx, int carrier, unsigned int flags, #endif memcpy(ossid, ifp->ssid, ifp->ssid_len); if_getssid(ifp); -#ifdef NOCARRIER_PRESERVE_IP + /* If we changed SSID network, drop leases */ if (ifp->ssid_len != olen || memcmp(ifp->ssid, ossid, ifp->ssid_len)) + { +#ifdef NOCARRIER_PRESERVE_IP dhcpcd_drop(ifp, 0); #endif + ipv4ll_reset(ifp); + } } dhcpcd_initstate(ifp, 0); script_runreason(ifp, "CARRIER"); |
