When I decided to use in6_ifaddloop() for IPv4 I barely though about
the name of the function.  Recently mikeb@ told me that the name is
confusing, especially because I'm trying to turn the "loopback hack"
into "local routes".

So here's a diff to rename these functions and to make them return
the error code of rtrequest9(9), ignored for the moment.

Ok?

Index: share/man/man9/Makefile
===================================================================
RCS file: /home/ncvs/src/share/man/man9/Makefile,v
retrieving revision 1.222
diff -u -p -r1.222 Makefile
--- share/man/man9/Makefile     4 Nov 2014 23:27:02 -0000       1.222
+++ share/man/man9/Makefile     20 Nov 2014 14:28:48 -0000
@@ -325,8 +325,8 @@ MLINKS+=rssadapt.9 ieee80211_rssadapt_ch
        rssadapt.9 ieee80211_rssadapt_updatestats.9
 MLINKS+=route.9 rt_lookup.9 \
        route.9 rt_setgate.9 route.9 rtredirect.9 route.9 rtdeletemsg.9
-MLINKS+=rt_ifa_add.9 rt_ifa_del.9 rt_ifa_add.9 rt_ifa_addloop.9 \
-       rt_ifa_add.9 rt_ifa_delloop.9
+MLINKS+=rt_ifa_add.9 rt_ifa_del.9 rt_ifa_add.9 rt_ifa_addlocal.9 \
+       rt_ifa_add.9 rt_ifa_dellocal.9
 MLINKS+=rt_timer_add.9 rt_timer_queue_create.9 \
        rt_timer_add.9 rt_timer_queue_count.9 \
        rt_timer_add.9 rt_timer_queue_change.9 \
Index: share/man/man9/rt_ifa_add.9
===================================================================
RCS file: /home/ncvs/src/share/man/man9/rt_ifa_add.9,v
retrieving revision 1.3
diff -u -p -r1.3 rt_ifa_add.9
--- share/man/man9/rt_ifa_add.9 15 Oct 2014 11:58:13 -0000      1.3
+++ share/man/man9/rt_ifa_add.9 20 Nov 2014 14:28:48 -0000
@@ -20,8 +20,8 @@
 .Sh NAME
 .Nm rt_ifa_add ,
 .Nm rt_ifa_del ,
-.Nm rt_ifa_addloop ,
-.Nm rt_ifa_delloop
+.Nm rt_ifa_addlocal ,
+.Nm rt_ifa_dellocal
 .Nd add or delete routing entries associated with an address
 .Sh SYNOPSIS
 .In sys/types.h
@@ -32,14 +32,14 @@
 .Fn rt_ifa_add "struct ifaddr *ifa" "int flags" "struct sockaddr *dst"
 .Ft int
 .Fn rt_ifa_del "struct ifaddr *ifa" "int flags" "struct sockaddr *dst"
-.Ft void
-.Fn rt_ifa_addloop "struct ifaddr *ifa"
-.Ft void
-.Fn rt_ifa_delloop "struct ifaddr *ifa"
+.Ft int
+.Fn rt_ifa_addlocal "struct ifaddr *ifa"
+.Ft int
+.Fn rt_ifa_dellocal "struct ifaddr *ifa"
 .Sh DESCRIPTION
 These functions create and delete routing entries required by the network
 stack and managed by the kernel.
-.Bl -tag -width rt_ifa_addloopxx
+.Bl -tag -width rt_ifa_addlocalxx
 .It Fn rt_ifa_add
 Creates and associates a connected routing entry with
 .Fa ifa .
@@ -66,7 +66,7 @@ Connected routing entries have a priorit
 .It Fn rt_ifa_del
 Removes the connected routing entry associated with
 .Fa ifa .
-.It Fn rt_ifa_addloop
+.It Fn rt_ifa_addlocal
 Creates and associates a local routing entry
 with
 .Fa ifa .
@@ -79,21 +79,23 @@ They have the lowest priority available,
 and contain a special flag,
 .Dv RTF_LOCAL ,
 that can be checked to determine if the address is configured on the system.
