On Sat, Sep 12, 2015 at 10:06:12AM +0200, Martin Pieuchot wrote:
> Now that rtrequest1(9) properly set RTF_UP when a route is added,
> there's no need to pass it to rt_ifa_add(9).
>
> rt_ifa_del(9) never needed it, but it has been set for documentation.
>
> ok?
Yes, go for it. OK claudio@
> Index: net/route.c
> ===================================================================
> RCS file: /cvs/src/sys/net/route.c,v
> retrieving revision 1.237
> diff -u -p -r1.237 route.c
> --- net/route.c 11 Sep 2015 20:03:40 -0000 1.237
> +++ net/route.c 12 Sep 2015 08:03:05 -0000
> @@ -1322,7 +1322,7 @@ rt_ifa_addlocal(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))
> - error = rt_ifa_add(ifa, RTF_UP | flags, ifa->ifa_addr);
> + error = rt_ifa_add(ifa, flags, ifa->ifa_addr);
> if (rt)
> rtfree(rt);
>
> Index: net/if_mpe.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_mpe.c,v
> retrieving revision 1.46
> diff -u -p -r1.46 if_mpe.c
> --- net/if_mpe.c 30 Jun 2015 13:54:42 -0000 1.46
> +++ net/if_mpe.c 12 Sep 2015 08:01:30 -0000
> @@ -124,7 +124,7 @@ mpe_clone_destroy(struct ifnet *ifp)
>
> if (mpeif->sc_smpls.smpls_label) {
> s = splsoftnet();
> - rt_ifa_del(&mpeif->sc_ifa, RTF_MPLS | RTF_UP,
> + rt_ifa_del(&mpeif->sc_ifa, RTF_MPLS,
> smplstosa(&mpeif->sc_smpls));
> splx(s);
> }
> @@ -323,12 +323,12 @@ mpeioctl(struct ifnet *ifp, u_long cmd,
> s = splsoftnet();
> if (ifm->sc_smpls.smpls_label) {
> /* remove old MPLS route */
> - rt_ifa_del(&ifm->sc_ifa, RTF_MPLS | RTF_UP,
> + rt_ifa_del(&ifm->sc_ifa, RTF_MPLS,
> smplstosa(&ifm->sc_smpls));
> }
> /* add new MPLS route */
> ifm->sc_smpls.smpls_label = shim.shim_label;
> - error = rt_ifa_add(&ifm->sc_ifa, RTF_MPLS | RTF_UP,
> + error = rt_ifa_add(&ifm->sc_ifa, RTF_MPLS,
> smplstosa(&ifm->sc_smpls));
> splx(s);
> if (error) {
> @@ -342,7 +342,7 @@ mpeioctl(struct ifnet *ifp, u_long cmd,
> if (ifr->ifr_rdomainid != ifp->if_rdomain) {
> if (ifm->sc_smpls.smpls_label) {
> s = splsoftnet();
> - rt_ifa_add(&ifm->sc_ifa, RTF_MPLS | RTF_UP,
> + rt_ifa_add(&ifm->sc_ifa, RTF_MPLS,
> smplstosa(&ifm->sc_smpls));
> splx(s);
> }
> Index: net/if_mpw.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_mpw.c,v
> retrieving revision 1.5
> diff -u -p -r1.5 if_mpw.c
> --- net/if_mpw.c 10 Sep 2015 16:41:30 -0000 1.5
> +++ net/if_mpw.c 12 Sep 2015 08:01:30 -0000
> @@ -128,7 +128,7 @@ mpw_clone_destroy(struct ifnet *ifp)
>
> if (sc->sc_smpls.smpls_label) {
> s = splsoftnet();
> - rt_ifa_del(&sc->sc_ifa, RTF_MPLS | RTF_UP,
> + rt_ifa_del(&sc->sc_ifa, RTF_MPLS,
> smplstosa(&sc->sc_smpls));
> splx(s);
> }
> @@ -189,7 +189,7 @@ mpw_ioctl(struct ifnet *ifp, u_long cmd,
> sin = (struct sockaddr_in *) &imr.imr_nexthop;
> if (sin->sin_addr.s_addr == 0) {
> s = splsoftnet();
> - if (rt_ifa_del(&sc->sc_ifa, RTF_MPLS | RTF_UP,
> + if (rt_ifa_del(&sc->sc_ifa, RTF_MPLS,
> smplstosa(&sc->sc_smpls)) == 0)
> sc->sc_smpls.smpls_label = 0;
> splx(s);
> @@ -220,11 +220,11 @@ mpw_ioctl(struct ifnet *ifp, u_long cmd,
> if (sc->sc_smpls.smpls_label != imr.imr_lshim.shim_label) {
> s = splsoftnet();
> if (sc->sc_smpls.smpls_label)
> - rt_ifa_del(&sc->sc_ifa, RTF_MPLS | RTF_UP,
> + rt_ifa_del(&sc->sc_ifa, RTF_MPLS,
> smplstosa(&sc->sc_smpls));
>
> sc->sc_smpls.smpls_label = imr.imr_lshim.shim_label;
> - error = rt_ifa_add(&sc->sc_ifa, RTF_MPLS | RTF_UP,
> + error = rt_ifa_add(&sc->sc_ifa, RTF_MPLS,
> smplstosa(&sc->sc_smpls));
> splx(s);
> if (error != 0) {
> Index: netinet/in.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/in.c,v
> retrieving revision 1.122
> diff -u -p -r1.122 in.c
> --- netinet/in.c 9 Sep 2015 20:12:36 -0000 1.122
> +++ netinet/in.c 12 Sep 2015 08:01:30 -0000
> @@ -713,7 +713,7 @@ in_purgeaddr(struct ifaddr *ifa)
> int
> in_addhost(struct in_ifaddr *ia, struct sockaddr_in *dst)
> {
> - return rt_ifa_add(&ia->ia_ifa, RTF_UP|RTF_HOST, sintosa(dst));
> + return rt_ifa_add(&ia->ia_ifa, RTF_HOST, sintosa(dst));
> }
>
> int
> @@ -731,13 +731,12 @@ in_insert_prefix(struct in_ifaddr *ia)
> struct ifaddr *ifa = &ia->ia_ifa;
> int error;
>
> - error = rt_ifa_add(ifa, RTF_UP | RTF_CLONING | RTF_CONNECTED,
> - ifa->ifa_addr);
> + error = rt_ifa_add(ifa, RTF_CLONING | RTF_CONNECTED, ifa->ifa_addr);
> if (error)
> return (error);
>
> if (ia->ia_broadaddr.sin_addr.s_addr != 0)
> - error = rt_ifa_add(ifa, RTF_UP | RTF_HOST | RTF_BROADCAST,
> + error = rt_ifa_add(ifa, RTF_HOST | RTF_BROADCAST,
> ifa->ifa_broadaddr);
>
> return (error);
> Index: netinet6/in6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6.c,v
> retrieving revision 1.174
> diff -u -p -r1.174 in6.c
> --- netinet6/in6.c 10 Sep 2015 16:39:39 -0000 1.174
> +++ netinet6/in6.c 12 Sep 2015 08:01:30 -0000
> @@ -501,8 +501,8 @@ in6_control(struct socket *so, u_long cm
> }
>
> s = splsoftnet();
> - error = rt_ifa_add(&ia6->ia_ifa,
> - RTF_UP|RTF_CLONING|RTF_CONNECTED, ia6->ia_ifa.ifa_addr);
> + error = rt_ifa_add(&ia6->ia_ifa, RTF_CLONING | RTF_CONNECTED,
> + ia6->ia_ifa.ifa_addr);
> if (error) {
> in6_purgeaddr(&ia6->ia_ifa);
> splx(s);
> @@ -807,7 +807,7 @@ in6_update_ifa(struct ifnet *ifp, struct
> info.rti_info[RTAX_NETMASK] = sin6tosa(&mltmask);
> info.rti_info[RTAX_IFA] = sin6tosa(&ia6->ia_addr);
> /* XXX: we need RTF_CLONING to fake nd6_rtrequest */
> - info.rti_flags = RTF_UP | RTF_CLONING;
> + info.rti_flags = RTF_CLONING;
> error = rtrequest1(RTM_ADD, &info, RTP_CONNECTED, NULL,
> ifp->if_rdomain);
> if (error)
> @@ -863,7 +863,7 @@ in6_update_ifa(struct ifnet *ifp, struct
> info.rti_info[RTAX_GATEWAY] = sin6tosa(&ia6->ia_addr);
> info.rti_info[RTAX_NETMASK] = sin6tosa(&mltmask);
> info.rti_info[RTAX_IFA] = sin6tosa(&ia6->ia_addr);
> - info.rti_flags = RTF_UP | RTF_CLONING;
> + info.rti_flags = RTF_CLONING;
> error = rtrequest1(RTM_ADD, &info, RTP_CONNECTED, NULL,
> ifp->if_rdomain);
> if (error)
> @@ -1255,7 +1255,7 @@ in6_ifinit(struct ifnet *ifp, struct in6
> if ((ifp->if_flags & IFF_POINTOPOINT) && plen == 128 &&
> ia6->ia_dstaddr.sin6_family == AF_INET6) {
> ifa = &ia6->ia_ifa;
> - error = rt_ifa_add(ifa, RTF_UP | RTF_HOST, ifa->ifa_dstaddr);
> + error = rt_ifa_add(ifa, RTF_HOST, ifa->ifa_dstaddr);
> if (error != 0)
> return (error);
> ia6->ia_flags |= IFA_ROUTE;
> Index: netinet6/in6_ifattach.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6_ifattach.c,v
> retrieving revision 1.95
> diff -u -p -r1.95 in6_ifattach.c
> --- netinet6/in6_ifattach.c 3 Sep 2015 16:42:01 -0000 1.95
> +++ netinet6/in6_ifattach.c 12 Sep 2015 08:01:30 -0000
> @@ -356,7 +356,7 @@ in6_ifattach_linklocal(struct ifnet *ifp
> }
>
> s = splsoftnet();
> - error = rt_ifa_add(&ia6->ia_ifa, RTF_UP|RTF_CLONING|RTF_CONNECTED,
> + error = rt_ifa_add(&ia6->ia_ifa, RTF_CLONING | RTF_CONNECTED,
> ia6->ia_ifa.ifa_addr);
> if (error) {
> in6_purgeaddr(&ia6->ia_ifa);
> Index: netinet6/nd6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/nd6.c,v
> retrieving revision 1.150
> diff -u -p -r1.150 nd6.c
> --- netinet6/nd6.c 10 Sep 2015 17:52:05 -0000 1.150
> +++ netinet6/nd6.c 12 Sep 2015 08:01:30 -0000
> @@ -667,7 +667,7 @@ nd6_lookup(struct in6_addr *addr6, int c
> * called in rtrequest1 via ifa->ifa_rtrequest.
> */
> bzero(&info, sizeof(info));
> - info.rti_flags = RTF_UP | RTF_HOST | RTF_LLINFO;
> + info.rti_flags = RTF_HOST | RTF_LLINFO;
> info.rti_info[RTAX_DST] = sin6tosa(&sin6);
> info.rti_info[RTAX_GATEWAY] =
> (struct sockaddr *)ifp->if_sadl;
> Index: netinet6/nd6_rtr.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/nd6_rtr.c,v
> retrieving revision 1.123
> diff -u -p -r1.123 nd6_rtr.c
> --- netinet6/nd6_rtr.c 11 Sep 2015 08:17:06 -0000 1.123
> +++ netinet6/nd6_rtr.c 12 Sep 2015 08:01:30 -0000
> @@ -1723,7 +1723,7 @@ nd6_prefix_onlink(struct nd_prefix *pr)
> struct nd_prefix *opr;
> struct rtentry *rt;
> char addr[INET6_ADDRSTRLEN];
> - u_long rtflags;
> + u_long rtflags = 0;
> int error;
>
> /* sanity check */
> @@ -1788,9 +1788,7 @@ nd6_prefix_onlink(struct nd_prefix *pr)
> mask6.sin6_addr = pr->ndpr_mask;
>
> if (nd6_need_cache(ifp))
> - rtflags = (RTF_UP | RTF_CLONING | RTF_CONNECTED);
> - else
> - rtflags = RTF_UP;
> + rtflags = RTF_CLONING | RTF_CONNECTED;
>
> bzero(&info, sizeof(info));
> info.rti_flags = rtflags;
>
--
:wq Claudio