dad_init should go away too.

> On 27 Nov 2022, at 21:18, Klemens Nanni <k...@openbsd.org> wrote:
> 
> The list of IPv6 addresses to perfom Duplicate Address Detection on is
> entirely static to nd6_nbr.c incl. its state vars with the exception of
> ip6_dad_pending aka. the net.inet6.ip6.dad_pending sysctl(2).
> 
> Statically initialise the list head, pull dad_init from the middle to
> the file up to where the rest is and set it =1 rather than incrementing
> as it is only used as early bail-out check (!dad_init).
> 
> Leave the global ip6_dad_pending and its in/decrement semantic as-is.
> 
> This should be a tad clearer and simpler;  no function change.
> 
> Feedback? Objection? OK?
> 
> diff --git a/sys/netinet6/nd6_nbr.c b/sys/netinet6/nd6_nbr.c
> index 0597c8d0d9a..d8fdc5b9bd6 100644
> --- a/sys/netinet6/nd6_nbr.c
> +++ b/sys/netinet6/nd6_nbr.c
> @@ -62,7 +62,8 @@
> #include <netinet/ip_carp.h>
> #endif
> 
> -TAILQ_HEAD(dadq_head, dadq);
> +static TAILQ_HEAD(, dadq) dadq =
> +    TAILQ_HEAD_INITIALIZER(dadq);    /* list of addresses to run DAD on */
> struct dadq {
>       TAILQ_ENTRY(dadq) dad_list;
>       struct ifaddr *dad_ifa;
> @@ -84,6 +85,7 @@ void nd6_dad_duplicated(struct dadq *);
> 
> int nd6_isneighbor(const struct ifnet *, const struct in6_addr *);
> 
> +static int dad_init = 0;
> static int dad_maxtry = 15;   /* max # of *tries* to transmit DAD packet */
> 
> /*
> @@ -1036,9 +1038,6 @@ nd6_ifptomac(struct ifnet *ifp)
>       }
> }
> 
> -static struct dadq_head dadq;
> -static int dad_init = 0;
> -
> struct dadq *
> nd6_dad_find(struct ifaddr *ifa)
> {
> @@ -1078,10 +1077,8 @@ nd6_dad_start(struct ifaddr *ifa)
> 
>       NET_ASSERT_LOCKED();
> 
> -     if (!dad_init) {
> -             TAILQ_INIT(&dadq);
> -             dad_init++;
> -     }
> +     if (!dad_init)
> +             dad_init = 1;
> 
>       /*
>        * If we don't need DAD, don't do it.
> 

Reply via email to