-.It Fn rt_ifa_delloop
+.It Fn rt_ifa_dellocal
 Removes the local routing entry associated with
 .Fa ifa .
 .El
 .Sh CONTEXT
 .Fn rt_ifa_add ,
 .Fn rt_ifa_del ,
-.Fn rt_ifa_addloop ,
+.Fn rt_ifa_addlocal ,
 and
-.Fn rt_ifa_delloop
+.Fn rt_ifa_dellocal
 can be called during autoconf, from process context, or from interrupt context.
 .Sh RETURN VALUES
-.Fn rt_ifa_add
+.Fn rt_ifa_add ,
+.Fn rt_ifa_del ,
+.Fn rt_ifa_addlocal ,
 and
-.Fn rt_ifa_del
+.Fn rt_ifa_dellocal
 will return
 .Dv 0
 on success and the return value of
Index: sys/net/route.c
===================================================================
RCS file: /home/ncvs/src/sys/net/route.c,v
retrieving revision 1.190
diff -u -p -r1.190 route.c
--- sys/net/route.c     10 Nov 2014 10:38:46 -0000      1.190
+++ sys/net/route.c     20 Nov 2014 14:28:48 -0000
@@ -1182,13 +1182,14 @@ rt_ifa_del(struct ifaddr *ifa, int flags
 }
 
 /*
- * Add ifa's address as a loopback rtentry.
+ * Add ifa's address as a local rtentry.
  */
-void
-rt_ifa_addloop(struct ifaddr *ifa)
+int
+rt_ifa_addlocal(struct ifaddr *ifa)
 {
        struct rtentry *rt;
        u_int flags = RTF_HOST|RTF_LOCAL;
+       int error = 0;
 
        /*
         * If the configured address correspond to the magical "any"
@@ -1199,13 +1200,13 @@ rt_ifa_addloop(struct ifaddr *ifa)
        switch (ifa->ifa_addr->sa_family) {
        case AF_INET:
                if (satosin(ifa->ifa_addr)->sin_addr.s_addr == INADDR_ANY)
-                       return;
+                       return (0);
                break;
 #ifdef INET6
        case AF_INET6:
                if (IN6_ARE_ADDR_EQUAL(&satosin6(ifa->ifa_addr)->sin6_addr,
                    &in6addr_any))
-                       return;
+                       return (0);
                break;
 #endif
        default:
@@ -1218,19 +1219,22 @@ rt_ifa_addloop(struct ifaddr *ifa)
        /* If there is no loopback entry, allocate one. */
        rt = rtalloc(ifa->ifa_addr, 0, ifa->ifa_ifp->if_rdomain);
        if (rt == NULL || !ISSET(rt->rt_flags, flags));
-               rt_ifa_add(ifa, RTF_UP | flags, ifa->ifa_addr);
+               error = rt_ifa_add(ifa, RTF_UP | flags, ifa->ifa_addr);
        if (rt)
                rtfree(rt);
+
+       return (error);
 }
 
 /*
- * Remove loopback rtentry of ifa's addresss if it exists.
+ * Remove local rtentry of ifa's addresss if it exists.
  */
