On Tue, Mar 16, 2021 at 11:33:53PM +0100, Klemens Nanni wrote:
> Found while reading the code and testing ifconfig(8)'s `tunneldomain' in
> order to document MPLS ioctls (see other thread on tech@).
> 
> mpe(4) consistently uses the softc's rdomain which is tracked
> consistently across the various ioctls.
> 
> mpip(4) always adds and deletes routes in rdomain 0 regardless of the
> `tunneldomain', i.e. the `sc_rdomain' value.
> 
> mpw(4) adds routes with the specified rdomain but always deletes them
> in rdomain 0.
> 
> 
> I'm not a MPLS user on OpenBSD, hence I've only tested this by manually
> creating mpe/mpip/mpw interfaces in order to change their `tunneldomain'
> and/or destroy them again while watching routing messages with
> `route monitor' and verifying routes with `route -nT... show -mpls'.
> 
> 
> Feedback? Objections? OK?

OK claudio@. At start MPLS was only allowed on rdomain 0, when this was
changed I guess some calls where missed in the conversion. This looks fine
to me.
 
> Index: if_mpip.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_mpip.c,v
> retrieving revision 1.13
> diff -u -p -r1.13 if_mpip.c
> --- if_mpip.c 20 Feb 2021 05:03:37 -0000      1.13
> +++ if_mpip.c 16 Mar 2021 22:22:34 -0000
> @@ -145,7 +145,7 @@ mpip_clone_destroy(struct ifnet *ifp)
>  
>       if (sc->sc_smpls.smpls_label) {
>               rt_ifa_del(&sc->sc_ifa, RTF_LOCAL | RTF_MPLS,
> -                 smplstosa(&sc->sc_smpls), 0);
> +                 smplstosa(&sc->sc_smpls), sc->sc_rdomain);
>       }
>       NET_UNLOCK();
>  
> @@ -165,13 +165,13 @@ mpip_set_route(struct mpip_softc *sc, ui
>       int error;
>  
>       rt_ifa_del(&sc->sc_ifa, RTF_MPLS | RTF_LOCAL,
> -         smplstosa(&sc->sc_smpls), 0);
> +         smplstosa(&sc->sc_smpls), sc->sc_rdomain);
>  
>       sc->sc_smpls.smpls_label = shim;
>       sc->sc_rdomain = rdomain;
>  
>       error = rt_ifa_add(&sc->sc_ifa, RTF_MPLS | RTF_LOCAL,
> -         smplstosa(&sc->sc_smpls), 0);
> +         smplstosa(&sc->sc_smpls), sc->sc_rdomain);
>       if (error) {
>               sc->sc_smpls.smpls_label = MPLS_LABEL2SHIM(0);
>               return (error);
> @@ -221,7 +221,7 @@ mpip_del_label(struct mpip_softc *sc)
>  {
>       if (sc->sc_smpls.smpls_label != MPLS_LABEL2SHIM(0)) {
>               rt_ifa_del(&sc->sc_ifa, RTF_MPLS | RTF_LOCAL,
> -                 smplstosa(&sc->sc_smpls), 0);
> +                 smplstosa(&sc->sc_smpls), sc->sc_rdomain);
>       }
>  
>       sc->sc_smpls.smpls_label = MPLS_LABEL2SHIM(0);
> Index: if_mpw.c
> ===================================================================
> RCS file: /cvs/src/sys/net/if_mpw.c,v
> retrieving revision 1.59
> diff -u -p -r1.59 if_mpw.c
> --- if_mpw.c  21 Aug 2020 22:59:27 -0000      1.59
> +++ if_mpw.c  16 Mar 2021 22:22:33 -0000
> @@ -323,7 +323,7 @@ mpw_del_label(struct mpw_softc *sc)
>  
>       if (sc->sc_smpls.smpls_label != MPLS_LABEL2SHIM(0)) {
>               rt_ifa_del(&sc->sc_ifa, RTF_MPLS | RTF_LOCAL,
> -                 smplstosa(&sc->sc_smpls), 0);
> +                 smplstosa(&sc->sc_smpls), sc->sc_rdomain);
>       }
>  
>       sc->sc_smpls.smpls_label = MPLS_LABEL2SHIM(0);
> 

-- 
:wq Claudio

Reply via email to