UDP Encapsulation.
[vpp.git] / src / vnet / fib / fib_types.h
index a7a23d7..ec7f1b3 100644 (file)
@@ -32,9 +32,9 @@ typedef u32 fib_node_index_t;
  * Protocol Type. packed so it consumes a u8 only
  */
 typedef enum fib_protocol_t_ {
-    FIB_PROTOCOL_IP4 = 0,
-    FIB_PROTOCOL_IP6,
-    FIB_PROTOCOL_MPLS,
+    FIB_PROTOCOL_IP4 = DPO_PROTO_IP4,
+    FIB_PROTOCOL_IP6 = DPO_PROTO_IP6,
+    FIB_PROTOCOL_MPLS = DPO_PROTO_MPLS,
 }  __attribute__ ((packed)) fib_protocol_t;
 
 #define FIB_PROTOCOLS {                        \
@@ -261,8 +261,8 @@ typedef enum fib_special_type_t_ {
     for (_item = FIB_TYPE_SPEICAL_FIRST;               \
         _item <= FIB_SPEICAL_TYPE_LAST; _item++)
 
-extern u8 * format_fib_protocol(u8 * s, va_list ap);
-extern u8 * format_vnet_link(u8 *s, va_list ap);
+extern u8 * format_fib_protocol(u8 * s, va_list *ap);
+extern u8 * format_vnet_link(u8 *s, va_list *ap);
 
 /**
  * Path flags from the control plane
@@ -303,6 +303,14 @@ typedef enum fib_route_path_flags_t_
      * A local path with a RPF-ID => multicast traffic
      */
     FIB_ROUTE_PATH_RPF_ID = (1 << 7),
+    /**
+     * A deag path using the packet's source not destination address.
+     */
+    FIB_ROUTE_PATH_SOURCE_LOOKUP = (1 << 8),
+    /**
+     * A path via a UDP encap object.
+     */
+    FIB_ROUTE_PATH_UDP_ENCAP = (1 << 9),
 } fib_route_path_flags_t;
 
 /**
@@ -338,7 +346,7 @@ typedef struct fib_route_path_t_ {
      * The protocol of the address below. We need this since the all
      * zeros address is ambiguous.
      */
-    fib_protocol_t frp_proto;
+    dpo_proto_t frp_proto;
 
     union {
        /**
@@ -371,6 +379,10 @@ typedef struct fib_route_path_t_ {
          * The RPF-ID
          */
         fib_rpf_id_t frp_rpf_id;
+        /**
+         * UDP encap ID
+         */
+        u32 frp_udp_encap_id;
     };
     /**
      * The FIB index to lookup the nexthop
@@ -380,13 +392,13 @@ typedef struct fib_route_path_t_ {
     /**
      * [un]equal cost path weight
      */
-    u16 frp_weight;
+    u8 frp_weight;
     /**
      * A path preference. 0 is the best.
      * Only paths of the best preference, that are 'up', are considered
      * for forwarding.
      */
-    u16 frp_preference;
+    u8 frp_preference;
     /**
      * flags on the path
      */