On 2018 Apr 18 (Wed) at 19:49:41 +0200 (+0200), Florian Obser wrote:
:On Wed, Apr 18, 2018 at 05:05:59PM +0200, Florian Obser wrote:
:> This is to inform userland (i.e. slaacd(8)) when duplicate address
:> detection finishes.
:> 
:> Not a big fan of the lock/unlock dance but I guess it can't be helped
:> for now.
:> 
:> Comments, OKs?
:
:Theo points out that I suck at naming things. I guess we already knew
:that.
:
:How about RTM_CHGADDRATTR, we are changing the attribute of an
:address. Also fixes a tab vs. space in previous.
:

this looks fine, OK


:diff --git net/route.h net/route.h
:index 3c89348cb43..5fa12578e45 100644
:--- net/route.h
:+++ net/route.h
:@@ -241,6 +241,7 @@ struct rt_msghdr {
: #define RTM_INVALIDATE        0x11    /* Invalidate cache of L2 route */
: #define RTM_BFD               0x12    /* bidirectional forwarding detection */
: #define RTM_PROPOSAL  0x13    /* proposal for netconfigd */
:+#define RTM_CHGADDRATTR       0x14    /* address attribute change */
: 
: #define RTV_MTU               0x1     /* init or lock _mtu */
: #define RTV_HOPCOUNT  0x2     /* init or lock _hopcount */
:diff --git netinet6/nd6_nbr.c netinet6/nd6_nbr.c
:index cb5c04c24ed..ef1644aa6f6 100644
:--- netinet6/nd6_nbr.c
:+++ netinet6/nd6_nbr.c
:@@ -1102,6 +1102,11 @@ nd6_dad_start(struct ifaddr *ifa)
:       KASSERT(ia6->ia6_flags & IN6_IFF_TENTATIVE);
:       if ((ia6->ia6_flags & IN6_IFF_ANYCAST) || (!ip6_dad_count)) {
:               ia6->ia6_flags &= ~IN6_IFF_TENTATIVE;
:+
:+              KERNEL_LOCK();
:+              rtm_addr(RTM_CHGADDRATTR, ifa);
:+              KERNEL_UNLOCK();
:+
:               return;
:       }
: 
:@@ -1250,6 +1255,10 @@ nd6_dad_timer(void *xifa)
:                        */
:                       ia6->ia6_flags &= ~IN6_IFF_TENTATIVE;
: 
:+                      KERNEL_LOCK();
:+                      rtm_addr(RTM_CHGADDRATTR, ifa);
:+                      KERNEL_UNLOCK();
:+
:                       nd6log((LOG_DEBUG,
:                           "%s: DAD complete for %s - no duplicates found\n",
:                           ifa->ifa_ifp->if_xname,
:@@ -1293,6 +1302,11 @@ nd6_dad_duplicated(struct dadq *dp)
:           ia6->ia_ifp->if_xname);
: 
:       TAILQ_REMOVE(&dadq, dp, dad_list);
:+
:+      KERNEL_LOCK();
:+      rtm_addr(RTM_CHGADDRATTR, dp->dad_ifa);
:+      KERNEL_UNLOCK();
:+
:       ifafree(dp->dad_ifa);
:       free(dp, M_IP6NDP, sizeof(*dp));
:       ip6_dad_pending--;
:
:
:
:-- 
:I'm not entirely sure you are real.
:

-- 
Worst Vegetable of the Year:
        The brussels sprout.  This is also the worst vegetable of next
        year.
                -- Steve Rubenstein

Reply via email to