Page MenuHomeFreeBSD

D56136.id174538.diff
No OneTemporary

D56136.id174538.diff

diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c
--- a/sys/netinet6/nd6_rtr.c
+++ b/sys/netinet6/nd6_rtr.c
@@ -1728,38 +1728,26 @@
ia6_match = ia6;
}
- if (ia6_match == NULL && new->ndpr_vltime) {
+ /*
+ * 5.5.3 (d) (continued)
+ * If no address matched and the valid lifetime is non-zero,
+ * create a new address.
+ */
+ if (ia6_match == NULL && new->ndpr_vltime != 0) {
int ifidlen;
- /*
- * 5.5.3 (d) (continued)
- * No address matched and the valid lifetime is non-zero.
- * Create a new address.
- */
-
/*
* Prefix Length check:
* If the sum of the prefix length and interface identifier
* length does not equal 128 bits, the Prefix Information
* option MUST be ignored. The length of the interface
- * identifier is defined in a separate link-type specific
- * document.
+ * identifier is defined in a separate link-type specific document.
*/
ifidlen = in6_if2idlen(ifp);
- if (ifidlen < 0) {
- /* this should not happen, so we always log it. */
- log(LOG_ERR, "prelist_update: IFID undefined (%s)\n",
- if_name(ifp));
- goto end;
- }
if (ifidlen + pr->ndpr_plen != 128) {
- nd6log((LOG_INFO,
- "%s: invalid prefixlen %d for %s, ignored\n",
+ nd6log((LOG_INFO, "%s: invalid prefixlen %d for %s, ignored\n",
__func__, pr->ndpr_plen, if_name(ifp)));
- goto end;
- }
-
- if ((ia6 = in6_ifadd(new, mcast)) != NULL) {
+ } else if ((ia6 = in6_ifadd(new, mcast)) != NULL) {
/*
* note that we should use pr (not new) for reference.
*/
@@ -1771,8 +1759,7 @@
* When a new public address is created as described
* in RFC2462, also create a new temporary address.
*
- * RFC 3041 3.5.
- * When an interface connects to a new link, a new
+ * 3.5: When an interface connects to a new link, a new
* randomized interface identifier should be generated
* immediately together with a new set of temporary
* addresses. Thus, we specifiy 1 as the 2nd arg of
@@ -1784,9 +1771,9 @@
if (V_ip6_use_tempaddr && !has_temporary) {
int e;
if ((e = in6_tmpifadd(ia6, 1, 1)) != 0) {
- nd6log((LOG_NOTICE, "%s: failed to "
- "create a temporary address "
- "(errno=%d)\n", __func__, e));
+ nd6log((LOG_NOTICE,
+ "%s: failed to create a temporary address (errno=%d)\n",
+ __func__, e));
}
}
ifa_free(&ia6->ia_ifa);
@@ -1800,9 +1787,7 @@
}
}
-end:
nd6_prefix_rele(pr);
- return;
}
/*

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 9, 2:43 AM (19 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34870951
Default Alt Text
D56136.id174538.diff (2 KB)

Event Timeline