summaryrefslogtreecommitdiffstats
path: root/dhcpcd.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2016-05-25 09:38:51 +0000
committerRoy Marples <roy@marples.name>2016-05-25 09:38:51 +0000
commitf6bdf24c69d370e959e571289c12e9d55ca2f1d0 (patch)
tree69facfb8cbf197eeac0a883243c4f5059e7a7520 /dhcpcd.c
parent6be2c4f91ebd7a880b06a530195356b532bd6d47 (diff)
downloaddhcpcd-f6bdf24c69d370e959e571289c12e9d55ca2f1d0.tar.xz
Disable ARP for POINTOPOINT.
Diffstat (limited to 'dhcpcd.c')
-rw-r--r--dhcpcd.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/dhcpcd.c b/dhcpcd.c
index aaf3ce20..3041cf7f 100644
--- a/dhcpcd.c
+++ b/dhcpcd.c
@@ -420,14 +420,17 @@ configure_interface1(struct interface *ifp)
if (ifo->options & DHCPCD_RELEASE)
ifo->options &= ~DHCPCD_PERSISTENT;
- if (ifp->flags & IFF_POINTOPOINT && !(ifo->options & DHCPCD_INFORM))
- ifo->options |= DHCPCD_STATIC;
+ if (ifp->flags & (IFF_POINTOPOINT | IFF_LOOPBACK)) {
+ ifo->options &= ~DHCPCD_ARP;
+ if (!(ifp->flags & IFF_MULTICAST))
+ ifo->options &= ~DHCPCD_IPV6RS;
+ if (!(ifo->options & DHCPCD_INFORM))
+ ifo->options |= DHCPCD_STATIC;
+ }
if (ifp->flags & IFF_NOARP ||
+ !(ifo->options & DHCPCD_ARP) ||
ifo->options & (DHCPCD_INFORM | DHCPCD_STATIC))
ifo->options &= ~DHCPCD_IPV4LL;
- if (ifp->flags & (IFF_POINTOPOINT | IFF_LOOPBACK) ||
- !(ifp->flags & IFF_MULTICAST))
- ifo->options &= ~DHCPCD_IPV6RS;
if (ifo->metric != -1)
ifp->metric = (unsigned int)ifo->metric;