Module Name:    src
Committed By:   ozaki-r
Date:           Thu Nov 29 09:51:21 UTC 2018

Modified Files:
        src/sys/netinet: if_arp.c in.c in_var.h
        src/sys/netinet6: in6.c ip6_var.h nd6_nbr.c

Log Message:
Introduce and use ip_dad_enabled() and ip6_dad_enabled() functions


To generate a diff of this commit:
cvs rdiff -u -r1.276 -r1.277 src/sys/netinet/if_arp.c
cvs rdiff -u -r1.231 -r1.232 src/sys/netinet/in.c
cvs rdiff -u -r1.96 -r1.97 src/sys/netinet/in_var.h
cvs rdiff -u -r1.270 -r1.271 src/sys/netinet6/in6.c
cvs rdiff -u -r1.80 -r1.81 src/sys/netinet6/ip6_var.h
cvs rdiff -u -r1.156 -r1.157 src/sys/netinet6/nd6_nbr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netinet/if_arp.c
diff -u src/sys/netinet/if_arp.c:1.276 src/sys/netinet/if_arp.c:1.277
--- src/sys/netinet/if_arp.c:1.276	Tue Oct 30 05:54:41 2018
+++ src/sys/netinet/if_arp.c	Thu Nov 29 09:51:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_arp.c,v 1.276 2018/10/30 05:54:41 ozaki-r Exp $	*/
+/*	$NetBSD: if_arp.c,v 1.277 2018/11/29 09:51:20 ozaki-r Exp $	*/
 
 /*
  * Copyright (c) 1998, 2000, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.276 2018/10/30 05:54:41 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_arp.c,v 1.277 2018/11/29 09:51:20 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -1491,7 +1491,7 @@ arp_ifinit(struct ifnet *ifp, struct ifa
 	} else {
 		ia->ia_dad_start = arp_dad_start;
 		ia->ia_dad_stop = arp_dad_stop;
-		if (ia->ia4_flags & IN_IFF_TRYTENTATIVE && ip_dad_count > 0)
+		if (ia->ia4_flags & IN_IFF_TRYTENTATIVE && ip_dad_enabled())
 			ia->ia4_flags |= IN_IFF_TENTATIVE;
 		else
 			arpannounce1(ifa);
@@ -1597,7 +1597,7 @@ arp_dad_start(struct ifaddr *ifa)
 
 	/*
 	 * If we don't need DAD, don't do it.
-	 * - DAD is disabled (ip_dad_count == 0)
+	 * - DAD is disabled
 	 */
 	if (!(ia->ia4_flags & IN_IFF_TENTATIVE)) {
 		log(LOG_DEBUG,
@@ -1606,7 +1606,7 @@ arp_dad_start(struct ifaddr *ifa)
 		    ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
 		return;
 	}
-	if (!ip_dad_count) {
+	if (!ip_dad_enabled()) {
 		ia->ia4_flags &= ~IN_IFF_TENTATIVE;
 		rt_newaddrmsg(RTM_NEWADDR, ifa, 0, NULL);
 		arpannounce1(ifa);
@@ -1806,7 +1806,7 @@ arp_dad_duplicated(struct ifaddr *ifa, c
 		return;
 	} else {
 		/* If DAD is disabled, just report the duplicate. */
-		if (ip_dad_count == 0) {
+		if (!ip_dad_enabled()) {
 			log(LOG_ERR,
 			    "%s: DAD ignoring duplicate address %s from %s\n",
 			    if_name(ifp), iastr, sha);

Index: src/sys/netinet/in.c
diff -u src/sys/netinet/in.c:1.231 src/sys/netinet/in.c:1.232
--- src/sys/netinet/in.c:1.231	Sun May 13 22:42:51 2018
+++ src/sys/netinet/in.c	Thu Nov 29 09:51:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: in.c,v 1.231 2018/05/13 22:42:51 khorben Exp $	*/
+/*	$NetBSD: in.c,v 1.232 2018/11/29 09:51:20 ozaki-r Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.231 2018/05/13 22:42:51 khorben Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in.c,v 1.232 2018/11/29 09:51:20 ozaki-r Exp $");
 
 #include "arp.h"
 
@@ -1155,11 +1155,7 @@ in_ifinit(struct ifnet *ifp, struct in_i
 	if (ifp->if_link_state == LINK_STATE_DOWN) {
 		ia->ia4_flags |= IN_IFF_DETACHED;
 		ia->ia4_flags &= ~IN_IFF_TENTATIVE;
-	} else if (hostIsNew && if_do_dad(ifp)
-#if NARP > 0
-	    && ip_dad_count > 0
-#endif
-	)
+	} else if (hostIsNew && if_do_dad(ifp) && ip_dad_enabled())
 		ia->ia4_flags |= IN_IFF_TRYTENTATIVE;
 
 	/*

Index: src/sys/netinet/in_var.h
diff -u src/sys/netinet/in_var.h:1.96 src/sys/netinet/in_var.h:1.97
--- src/sys/netinet/in_var.h:1.96	Thu Apr 19 21:21:44 2018
+++ src/sys/netinet/in_var.h	Thu Nov 29 09:51:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: in_var.h,v 1.96 2018/04/19 21:21:44 christos Exp $	*/
+/*	$NetBSD: in_var.h,v 1.97 2018/11/29 09:51:20 ozaki-r Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -378,6 +378,17 @@ struct in_multi {
 extern pktqueue_t *ip_pktq;
 
 extern int ip_dad_count;		/* Duplicate Address Detection probes */
+
+static inline bool
+ip_dad_enabled(void)
+{
+#if NARP > 0
+	return ip_dad_count > 0;
+#else
+	return false;
+#endif
+}
+
 #if defined(INET) && NARP > 0
 extern int arp_debug;
 #define ARPLOGADDR(a) IN_PRINT(_ipbuf, a)

Index: src/sys/netinet6/in6.c
diff -u src/sys/netinet6/in6.c:1.270 src/sys/netinet6/in6.c:1.271
--- src/sys/netinet6/in6.c:1.270	Tue Oct 30 05:56:02 2018
+++ src/sys/netinet6/in6.c	Thu Nov 29 09:51:21 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: in6.c,v 1.270 2018/10/30 05:56:02 ozaki-r Exp $	*/
+/*	$NetBSD: in6.c,v 1.271 2018/11/29 09:51:21 ozaki-r Exp $	*/
 /*	$KAME: in6.c,v 1.198 2001/07/18 09:12:38 itojun Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.270 2018/10/30 05:56:02 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6.c,v 1.271 2018/11/29 09:51:21 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1269,7 +1269,7 @@ in6_update_ifa1(struct ifnet *ifp, struc
 		ia->ia6_flags |= IN6_IFF_DETACHED;
 		ia->ia6_flags &= ~IN6_IFF_TENTATIVE;
 	} else if ((hostIsNew || was_tentative) && if_do_dad(ifp) &&
-	           ip6_dad_count > 0) {
+	           ip6_dad_enabled()) {
 		ia->ia6_flags |= IN6_IFF_TENTATIVE;
 	}
 

Index: src/sys/netinet6/ip6_var.h
diff -u src/sys/netinet6/ip6_var.h:1.80 src/sys/netinet6/ip6_var.h:1.81
--- src/sys/netinet6/ip6_var.h:1.80	Wed Feb 14 05:29:39 2018
+++ src/sys/netinet6/ip6_var.h	Thu Nov 29 09:51:21 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip6_var.h,v 1.80 2018/02/14 05:29:39 maxv Exp $	*/
+/*	$NetBSD: ip6_var.h,v 1.81 2018/11/29 09:51:21 ozaki-r Exp $	*/
 /*	$KAME: ip6_var.h,v 1.33 2000/06/11 14:59:20 jinmei Exp $	*/
 
 /*
@@ -364,6 +364,13 @@ int	ip6_get_membership(const struct sock
 
 u_int32_t ip6_randomid(void);
 u_int32_t ip6_randomflowlabel(void);
+
+static inline bool
+ip6_dad_enabled(void)
+{
+
+	return ip6_dad_count > 0;
+}
 #endif /* _KERNEL */
 
 #endif /* !_NETINET6_IP6_VAR_H_ */

Index: src/sys/netinet6/nd6_nbr.c
diff -u src/sys/netinet6/nd6_nbr.c:1.156 src/sys/netinet6/nd6_nbr.c:1.157
--- src/sys/netinet6/nd6_nbr.c:1.156	Sat May 19 08:22:58 2018
+++ src/sys/netinet6/nd6_nbr.c	Thu Nov 29 09:51:21 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: nd6_nbr.c,v 1.156 2018/05/19 08:22:58 maxv Exp $	*/
+/*	$NetBSD: nd6_nbr.c,v 1.157 2018/11/29 09:51:21 ozaki-r Exp $	*/
 /*	$KAME: nd6_nbr.c,v 1.61 2001/02/10 16:06:14 jinmei Exp $	*/
 
 /*
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.156 2018/05/19 08:22:58 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nd6_nbr.c,v 1.157 2018/11/29 09:51:21 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1187,7 +1187,7 @@ nd6_dad_start(struct ifaddr *ifa, int xt
 	/*
 	 * If we don't need DAD, don't do it.
 	 * There are several cases:
-	 * - DAD is disabled (ip6_dad_count == 0)
+	 * - DAD is disabled
 	 * - the interface address is anycast
 	 */
 	if (!(ia->ia6_flags & IN6_IFF_TENTATIVE)) {
@@ -1198,7 +1198,7 @@ nd6_dad_start(struct ifaddr *ifa, int xt
 			ifa->ifa_ifp ? if_name(ifa->ifa_ifp) : "???");
 		return;
 	}
-	if (ia->ia6_flags & IN6_IFF_ANYCAST || !ip6_dad_count) {
+	if (ia->ia6_flags & IN6_IFF_ANYCAST || !ip6_dad_enabled()) {
 		ia->ia6_flags &= ~IN6_IFF_TENTATIVE;
 		rt_newaddrmsg(RTM_NEWADDR, ifa, 0, NULL);
 		return;

Reply via email to