On 18/03/15(Wed) 22:58, Rafael Zalamena wrote:
> mpe(4) is not installing routes / label in the interface in -current.
> 
> Snippet:
> # ifconfig mpe0 mplslabel 100
> ifconfig: SIOCSETLABEL: Network is unreachable
> 
> Quickly looking at the code I found out that since the old MPLS route
> installer function (mpe_newlabel) doesn't include an ifa pointer later
> on rt_getifa() will fail and return ENETUNREACH.
> 
> Trace:
> mpe_newlabel -> rtrequest1 -> switch (RTM_ADD) -> rt_getifa
> 
> I tried moving it to rt_ifa_add() using my old VPLS datapath diffs,
> but there are some other problems like panic()s or NULL MPLS routes
> installed for mpeX that might be happening because of my poor
> understanding of the new network stack design (no more
> ifp->if_lladdr).

So mpe(4) was also abusing if_lladdr?

> (this commit: 
> https://github.com/rzalamena/vpls-src/commit/675216b75b665f42b06bd2b0b18cbd0deab84f57)

This is good.  You can initialize sc_ifa in mpe_clone_create(), look at
how enc(4) does it.

I'd also suggest using rt_ifa_add/del() directly and moving the "rdomain
= 0" trick to these functions with an appropriate comment. 

> NOTE: to test mpe(4) I used the claudio@ MPLS article:
> http://2011.eurobsdcon.org/papers/jeker/MPLS.pdf
>
> 
> NOTE 2:
> Panic trace:
> rt_msg2()
> sysctl_dumpentry()
> rn_walktree()
> sysctl_rtable()
> sys___sysctl()
> syscall()

With your diff I can create a mpe0 interface but this trace does not
contain enough information for me to debug it.  What's the panic
message?  What where you doing, what's the ps output?

Reply via email to