Userspace Routing
=================

Userspace Routing (USR) allows Network Expect to make routing decisions
in userspace, without relying on the operating system's kernel. The
advantage of this is that it allows to maintain a separate routing table
and gives great portability across the different platforms where Network
Expect runs.

Requirements:

- Needs to be modular so different address families (IPv4, IPv6, NetIO,
etc.) can be supported, or that the same address family is supported
by different modules. The module to be used is selected through the -o
switch of commands that send PDUs. Module are initialized at speaker
creation time. In other words, a USR module is associated with a
speaker.

- There needs to be support for different routing tables. Speakers that
use USR for routing decisions need to store a pointer to the specific
routing table they are using.

- Need to provide support for querying the routing table in a very
simple and very efficient way.