-void
-rt_ifa_delloop(struct ifaddr *ifa)
+int
+rt_ifa_dellocal(struct ifaddr *ifa)
 {
        struct rtentry *rt;
        u_int flags = RTF_HOST|RTF_LOCAL;
+       int error = 0;
 
        /*
         * We do not add local routes for such address, so do not bother
@@ -1239,13 +1243,13 @@ rt_ifa_delloop(struct ifaddr *ifa)
        switch (ifa->ifa_addr->sa_family) {
        case AF_INET:
                if (satosin(ifa->ifa_addr)->sin_addr.s_addr == INADDR_ANY)
-                       return;
+                       return (0);
                break;
 #ifdef INET6
        case AF_INET6:
                if (IN6_ARE_ADDR_EQUAL(&satosin6(ifa->ifa_addr)->sin6_addr,
                    &in6addr_any))
-                       return;
+                       return (0);
                break;
 #endif
        default:
@@ -1265,9 +1269,11 @@ rt_ifa_delloop(struct ifaddr *ifa)
         */
        rt = rtalloc(ifa->ifa_addr, 0, ifa->ifa_ifp->if_rdomain);
        if (rt != NULL && ISSET(rt->rt_flags, flags))
-               rt_ifa_del(ifa, flags, ifa->ifa_addr);
+               error = rt_ifa_del(ifa, flags, ifa->ifa_addr);
        if (rt)
                rtfree(rt);
+
+       return (error);
 }
 
 /*
Index: sys/net/route.h
===================================================================
RCS file: /home/ncvs/src/sys/net/route.h,v
retrieving revision 1.100
diff -u -p -r1.100 route.h
--- sys/net/route.h     1 Nov 2014 21:40:38 -0000       1.100
+++ sys/net/route.h     20 Nov 2014 14:28:48 -0000
@@ -382,8 +382,8 @@ void         rtfree(struct rtentry *);
 int     rt_getifa(struct rt_addrinfo *, u_int);
 int     rt_ifa_add(struct ifaddr *, int, struct sockaddr *);
 int     rt_ifa_del(struct ifaddr *, int, struct sockaddr *);
-void    rt_ifa_addloop(struct ifaddr *);
-void    rt_ifa_delloop(struct ifaddr *);
+int     rt_ifa_addlocal(struct ifaddr *);
+int     rt_ifa_dellocal(struct ifaddr *);
 int     rtioctl(u_long, caddr_t, struct proc *);
 void    rtredirect(struct sockaddr *, struct sockaddr *,
                         struct sockaddr *, int, struct sockaddr *,
Index: sys/netinet/in.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/in.c,v
retrieving revision 1.109
diff -u -p -r1.109 in.c
--- sys/netinet/in.c    20 Nov 2014 10:06:54 -0000      1.109
+++ sys/netinet/in.c    20 Nov 2014 14:28:48 -0000
@@ -621,7 +621,7 @@ in_ifinit(struct ifnet *ifp, struct in_i
         * position gets updated in case the key changes.
         */
        if (!newaddr) {
-               rt_ifa_delloop(&ia->ia_ifa);
+               rt_ifa_dellocal(&ia->ia_ifa);
                ifa_del(ifp, &ia->ia_ifa);
        }
        oldaddr = ia->ia_addr;
@@ -694,7 +694,7 @@ out:
         * carp(4).
         */
        ifa_add(ifp, &ia->ia_ifa);
-       rt_ifa_addloop(&ia->ia_ifa);
+       rt_ifa_addlocal(&ia->ia_ifa);
 
        if (error && newaddr)
                in_purgeaddr(&ia->ia_ifa);
@@ -712,7 +712,7 @@ in_purgeaddr(struct ifaddr *ifa)
 
        in_ifscrub(ifp, ia);
 
-       rt_ifa_delloop(&ia->ia_ifa);
+       rt_ifa_dellocal(&ia->ia_ifa);
        ifa_del(ifp, &ia->ia_ifa);
 
        TAILQ_REMOVE(&in_ifaddr, ia, ia_list);
Index: sys/netinet6/in6.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet6/in6.c,v
retrieving revision 1.145
diff -u -p -r1.145 in6.c
--- sys/netinet6/in6.c  20 Nov 2014 09:55:57 -0000      1.145
+++ sys/netinet6/in6.c  20 Nov 2014 14:28:48 -0000
@@ -1062,7 +1062,7 @@ in6_purgeaddr(struct ifaddr *ifa)
        }
 
        if (ia6_count == 1)
-               rt_ifa_delloop(&(ia6->ia_ifa));
+               rt_ifa_dellocal(&(ia6->ia_ifa));
 
        /*
         * leave from multicast groups we have joined for the interface
@@ -1402,7 +1402,7 @@ in6_ifinit(struct ifnet *ifp, struct in6
                if ((ifp->if_flags & (IFF_LOOPBACK | IFF_POINTOPOINT)) == 0)
                        ia6->ia_ifa.ifa_rtrequest = nd6_rtrequest;
 
-               rt_ifa_addloop(&(ia6->ia_ifa));
+               rt_ifa_addlocal(&(ia6->ia_ifa));
        }
 
        return (error);

Reply via email to