Added skeleton of AD principal module
Defined struct xia_ppal_rt_ops

Now a principal can implement its own methods to deal with
its own routing table.
Implemented a basic AD module

The current struct xia_ppal_rt_ops doesn't cover all necessary
functions (e.g. it doesn't have a forwarding function), but
it has enough to support rtnetlink.
Made header <net/xia_fib.h> application friendly
Reorganized DAG code to share with userland

This is just a first step, more has to be done.
Fixed memory leak and improved error messages
Added code to dag.c (second round)

One still has to make adjustments in dag.c to run in userland.
Last review of dag.c (third round)

Fixed some bugs, added defines to compile in userland, and added map for
Not A Type (NAT) principal when XIA module initializes.
More improvements to dag.c

- Modified struct xia_row to include struct xia_xid instead of discrete fields.
- Added functions xia_tytop, xia_idtop, and xia_xidtop.
- Improvement of comments.
- Removed warning when compiled with -Wextra.
Fixed compiling of xia_ppal_ad.ko module

It wasn't being included when the kernel was being compiled.
Fixed a couple of bugs

- Function xia_fib_get_table was inverting routing tables.
- Added xia_fib_exit to allow reloading module xia.
  It has been forgoten because the original code was based on IPv4,
  which never unloads.
- Fixed return code of fib_add_xid when @fxid is duplicated.
Added HID principal

This first version only integrates with XIA's routing table.
Added full support to LXC
Fixed memory leak
Added netdevice notification chain to HID

It allows HID principal to remove neighbors that become unreachable,
and avoid problems with netdev_wait_allrefs.
Added skeleton of NWP

Neighborhood Watch Protocol's skeleton includes:
- Added support for carrying XIP specific data on struct net_device.
- Added field net.xia.hid_state to hold NWP's state for each struct net.
- Made xtbl->fxt_count atomic_t to support concurrency.
- Minor reviews:
  - Replaced malloc/memset to kzalloc.
  - Replaced unregister_pernet_subsys to xia_unregister_pernet_subsys.
  - Adopted __read_mostly for ops static structs.
Added XIA lock table

This lock table is to be used when a principal's rounting table
is edited by any other entity rather than only RTNetlink.
Added HID principal's data in struct net_device

The previous dev->xip_ptr was removed since it because useless.
Moved code that manages neighbor table to nwp.c

The code was also enhanced to keep struct hid_dev
in sync with the table.
New lock mechanishm for XIA routing tables

The previous lock mechanishm simply relied on RTNL lock,
whereas the new one uses:
1. RCU for reads,
2. RTNL lock when RTNL is the only writer,
3. A readers-write spin lock and a table of spin locks for writers.

Although the internals of the new routing tables is rather different for
single writer and multiple writers the interface is the same,
the difference is restricted to the initialization.

Added reference counting to struct fib_xid_table (xtbl) to allow
external references to it.

The new code has been minimally tested.