On Wed, Nov 23, 2022 at 02:56:27PM +0000, Klemens Nanni wrote:
> A single cast-free struct pointer dereference needs no indirection.
> ND_IFINFO() is under _KERNEL.
> 
> OK?
> 

ok mvs@

> diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c
> index 1924c36c813..d6ccfd3a272 100644
> --- a/sys/netinet6/nd6.c
> +++ b/sys/netinet6/nd6.c
> @@ -367,7 +367,7 @@ nd6_llinfo_timer(struct rtentry *rt)
>       case ND6_LLINFO_INCOMPLETE:
>               if (ln->ln_asked < nd6_mmaxtries) {
>                       ln->ln_asked++;
> -                     nd6_llinfo_settimer(ln, ND_IFINFO(ifp)->retrans / 1000);
> +                     nd6_llinfo_settimer(ln, ifp->if_nd->retrans / 1000);
>                       nd6_ns_output(ifp, NULL, &dst->sin6_addr, ln, 0);
>               } else {
>                       struct mbuf *m = ln->ln_hold;
> @@ -414,13 +414,13 @@ nd6_llinfo_timer(struct rtentry *rt)
>               /* We need NUD */
>               ln->ln_asked = 1;
>               ln->ln_state = ND6_LLINFO_PROBE;
> -             nd6_llinfo_settimer(ln, ND_IFINFO(ifp)->retrans / 1000);
> +             nd6_llinfo_settimer(ln, ifp->if_nd->retrans / 1000);
>               nd6_ns_output(ifp, &dst->sin6_addr, &dst->sin6_addr, ln, 0);
>               break;
>       case ND6_LLINFO_PROBE:
>               if (ln->ln_asked < nd6_umaxtries) {
>                       ln->ln_asked++;
> -                     nd6_llinfo_settimer(ln, ND_IFINFO(ifp)->retrans / 1000);
> +                     nd6_llinfo_settimer(ln, ifp->if_nd->retrans / 1000);
>                       nd6_ns_output(ifp, &dst->sin6_addr,
>                           &dst->sin6_addr, ln, 0);
>               } else {
> @@ -766,7 +766,7 @@ nd6_nud_hint(struct rtentry *rt)
>  
>       ln->ln_state = ND6_LLINFO_REACHABLE;
>       if (!ND6_LLINFO_PERMANENT(ln))
> -             nd6_llinfo_settimer(ln, ND_IFINFO(ifp)->reachable);
> +             nd6_llinfo_settimer(ln, ifp->if_nd->reachable);
>  out:
>       if_put(ifp);
>  }
> @@ -1014,7 +1014,7 @@ nd6_ioctl(u_long cmd, caddr_t data, struct ifnet *ifp)
>       switch (cmd) {
>       case SIOCGIFINFO_IN6:
>               NET_LOCK_SHARED();
> -             ndi->ndi = *ND_IFINFO(ifp);
> +             ndi->ndi = *ifp->if_nd;
>               NET_UNLOCK_SHARED();
>               return (0);
>       case SIOCGNBRINFO_IN6:
> @@ -1295,7 +1295,7 @@ nd6_slowtimo(void *ignored_arg)
>       timeout_add_sec(&nd6_slowtimo_ch, ND6_SLOWTIMER_INTERVAL);
>  
>       TAILQ_FOREACH(ifp, &ifnetlist, if_list) {
> -             nd6if = ND_IFINFO(ifp);
> +             nd6if = ifp->if_nd;
>               if (nd6if->basereachable && /* already initialized */
>                   (nd6if->recalctm -= ND6_SLOWTIMER_INTERVAL) <= 0) {
>                       /*
> @@ -1414,7 +1414,7 @@ nd6_resolve(struct ifnet *ifp, struct rtentry *rt0, 
> struct mbuf *m,
>        */
>       if (!ND6_LLINFO_PERMANENT(ln) && ln->ln_asked == 0) {
>               ln->ln_asked++;
> -             nd6_llinfo_settimer(ln, ND_IFINFO(ifp)->retrans / 1000);
> +             nd6_llinfo_settimer(ln, ifp->if_nd->retrans / 1000);
>               nd6_ns_output(ifp, NULL, &satosin6(dst)->sin6_addr, ln, 0);
>       }
>       return (EAGAIN);
> diff --git a/sys/netinet6/nd6.h b/sys/netinet6/nd6.h
> index 53913e67bab..10eee295322 100644
> --- a/sys/netinet6/nd6.h
> +++ b/sys/netinet6/nd6.h
> @@ -76,9 +76,6 @@ struct      in6_ndireq {
>  
>  #include <sys/queue.h>
>  
> -#define ND_IFINFO(ifp) \
> -     ((ifp)->if_nd)
> -
>  struct       llinfo_nd6 {
>       TAILQ_ENTRY(llinfo_nd6) ln_list;
>       struct  rtentry *ln_rt;
> diff --git a/sys/netinet6/nd6_nbr.c b/sys/netinet6/nd6_nbr.c
> index 3701ae49cf4..5f499e5f3e4 100644
> --- a/sys/netinet6/nd6_nbr.c
> +++ b/sys/netinet6/nd6_nbr.c
> @@ -716,7 +716,7 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len)
>                       rtm_send(rt, RTM_RESOLVE, 0, ifp->if_rdomain);
>                       if (!ND6_LLINFO_PERMANENT(ln)) {
>                               nd6_llinfo_settimer(ln,
> -                                 ND_IFINFO(ifp)->reachable);
> +                                 ifp->if_nd->reachable);
>                       }
>               } else {
>                       ln->ln_state = ND6_LLINFO_STALE;
> @@ -806,7 +806,7 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len)
>                               ln->ln_byhint = 0;
>                               if (!ND6_LLINFO_PERMANENT(ln)) {
>                                       nd6_llinfo_settimer(ln,
> -                                         ND_IFINFO(ifp)->reachable);
> +                                         ifp->if_nd->reachable);
>                               }
>                       } else {
>                               if (lladdr && llchange) {
> @@ -1129,7 +1129,7 @@ nd6_dad_start(struct ifaddr *ifa)
>       dp->dad_ns_icount = dp->dad_na_icount = 0;
>       dp->dad_ns_ocount = dp->dad_ns_tcount = 0;
>       nd6_dad_ns_output(dp, ifa);
> -     nd6_dad_starttimer(dp, ND_IFINFO(ifa->ifa_ifp)->retrans);
> +     nd6_dad_starttimer(dp, ifa->ifa_ifp->if_nd->retrans);
>  }
>  
>  /*
> @@ -1211,7 +1211,7 @@ nd6_dad_timer(void *xifa)
>                * We have more NS to go.  Send NS packet for DAD.
>                */
>               nd6_dad_ns_output(dp, ifa);
> -             nd6_dad_starttimer(dp, ND_IFINFO(ifa->ifa_ifp)->retrans);
> +             nd6_dad_starttimer(dp, ifa->ifa_ifp->if_nd->retrans);
>       } else {
>               /*
>                * We have transmitted sufficient number of DAD packets.
> 

Reply via email to