Initialize the routing table before domains.
authormpi <mpi@openbsd.org>
Wed, 7 Oct 2015 10:50:35 +0000 (10:50 +0000)
committermpi <mpi@openbsd.org>
Wed, 7 Oct 2015 10:50:35 +0000 (10:50 +0000)
commit2d6ba272844404ee18c3ea79fa20f89140afb4f2
tree529174c49d85123b5ed8aefa72311d614c0f6d61
parent26cf605ac021cb49566b375e773978e4ad305ae6
Initialize the routing table before domains.

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@
15 files changed:
sys/kern/init_main.c
sys/net/art.c
sys/net/art.h
sys/net/pfkey.c
sys/net/pipex.c
sys/net/radix.c
sys/net/route.c
sys/net/route.h
sys/net/rtable.c
sys/net/rtable.h
sys/netinet/in_proto.c
sys/netinet/ip_spd.c
sys/netinet6/in6_proto.c
sys/netmpls/mpls_proto.c
sys/sys/domain.h