CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2025/11/26 20:06:59
Modified files:
sys/net : if_mpe.c if_mpip.c if_mpw.c
sys/netmpls : mpls_input.c
Log message:
refactor some mpls input processing for mpe/mpw/mpip.
mpw, mpip, and mpe all add entries to the local mpls fib that points to
themselves, and when these labels are "output" via these interfaces they
then go and push the packets into their input processing. this is all
boilerplate, so it can be factored out and better integrated into the
larger network stack. in particular, we can pass struct netstack through
to the input handlers.
there's some small downsides to this. the main one is that using
if_vinput to dispatch to their input handlers means the vinput
handling has to cope with mpls encapsulated packets. this is easy
except for mpw, where ether_ifattach does a lot of setup that has
to be tweaked for mpls encapsualted ethernet packets.
while here, this changes mpe output so it doesnt have to prepend the
mbuf with the sockaddr it uses as the nexthop on the underlay. it only
had to do that to carry the information across the ifq. if we just don't
use ifq for output then this gets simplified a lot. the only downside is
that you can't use altq on mpe interfaces after this. i dont think this
is a huge loss.
ok claudio@