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;