Age | Commit message (Collapse) | Author |
|
the result returned by rtalloc(4) instead of a compare with NULL. Since
it's assumed this returned `rt' could be non NULL we should use
rtfree(4) in error path. rtfree(4) also allows NULL as input.
ok claudio@
|
|
are constant. Having more const makes MP review easier. More
pointers are mapped read-only in the kernel image.
OK deraadt@ mvs@
|
|
ok gnezdo@ semarie@ mpi@
|
|
OK claudio@
|
|
Range violations are now consistently reported as EOPNOTSUPP.
Previously they were mixed with ENOPROTOOPT.
OK kn@
|
|
ok tedu@ krw@ deraadt@
|
|
The value is no longer needed since the MPLS code got refactored some time
ago.
Found by Thomas Habets (thomas (at) habets se)
|
|
ok dlg@
|
|
problem found by and this fix was tested by groos at xiplink dot com
on bugs@
|
|
before adding it to the routing table. The rtable code is doing memcmp()
of those rt_dest sockaddrs so it is important that they are stored in a
canonical form. To do this struct domain is extended to include the
sockaddr size for this address family.
OK bluhm@ anton@
Reported-by: syzbot+10fe9cd8d0211c562ead@syzkaller.appspotmail.com
|
|
the checksum's width
ok dlg@
|
|
|
|
based on advice seen from mpi@
|
|
mpls_ip_adjttl now patches the checksum rather than check it and
calculate it again. both mpls_ip_adjttl and mpls_ip6_adjttl now
rely on the caller to check the sysctls for whether they should run
or not, which paves the way for making it configurable in mpe via
the tunnel ioctls.
|
|
mpe(4) adds itself ot the mpls rtable with RTF_LOCAL set, which
pushes the packet through mpe_output, which sees RTF_LOCAL can calls
mpe_input. this follows what mpw(4) does, and removes a special
case in mpls_input.
|
|
|
|
this means the current mpls header will be passed along with the
mbuf for mpw to look at. right now this doesn't do anything, but
it will allow for implementation of RFC 6391 (flow aware transport)
and using the exp header for cos.
when mpe gets moved to adding an RTF_LOCAL route, this will be used
for cos and ttl handling.
|
|
the input mechanism for mpw is now that it inserts a tag into the
mpls table with RTF_LOCAL set. mpls_input falls through to calling
the interface output routine (mpw_output in this case) which looks
for that RTF_LOCAL and then calls mpw_input against that mbuf.
ok claudio@ who is keep to apply this semantic to mpe
|
|
previously it would decrement the uint8_t ttl and then check if it
was less than one, which let ttl 0 off the wire wrap to 255 (which
is higher than 1).
|
|
It was used by the original patricia tree.
OK mpi@
|
|
While here fix under MPLS_DEBUG. ok dlg@
|
|
noticed by bijanebrahimi at riseup dot net and confirmed by anton@
|
|
this makes it like all our other protocol family input functions.
mpls_input always looks up the interface the mbuf was received on,
but it's always called by code that already has a reference to that
interface anyway. the result of this is a few less if_get/if_put
calls.
ok mpi@ bluhm@ visa@ claudio@
|
|
Fix the pullup length of the shim header in mpls_do_error().
issue reported by Maxime Villard; OK deraadt@ claudio@
|
|
OK bluhm@
|
|
a new mbuf chain and this chain needs to be returned to the caller else
a use after free may happen.
Issue reported by Maxime Villard
OK bluhm@ deraadt@
|
|
Issue reported by Maxime Villard
OK bluhm@ deraadt@
|
|
proceeding, as described in ifconfig documentation. Discussion with claudio.
Related to a report from maxime.
ok claudio bluhm
|
|
This will help transitionning to an un-KERNEL_LOCK()ed IP
forwarding path.
Disucssed with bluhm@, ok claudio@
|
|
ok dhill@, florian@, bluhm@
|
|
OK claudio@ mpi@
|
|
|
|
basic anyway. Simplifies the code a lot also by calling the mpls sysctl no
longer via the protosw but instead directly.
OK mpi@ on a previous diff. Also tested by renato@ who actually found a bug
which is now fixed.
|
|
ok phessler@
|
|
This could result in a use after free if the route entry was holding
the last reference of the address descriptor.
ok jca@, bluhm@, claudio@
|
|
Being able to add route entries without configured addresses is a nice
feature but this is not my fight. So I'd rather no add another pointer
to ``struct rtentry'' if I'm not removing another one.
|
|
memory.
This will allow to unlink 'sruct rtentry' and 'struct ifaddr' to be able
to add route entries without needing an address.
ok sthen@, visa@, florian@
|
|
dlg@ and mpi@
|
|
route entry in ART.
rt_plen() now represents the prefix length of a route entry and should
be used instead.
For now use a "struct sockaddr_in6" to represent the mask when needed,
this should be then replaced by the prefix length and RTA_NETMASK only
used for compatibility with userland.
ok claudio@
|
|
|
|
them and they make everything so much harder with no gain. Remove the
ifp argument from mpls_input since it is not needed. On the input side
the lookup side is modified a bit when it comes to BOS handling.
Tested in a L3VPN setup with ldpd and bgpd. Commiting now so we can move
on with cleaning up rt_ifp usage. If this breaks L2VPN I will fix it once
reported. OK mpi@
|
|
As a bonus this removes a "#if NCARP > 0", say yeah!
|
|
|
|
The routing table is not an optional component of the network stack
and initializing it inside the "routing domain" requires some ugly
introspection in the domain interface.
This put the rtable* layer at the same level of the if* level. These
two subsystem are organized around the two global data structure used
in the network stack:
- the global &ifnet list, to be used in process context only, and
- the routing table which can be read in interrupt context.
This change makes the rtable_* layer domain-aware and extends the
"struct domain" such that INET, INET6 and MPLS can specify the length
of the binary key used in lookups. This allows us to keep, or move
towards, AF-free route and rtable layers.
While here stop the madness and pass the size of the maximum key length
in *byte* to rn_inithead0().
ok claudio@, mikeb@
|
|
specific places.
ok claudio@, benno@
|
|
needs to see lo0 in the output path.
ok claudio@
|
|
Use instead the RTF_LOCAL flag to loop local traffic back to the
corresponding protocol queue.
With this change rt_ifp is now always the same as rt_ifa->ifa_ifp.
ok claudio@
|
|
needed since rt0 as passed from the upper layer is freed by that layer.
Also if_output does not free the rt so handle that as well.
With and OK mpi@
|
|
length of the key as argument.
This way every consumer of the radix tree has a chance to explicitly
initialize the shared data structures and no longer rely on another
subsystem to do the initialization.
As a bonus ``dom_maxrtkey'' is no longer used an die.
ART kernels should now be fully usable because pf(4) and IPSEC properly
initialized the radix tree.
ok chris@, reyk@
|
|
As a side effect there's no need to run if_attachdomain() after the
list of domains has been built.
ok claudio@, reyk@
|