FIB path preference

Paths are given a preference, lowest value is 'best'. Only paths that are up are up contribute to fprwarding - that's unchanged. What's new is that of the path's that re up only those that have the best preference contribute. A poor man's primary and backup. It's not true primary/backup function because the FIB must converge before the lower preference paths are used.

Change-Id: Ie4453c4a7b1094c6c2b51fe1594b8302103bb68e
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/src/vnet/mpls/mpls.api b/src/vnet/mpls/mpls.api
index c8a3ffb..61d7fe6 100644
--- a/src/vnet/mpls/mpls.api
+++ b/src/vnet/mpls/mpls.api
@@ -48,6 +48,7 @@
     @param mt_is_multicast - Is the tunnel's underlying LSP multicast
     @param mt_next_hop_proto_is_ip4 - The next-hop is IPV4
     @param mt_next_hop_weight - The weight, for UCMP
+    @param mt_next_hop_preference - The preference
     @param mt_next_hop[16] - the nextop address
     @param mt_next_hop_sw_if_index - the next-hop SW interface
     @param mt_next_hop_table_id - the next-hop table-id (if appropriate)
@@ -64,6 +65,7 @@
   u8 mt_is_multicast;
   u8 mt_next_hop_proto_is_ip4;
   u8 mt_next_hop_weight;
+  u8 mt_next_hop_preference;
   u8 mt_next_hop[16];
   u8 mt_next_hop_n_out_labels;
   u32 mt_next_hop_sw_if_index;
@@ -181,6 +183,7 @@
   u8 mr_is_rpf_id;
   u8 mr_next_hop_proto_is_ip4;
   u8 mr_next_hop_weight;
+  u8 mr_next_hop_preference;
   u8 mr_next_hop[16];
   u8 mr_next_hop_n_out_labels;
   u32 mr_next_hop_sw_if_index;