X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=vnet%2Fvnet%2Fgre%2Fgre.h;h=beb13d989ee4999303f8738a67282d434d0820b9;hb=refs%2Fchanges%2F02%2F2502%2F17;hp=d44d8d9d9c6ba7e02bb950d8cf6bffc79cadd382;hpb=24612b3fb8c4b7cef5f6b725da3321e419cf8216;p=vpp.git diff --git a/vnet/vnet/gre/gre.h b/vnet/vnet/gre/gre.h index d44d8d9d9c6..beb13d989ee 100644 --- a/vnet/vnet/gre/gre.h +++ b/vnet/vnet/gre/gre.h @@ -25,6 +25,7 @@ #include #include #include +#include extern vnet_hw_interface_class_t gre_hw_interface_class; @@ -50,11 +51,44 @@ typedef struct { } gre_protocol_info_t; typedef struct { + /** + * Linkage into the FIB object graph + */ + fib_node_t node; + + /** + * The tunnel's source/local address + */ ip4_address_t tunnel_src; + /** + * The tunnel's destination/remote address + */ ip4_address_t tunnel_dst; + /** + * The FIB in which the src.dst address are present + */ u32 outer_fib_index; u32 hw_if_index; u32 sw_if_index; + u8 teb; + + /** + * The FIB entry sourced by the tunnel for its destination prefix + */ + fib_node_index_t fib_entry_index; + + /** + * The tunnel is a child of the FIB entry for its desintion. This is + * so it receives updates when the forwarding information for that entry + * changes. + * The tunnels sibling index on the FIB entry's dependency list. + */ + u32 sibling_index; + + /** + * The index of the midchain adjacency created for this tunnel + */ + adj_index_t adj_index[FIB_LINK_NUM]; } gre_tunnel_t; typedef struct { @@ -79,6 +113,15 @@ typedef struct { vnet_main_t * vnet_main; } gre_main_t; +/** + * @brief IPv4 and GRE header. + * +*/ +typedef CLIB_PACKED (struct { + ip4_header_t ip4; + gre_header_t gre; +}) ip4_and_gre_header_t; + always_inline gre_protocol_info_t * gre_get_protocol_info (gre_main_t * em, gre_protocol_t protocol) { @@ -126,7 +169,8 @@ typedef struct { u8 is_add; ip4_address_t src, dst; - u32 outer_table_id; + u32 outer_fib_id; + u8 teb; } vnet_gre_add_del_tunnel_args_t; int vnet_gre_add_del_tunnel