Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys Introduce and use ip_dad_enabled() and ip6_dad_enabled()...



details:   https://anonhg.NetBSD.org/src/rev/99de9632afbb
branches:  trunk
changeset: 446281:99de9632afbb
user:      ozaki-r <ozaki-r%NetBSD.org@localhost>
date:      Thu Nov 29 09:51:20 2018 +0000

description:
Introduce and use ip_dad_enabled() and ip6_dad_enabled() functions

diffstat:

 sys/netinet/if_arp.c   |  12 ++++++------
 sys/netinet/in.c       |  10 +++-------
 sys/netinet/in_var.h   |  13 ++++++++++++-
 sys/netinet6/in6.c     |   6 +++---
 sys/netinet6/ip6_var.h |   9 ++++++++-
 sys/netinet6/nd6_nbr.c |   8 ++++----
 6 files changed, 36 insertions(+), 22 deletions(-)

diffs (198 lines):

diff -r e1c10174a1df -r 99de9632afbb sys/netinet/if_arp.c
--- a/sys/netinet/if_arp.c      Thu Nov 29 03:10:20 2018 +0000
+++ b/sys/netinet/if_arp.c      Thu Nov 29 09:51:20 2018 +0000
@@ -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 @@
        } 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 @@
 
        /*
         * 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 @@
                    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 @@
                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);
diff -r e1c10174a1df -r 99de9632afbb sys/netinet/in.c
--- a/sys/netinet/in.c  Thu Nov 29 03:10:20 2018 +0000
+++ b/sys/netinet/in.c  Thu Nov 29 09:51:20 2018 +0000
@@ -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 @@
        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;
 
        /*
diff -r e1c10174a1df -r 99de9632afbb sys/netinet/in_var.h
--- a/sys/netinet/in_var.h      Thu Nov 29 03:10:20 2018 +0000
+++ b/sys/netinet/in_var.h      Thu Nov 29 09:51:20 2018 +0000
@@ -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 @@
 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)
diff -r e1c10174a1df -r 99de9632afbb sys/netinet6/in6.c
--- a/sys/netinet6/in6.c        Thu Nov 29 03:10:20 2018 +0000
+++ b/sys/netinet6/in6.c        Thu Nov 29 09:51:20 2018 +0000
@@ -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 @@
                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;
        }
 
diff -r e1c10174a1df -r 99de9632afbb sys/netinet6/ip6_var.h
--- a/sys/netinet6/ip6_var.h    Thu Nov 29 03:10:20 2018 +0000
+++ b/sys/netinet6/ip6_var.h    Thu Nov 29 09:51:20 2018 +0000
@@ -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 @@
 
 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_ */
diff -r e1c10174a1df -r 99de9632afbb sys/netinet6/nd6_nbr.c
--- a/sys/netinet6/nd6_nbr.c    Thu Nov 29 03:10:20 2018 +0000
+++ b/sys/netinet6/nd6_nbr.c    Thu Nov 29 09:51:20 2018 +0000
@@ -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 @@
        /*
         * 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 @@
                        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;



Home | Main Index | Thread Index | Old Index