ok benno@
Claudio Jeker([email protected]) on 2018.11.23 10:48:19 +0100:
> This changes rtable_mpath_reprio() to take the prefixlen as argument
> instead of the mask. ART is using the prefixlen internally and since we
> switched to ART some time ago it no longer makes sense to convert the
> prefixlen into a mask and back again.
>
> OK?
> --
> :wq Claudio
>
> Index: net/route.c
> ===================================================================
> RCS file: /cvs/src/sys/net/route.c,v
> retrieving revision 1.378
> diff -u -p -r1.378 route.c
> --- net/route.c 27 Sep 2018 12:36:57 -0000 1.378
> +++ net/route.c 23 Nov 2018 09:44:34 -0000
> @@ -1626,8 +1626,8 @@ rt_if_linkstate_change(struct rtentry *r
>
> /* bring route up */
> rt->rt_flags |= RTF_UP;
> - error = rtable_mpath_reprio(id, rt_key(rt),
> - rt_plen2mask(rt, &sa_mask), rt->rt_priority & RTP_MASK, rt);
> + error = rtable_mpath_reprio(id, rt_key(rt), rt_plen(rt),
> + rt->rt_priority & RTP_MASK, rt);
> } else {
> /*
> * Remove redirected and cloned routes (mainly ARP)
> @@ -1646,8 +1646,8 @@ rt_if_linkstate_change(struct rtentry *r
>
> /* take route down */
> rt->rt_flags &= ~RTF_UP;
> - error = rtable_mpath_reprio(id, rt_key(rt),
> - rt_plen2mask(rt, &sa_mask), rt->rt_priority | RTP_DOWN, rt);
> + error = rtable_mpath_reprio(id, rt_key(rt), rt_plen(rt),
> + rt->rt_priority | RTP_DOWN, rt);
> }
> if_group_routechange(rt_key(rt), rt_plen2mask(rt, &sa_mask));
>
> Index: net/rtable.c
> ===================================================================
> RCS file: /cvs/src/sys/net/rtable.c,v
> retrieving revision 1.66
> diff -u -p -r1.66 rtable.c
> --- net/rtable.c 20 Nov 2018 10:28:08 -0000 1.66
> +++ net/rtable.c 23 Nov 2018 09:43:16 -0000
> @@ -731,13 +731,12 @@ rtable_mpath_capable(unsigned int rtable
>
> int
> rtable_mpath_reprio(unsigned int rtableid, struct sockaddr *dst,
> - struct sockaddr *mask, uint8_t prio, struct rtentry *rt)
> + int plen, uint8_t prio, struct rtentry *rt)
> {
> struct art_root *ar;
> struct art_node *an;
> struct srp_ref sr;
> uint8_t *addr;
> - int plen;
> int error = 0;
>
> ar = rtable_get(rtableid, dst->sa_family);
> @@ -745,9 +744,6 @@ rtable_mpath_reprio(unsigned int rtablei
> return (EAFNOSUPPORT);
>
> addr = satoaddr(ar, dst);
> - plen = rtable_satoplen(dst->sa_family, mask);
> - if (plen == -1)
> - return (EINVAL);
>
> rw_enter_write(&ar->ar_lock);
> an = art_lookup(ar, addr, plen, &sr);
> Index: net/rtable.h
> ===================================================================
> RCS file: /cvs/src/sys/net/rtable.h,v
> retrieving revision 1.21
> diff -u -p -r1.21 rtable.h
> --- net/rtable.h 9 Sep 2018 10:07:38 -0000 1.21
> +++ net/rtable.h 23 Nov 2018 09:43:38 -0000
> @@ -70,6 +70,6 @@ int rtable_walk(unsigned int, sa_famil
> int rtable_mpath_capable(unsigned int, sa_family_t);
> struct rtentry *rtable_mpath_match(unsigned int, struct rtentry *,
> struct sockaddr *, uint8_t);
> -int rtable_mpath_reprio(unsigned int, struct sockaddr *,
> - struct sockaddr *, uint8_t, struct rtentry *);
> +int rtable_mpath_reprio(unsigned int, struct sockaddr *, int,
> + uint8_t, struct rtentry *);
> #endif /* _NET_RTABLE_H_ */
>