summaryrefslogtreecommitdiff
path: root/sys/netmpls
AgeCommit message (Collapse)Author
2015-07-20Implemented MPLS pseudowire (mpw(4)) to be used with VPLS and VPWS.Rafael Zalamena
ok mpi@, claudio@.
2015-07-20Kill NETISR_MPLS, from now on we will use interface input handlers to dealRafael Zalamena
with MPLS packets. ok mpi@, claudio@
2015-07-18Abstract the routing table internals behind an rtable_* API.Martin Pieuchot
Code abusing the radix internals for the routing table should now includes <net/rtable.h> and only deal with "struct rtentry". Code using a radix tree for another purpose can still include <net/radix.h>. Inputs from and ok claudio@, mikeb@
2015-07-15m_freem() can handle NULL, do not check for this condition beforehands.Theo de Raadt
ok stsp mpi
2015-06-16Store a unique ID, an interface index, rather than a pointer to theMartin Pieuchot
receiving interface in the packet header of every mbuf. The interface pointer should now be retrieved when necessary with if_get(). If a NULL pointer is returned by if_get(), the interface has probably been destroy/removed and the mbuf should be freed. Such mechanism will simplify garbage collection of mbufs and limit problems with dangling ifp pointers. Tested by jmatthew@ and krw@, discussed with many. ok mikeb@, bluhm@, dlg@
2015-04-10replace the use of ifqueues for most input queues serviced by netisrDavid Gwynne
with niqueues. this change is so big because there's a lot of code that takes pointers to different input queues (eg, ether_input picks between ipv4, ipv6, pppoe, arp, and mpls input queues) and falls through to code to enqueue packets against the pointer. if i changed only one of the input queues id have to add sepearate code paths, one for ifqueues and one for niqueues in each of these places by flipping all these input queues at once i can keep the currently common code common. testing by mpi@ sthen@ and rafael zalamena ok mpi@ sthen@ claudio@ henning@
2015-03-26Use rt_ifa_add(9) and rt_ifa_del(9) to configure MPLS labels.Martin Pieuchot
Since the removal of the link-layer ifa from "struct ifnet" it was impossible to configure MPLS routes on mpe(4). Because just like enc(4), mpe(4) was abusing the link-layer ifa to attach its route entries. So explicitly pass a "glue" ifa to the routing layer. From Rafael Zalamena who discovered this the hardway, thanks! ok claudio@
2015-01-15Do not include 5 header files, including <sys/param.h>Theo de Raadt
ok millert
2014-12-23unifdef some more INET. v4 4life.Ted Unangst
2014-12-05Explicitly include <net/if_var.h> instead of pulling it in <net/if.h>.Martin Pieuchot
ok mikeb@, krw@, bluhm@, tedu@
2014-11-01Rename rtalloc1() into rtalloc(9) and convert its flags to only enableMartin Pieuchot
functionnality instead of a mix of enable/disable. ok bluhm@, jca@
2014-10-14Use rtfree() instead of RTFREE(), NULLify some free'd route pointers andMartin Pieuchot
kill the macro. ok mikeb@, henning@
2014-09-08remove uneeded route.h includesJonathan Gray
ok miod@ mpi@
2014-07-22Fewer <netinet/in_systm.h> !Martin Pieuchot
2013-10-24Remove the number of in6_var.h inclusions by moving some functions andMartin Pieuchot
global variables to in6.h. ok deraadt@
2013-10-17The header file netinet/in_var.h included netinet6/in6_var.h. ThisAlexander Bluhm
created a bunch of useless dependencies. Remove this implicit inclusion and do an explicit #include <netinet6/in6_var.h> when it is needed. OK mpi@ henning@
2013-07-10Keep this copy of the ICMP checksum code in sync with recent changes.Martin Pieuchot
ok lteo@, claudio@, bluhm@, henning@
2013-04-24Move various extern declarations into their corresponding header file.Martin Pieuchot
2013-03-27a little header cleanup. ok deraadtTed Unangst
2013-03-26Remove various read-only *maxlen variables and use IFQ_MAXLEN directly.Martin Pieuchot
ok beck@, mikeb@
2011-07-06cosnistently use IFQ_SET_MAXLEN, surfaced in a discussion with + ok bluhmHenning Brauer
2011-04-04de-guttenberg our stack a bitHenning Brauer
we don't need 7 f***ing copies of the same code to do the protocol checksums (or not, depending on hw capabilities). claudio ok
2011-04-04no need to check the csum flags before calling mpls_do_cksum whichHenning Brauer
immediately checks exactly those flags, claudio ok
2011-03-31- use nitems(); no binary changeJasper Lievisse Adriaanse
ok claudio@
2011-01-21make mpls compile w/o errors when inet6 is not definedMike Belopuhov
diff from form@ who's too busy drinking vodka with pelmeni to commit this; ok claudio
2010-10-15Enable multipath support on the MPLS routing table. ldpd needs this andClaudio Jeker
the priority support that comes together with it. Currently no balancing will happen, only the first path will be used.
2010-10-07Handle IMPLNULL labels (#3) directly in the kernel like we do with theClaudio Jeker
explicit NULL labels. IMPLNULL labels should never ever be seen on the wire but we're realists. michele@ agrees
2010-09-13First shot at ICMP error handling inside an MPLS path. Currently onlyClaudio Jeker
TTL exceeded errors for IPv4 are handled. This makes traceroute through MPLS tunnels work (including RFC 4950 MPLS extension header). "best to get it in." deraadt@
2010-09-08Map the TTL when building the initial MPLS stack from the encapsulatedClaudio Jeker
packet. For IP and IPv6 the corresponding mapttl sysctl needs to be set. This is needed to make traceroute work over MPLS. OK michele@
2010-09-03Use MPLS_INKERNEL_LOOP_MAX instead of 16 when initializing mpls_inkloop.Claudio Jeker
2010-07-15Correct function in panic string. From Christophe FillotClaudio Jeker
2010-07-07Use correct function name in panic()Claudio Jeker
2010-07-07Remove duplicate mtod(). No need to do it twice since the mbuf is notClaudio Jeker
modified in between.
2010-06-09Fix the pop operation to make PHP work again. When popping the last labelClaudio Jeker
by a pop operation we need to forward the packet to the specified nexthop as is. This is done by calling the interface output routine directly. This is different to the local operation since that one injects the packets into ip_input() via netisr. OK michele
2010-06-02Kill the mpls enable sysctl knob. Since MPLS needs to be enabled explicitlyClaudio Jeker
on each interface there is no need for yet another knob. OK michele@
2010-05-31Add a comment about the explicit NULL label handling. We follow RFC 4182Claudio Jeker
which relaxes the position of these labels. After discussion with Christophe Fillot (cf (at) utc fr)
2010-05-31Do not use IF_ENQUEUE() but IF_INPUT_ENQUEUE() instead. The first makroClaudio Jeker
does no overflow checking and does not set the congestion flag. Protocol input queues (inet, inet6, ...) should always use IF_INPUT_ENQUEUE(). OK henning@
2010-05-28Rework the way we handle MPLS in the kernel. Instead of fumbling MPLS intoClaudio Jeker
ether_output() and later on other L2 output functions use a trick and over- load the ifp->if_output() function pointer on MPLS enabled interfaces to go through mpls_output() which will then call the link level output function. By setting IFXF_MPLS on an interface the output pointers are switched. This now allows to cleanup the MPLS input and output pathes and fix mpe(4) so that the MPLS code now actually works for both P and PE systems. Tested by myself and michele (A custom kernel with MPLS and mpe enabled is still needed).
2010-05-07Start cleaning up the mess called rtalloc*. Kill rtalloc2, make rtalloc1Claudio Jeker
accept flags for report and nocloning. Move the rtableid into struct route (with a minor twist for now) and make a few more codepathes rdomain aware. Appart from the pf.c and route.c bits the diff is mostly mechanical. More to come... OK michele, henning
2010-04-22Unbreak build of MPLS enabled kernel. proc.h is needed.Michele Marchetto
ok claudio@
2009-07-09Remove commented variable.Michele Marchetto
2009-04-29Split up functionalities between mpls_input and mpls_output.Michele Marchetto
The former is responsible to handle packets destined to localhost, the latter handles packet that have to be forwarded or the ones originated from localhost. "i like it" claudio@
2009-04-28Introduce a new dummy operation to easily handle packets that have to leaveMichele Marchetto
the MPLS cloud and join ipv4/ipv6 stack. ok claudio@ laurent@
2009-04-17Correctly handle packets that are leaving the MPLS cloud andMichele Marchetto
joining the ipv4/ipv6 stack. Get also rid of the dependency on mpe(4) for packets not belonging to VPN traffic. ok laurent@, ok and input claudio@
2009-02-03Use our own flags to set the operations and not RTF_PROTOX.Michele Marchetto
Switch the padding field into a MPLS one in rt_msghdr to store relevant informations. OK claudio@ laurent@
2009-01-29mpls_operation have to be 2 bytes long to storeMichele Marchetto
operations correctly ok claudio@ laurent@
2009-01-28Get rid of the ugly rtentry hack.Michele Marchetto
We can now act as edge node and allow ipv4 packets to enter a Label Switched Path and not just forwarding MPLS packets. OK claudio@
2009-01-08Fix sockaddr_mpls structure.Michele Marchetto
Now it contains just the label as it must be. This introduces a ugly hack in rtentry that will be removed as soon as possible. OK claudio@
2008-12-15Initial fixup of sockaddr_mpls struct.Michele Marchetto
Remove smpls_in_iface as labels must be per platform unique. Remove smpls_out_iface. It is redudant and can be inferred from nexthop. Move smpls_operation to rt_flags and temporary remove smpls_out_exp. ok claudio@
2008-11-06Fix cvs id tag.Michele Marchetto