| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
is no point in keeping an unused level of abstraction.
ok mikeb@, claudio@
|
|
|
|
|
|
|
|
| |
for ART.
While here sync the two remaining mix() macros.
ok chris@, dlg@
|
|
|
|
| |
From David Hill; OK mpi@; tested kspillner@; tweaks bluhm@
|
|
|
|
|
|
|
|
|
|
| |
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@
|
|
|
|
|
|
| |
to never return the internal RNF_ROOT nodes. This removes the checks
in the callee to verify that not an RNF_ROOT node was returned.
OK mpi@
|
|
|
|
|
|
|
| |
to the multipath chain when removing routes. This fixes the sbin/route
testcases 17-19 and fixes an annoying opsfd bug because of routes
wrongly marked as multipath ones.
OK deraadt, mpi, sthen, benno, phessler
|
|
|
|
|
|
| |
checking for actual conflict.
ok claudio@, henning@
|
|
|
|
|
| |
long live the one true internet.
ok henning mikeb
|
|
|
|
| |
to include that than rdnvar.h. ok deraadt dlg
|
|
|
|
|
|
| |
functionnality instead of a mix of enable/disable.
ok bluhm@, jca@
|
|
|
|
|
|
| |
rely on "struct route" that should die.
ok claudio@
|
|
|
|
|
|
|
|
| |
of rn_delete was changed). The mpath code gets a much better
rn_mpath_next() function that allows looping through the dupedkey list
based on prio, any or only active routes. This solves the issues seen
with failed deletes of down routes.
Commit this now so that it gets tested. Both sthen@ and blambert@ agree.
|
|
|
|
| |
OK mpi@ and krw@
|
|
|
|
| |
return the number of active aka RTF_UP multipath routes. OK grep & gcc
|
|
|
|
|
|
| |
since rt_mpath_prio() and rt_mpath_next() ensure that this is always the
case.
OK henning@
|
|
|
|
|
|
|
| |
move them to the corresponding header with an appropriate comment if
necessary.
ok guenther@
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
hit this case with a root node that comes with no real rtentry attached to it.
Problem found by Mischa Diehm, OK henning@
|
|
|
|
|
|
| |
wrong which resulted in a NULL rm_leaf which caussed a NULL deref a bit later.
Check against the right route nodes to figure out if the rm_leaf needs to be
updated. Tested by bluhm@, OK dlg@
|
|
|
|
|
|
|
|
|
|
|
|
| |
Until now RNF_NORMAL masks did not use the refcount because only one route
in a particular subtree could have this mask. With multipath routing this is
no longer correct. The result was wrong backtracking information beeing stored
in the radix tree and so cretain lookups ended up on the wrong multipath nodes.
Use rm_refs for RNF_NORMAL masks so that all multipath routes are able
to point to the same radix_mask entry. Additional logic ensures that rm_leaf
always points back to the head of the multipath rn_dupedkey chain.
Tested by dlg@, gollo@, david@, sthen@ and a few more
This can have my OK dlg@
|
|
|
|
|
|
| |
belongs to the same multipath group instead of own wrong check which failed
to look at the priority.
Found and diff tested by gollo@
|
|
|
|
|
|
|
|
| |
which are considered down will no be marked ~RTF_UP and so multipath routing
will start to work as expected and not pump 50% of the traffic to nirvana.
Most of the magic happens in rn_mpath_reprio() which fiddles with the
routing table internals. The rest is more straight forward.
get it in deraadt@
|
|
|
|
|
|
|
| |
not only over routes of the same prio. This makes it possible to modify
rt_mpath_matchgate() so that if only gateway is specified without a specific
priority it will scan the full list and not only the first routes.
This is also needed for upcoming link state tracking.
|
|
|
|
|
|
|
|
|
| |
and the one route with the lowest number wins. This will be used by the
routing daemons to resolve the synchronisations issue in case of conflicts.
The nasty bits of this are in the multipath code. If no priority is specified
the kernel will choose an appropriate priority.
Looked at by a few people at n2k8 code is much older
|
|
|
|
|
|
|
| |
seen by krw. This is a prerequisite for upcomming routing priorities:
Always compare the nexthop if one is specified even if it is a non-multipath
route. This mostly affects "route delete" and it will not remove the last
route if previous delete is redone. OK henning@
|
|
|
|
| |
deraadt@.
|
|
|
|
|
| |
route. This mostly affects "route delete" and it will not remove the last
route if previous delete is redone. OK henning@
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To minimise path disruptions, this implements recommendations made in RFC2992 -
the hash-threshold mechanism to select paths based on source/destination IP
address pairs, and inserts multipath routes in the middle of the route table.
To enable multipath distribution, use:
sysctl net.inet.ip.multipath=1
and/or:
sysctl net.inet6.ip6.multipath=1
testing norby@
ok claudio@ henning@ hshoexer@
|
|
|
|
|
|
| |
parameter so they can work on alternate tables. table 0 hardcoded for
many callers yet, that will be adapted step by step.
input + ok claudio norby hshoexer
|
| |
|
| |
|
|
|
|
|
| |
route(8) takes a new -mpath modifier to enter a multipath route.
requested deraadt@, ok itojun@ mcbride@ millert@
|
|
user visible changes:
- you can add multiple routes with same key (route add A B then route add A C)
- you have to specify gateway address if there are multiple entries on the table
(route delete A B, instead of route delete A)
kernel change:
- radix_node_head has an extra entry
- rnh_deladdr takes extra argument
TODO:
- actually take advantage of multipath (rtalloc -> rtalloc_mpath)
|