mpls: fix oops on module unload

Do not try to kfree the statically allocated data for init_net.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
mpls: fix decrement_ttl for IPv4

The else block eats the goto statement causing the execution to
fallthrough after icmp sending. Beautify it to a switch.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
mpls: introduce label name defines and use them

Add proper names for the label names, and convert the helper
to an inline function. Use them where possible.

Also fix swap command to allow using explicit null labels.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
mpls: clean up unneeded gotos and general tidying up

Makes code prettier. Additionally one IPv6 specific block in
mpls_forward() was missing #ifdef which is now added.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
mpls: README: update mpls command to "ip -M" syntax after ABI change
mpls: rework netlink api to use rtmsg instead of ilmsg

This fixes the following issues:
- ABI is now consistent along routing protocols as proper payload is
  used for the RTM_*ROUTE messages
- non-exact ILM lookup should work now (previous it was hashed with
  struct mpls_key which includes TC; now it's hashed by label only)
- IPv6 explicit null ILM is dumped now correctly; the union assignment
  to .key did not work right as .label and .owner/.tc were in different
  sub-structs
- RTM_NEWROUTE now handles properly flag combo NLM_F_REPLACE|NLM_F_CREATE
- route notification semantics are fixed

Code is also simplified in various places.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>