Spotted this when reviewing Claudio's m_align diff and wondered why we
bail right at the end just before we send the packet. Is there stuff
happening before that's important? Turns out no.

(I suspect this is a belt for suspenders somewhere else in the stack
and we never get here on a carp backup interface).

OK?

diff --git netinet6/nd6_nbr.c netinet6/nd6_nbr.c
index a90f852b25e..6aa2586a082 100644
--- netinet6/nd6_nbr.c
+++ netinet6/nd6_nbr.c
@@ -891,6 +891,12 @@ nd6_na_output(struct ifnet *ifp, struct in6_addr *daddr6,
        int icmp6len, maxlen;
        caddr_t mac = NULL;
 
+#if NCARP > 0
+       /* Do not send NAs for carp addresses if we're not the CARP master. */
+       if (ifp->if_type == IFT_CARP && !carp_iamatch(ifp))
+               return;
+#endif
+
        /* estimate the size of message */
        maxlen = sizeof(*ip6) + sizeof(*nd_na);
        maxlen += (sizeof(struct nd_opt_hdr) + ifp->if_addrlen + 7) & ~7;
@@ -1010,12 +1016,6 @@ nd6_na_output(struct ifnet *ifp, struct in6_addr *daddr6,
        } else
                flags &= ~ND_NA_FLAG_OVERRIDE;
 
-#if NCARP > 0
-       /* Do not send NAs for carp addresses if we're not the CARP master. */
-       if (ifp->if_type == IFT_CARP && !carp_iamatch(ifp))
-               goto bad;
-#endif
-
        ip6->ip6_plen = htons((u_short)icmp6len);
        nd_na->nd_na_flags_reserved = flags;
        nd_na->nd_na_cksum = 0;


-- 
I'm not entirely sure you are real.

Reply via email to