Merge pull request #4 from cjdoucette/u4id

Request to merge the U4ID principal
XIA/U4ID: minor code review

This patch doesn't change code semantics,
it just rewrites barely used variables, and adds notes.
XIA/U4ID: add support for daisy-chain DST destroy

U4ID principal should not assume that
method dst->ops->destroy is NULL while in its delivery method.
XIA/U4ID: avoid double deallocation
XIA/U4ID: improve main_input_output()

- Deallocate @skb when there's no route.
- Avoid race condition at @sk.
- Shorten RCU read lock.
XIA/U4ID: fix reference accounting

u4id_udp_encap_recv() had an unbalanced decrement of reference
at skb->dev.
XIA/U4ID: simplify local_free_u4id()

This patch makes it clear that there shouldn't be any code path
that frees a local U4ID entry without a listening socket.
XIA/U4ID: use custom dst_ops for U4ID tunnels

Since all XDST entries by default share a reference to
net/xia/route.c:xip_dst_ops_template, when u4id_deliver changed
the destroy field of struct dst_ops it was forcing *every* XDST
entry to use destroy_u4id_tunnel_dest.

Upon module loading, the U4ID principal now sets up its own
struct dst_ops, using all the fields from xip_dst_ops_template
but changes the destroy field. When an XDST entry needs to be
associated with a U4ID tunnel destination, this new struct
dst_ops is used.