Module Name: src
Committed By: roy
Date: Fri Jul 26 10:53:45 UTC 2019
Modified Files:
src/external/bsd/dhcpcd/dist/src: dhcp6.c ipv6.c ipv6.h ipv6nd.c
Log Message:
As dhcpcd no longer supports IPv4 address advertisement for SMALL builds,
remove the equivalent IPv6 functionality.
This shouldn't be an issue as this is only used for IPv6 address sharing,
which only the NetBSD kernel currently supports.
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/external/bsd/dhcpcd/dist/src/dhcp6.c
cvs rdiff -u -r1.1.1.17 -r1.2 src/external/bsd/dhcpcd/dist/src/ipv6.c
cvs rdiff -u -r1.1.1.11 -r1.2 src/external/bsd/dhcpcd/dist/src/ipv6.h
cvs rdiff -u -r1.8 -r1.9 src/external/bsd/dhcpcd/dist/src/ipv6nd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/bsd/dhcpcd/dist/src/dhcp6.c
diff -u src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.9 src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.10
--- src/external/bsd/dhcpcd/dist/src/dhcp6.c:1.9 Wed Jul 24 09:57:43 2019
+++ src/external/bsd/dhcpcd/dist/src/dhcp6.c Fri Jul 26 10:53:45 2019
@@ -1523,7 +1523,9 @@ dhcp6_dadcallback(void *arg)
if (valid)
dhcpcd_daemonise(ifp->ctx);
}
+#ifdef ND6_ADVERTISE
ipv6nd_advertise(ia);
+#endif
}
}
}
@@ -3927,16 +3929,20 @@ dhcp6_free(struct interface *ifp)
void
dhcp6_abort(struct interface *ifp)
{
+#ifdef ND6_ADVERTISE
struct dhcp6_state *state;
struct ipv6_addr *ia;
+#endif
eloop_timeout_delete(ifp->ctx->eloop, dhcp6_start1, ifp);
+#ifdef ND6_ADVERTISE
state = D6_STATE(ifp);
if (state == NULL)
return;
TAILQ_FOREACH(ia, &state->addrs, next) {
ipv6nd_advertise(ia);
}
+#endif
}
void
Index: src/external/bsd/dhcpcd/dist/src/ipv6.c
diff -u src/external/bsd/dhcpcd/dist/src/ipv6.c:1.1.1.17 src/external/bsd/dhcpcd/dist/src/ipv6.c:1.2
--- src/external/bsd/dhcpcd/dist/src/ipv6.c:1.1.1.17 Wed Jul 24 09:54:54 2019
+++ src/external/bsd/dhcpcd/dist/src/ipv6.c Fri Jul 26 10:53:45 2019
@@ -616,8 +616,10 @@ ipv6_deleteaddr(struct ipv6_addr *ia)
}
}
+#ifdef ND6_ADVERTISE
/* Advertise the address if it exists on another interface. */
ipv6nd_advertise(ia);
+#endif
}
static int
@@ -625,8 +627,10 @@ ipv6_addaddr1(struct ipv6_addr *ia, cons
{
struct interface *ifp;
uint32_t pltime, vltime;
- bool vltime_was_zero;
__printflike(1, 2) void (*logfunc)(const char *, ...);
+#ifdef ND6_ADVERTISE
+ bool vltime_was_zero;
+#endif
#ifdef __sun
struct ipv6_state *state;
struct ipv6_addr *ia2;
@@ -694,7 +698,9 @@ ipv6_addaddr1(struct ipv6_addr *ia, cons
" seconds",
ifp->name, ia->prefix_pltime, ia->prefix_vltime);
+#ifdef ND6_ADVERTISE
vltime_was_zero = ia->prefix_vltime == 0;
+#endif
if (if_address6(RTM_NEWADDR, ia) == -1) {
logerr(__func__);
/* Restore real pltime and vltime */
@@ -758,9 +764,11 @@ ipv6_addaddr1(struct ipv6_addr *ia, cons
}
#endif
+#ifdef ND6_ADVERTISE
/* Re-advertise the preferred address to be safe. */
if (!vltime_was_zero)
ipv6nd_advertise(ia);
+#endif
return 0;
}
@@ -1081,9 +1089,11 @@ ipv6_handleifa(struct dhcpcd_ctx *ctx,
case RTM_DELADDR:
if (ia != NULL) {
TAILQ_REMOVE(&state->addrs, ia, next);
+#ifdef ND6_ADVERTISE
/* Advertise the address if it exists on
* another interface. */
ipv6nd_advertise(ia);
+#endif
/* We'll free it at the end of the function. */
}
break;
Index: src/external/bsd/dhcpcd/dist/src/ipv6.h
diff -u src/external/bsd/dhcpcd/dist/src/ipv6.h:1.1.1.11 src/external/bsd/dhcpcd/dist/src/ipv6.h:1.2
--- src/external/bsd/dhcpcd/dist/src/ipv6.h:1.1.1.11 Wed Jul 24 09:54:54 2019
+++ src/external/bsd/dhcpcd/dist/src/ipv6.h Fri Jul 26 10:53:45 2019
@@ -149,6 +149,10 @@
# define IN6_IFF_DETACHED 0
#endif
+#ifndef SMALL
+# define ND6_ADVERTISE
+#endif
+
#ifdef INET6
TAILQ_HEAD(ipv6_addrhead, ipv6_addr);
struct ipv6_addr {
Index: src/external/bsd/dhcpcd/dist/src/ipv6nd.c
diff -u src/external/bsd/dhcpcd/dist/src/ipv6nd.c:1.8 src/external/bsd/dhcpcd/dist/src/ipv6nd.c:1.9
--- src/external/bsd/dhcpcd/dist/src/ipv6nd.c:1.8 Wed Jul 24 09:57:43 2019
+++ src/external/bsd/dhcpcd/dist/src/ipv6nd.c Fri Jul 26 10:53:45 2019
@@ -389,6 +389,7 @@ ipv6nd_sendrsprobe(void *arg)
}
}
+#ifdef ND6_ADVERTISE
static void
ipv6nd_sendadvertisement(void *arg)
{
@@ -526,6 +527,7 @@ ipv6nd_advertise(struct ipv6_addr *ia)
eloop_timeout_delete(ctx->eloop, ipv6nd_sendadvertisement, iaf);
ipv6nd_sendadvertisement(iaf);
}
+#endif /* ND6_ADVERTISE */
static void
ipv6nd_expire(void *arg)
@@ -908,7 +910,9 @@ try_script:
return;
}
}
+#ifdef ND6_ADVERTISE
ipv6nd_advertise(ia);
+#endif
}
}