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;