X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Ffib_path.h;h=50aca9e1cf5d7836e31c7f719f4b5f0996e8738e;hb=097fa66b986f06281f603767d321ab13ab6c88c3;hp=57dec6d90b41d18bc384fb5b366ab5392a2a9a0e;hpb=39baa32186fd3e4b20d9f58afbbfe7b8daebed62;p=vpp.git diff --git a/src/vnet/fib/fib_path.h b/src/vnet/fib/fib_path.h index 57dec6d90b4..50aca9e1cf5 100644 --- a/src/vnet/fib/fib_path.h +++ b/src/vnet/fib/fib_path.h @@ -79,6 +79,18 @@ typedef enum fib_path_cfg_attribute_t_ { * The path is an interface recieve */ FIB_PATH_CFG_ATTRIBUTE_LOCAL, + /** + * The path reolves via an ICMP unreachable + */ + FIB_PATH_CFG_ATTRIBUTE_ICMP_UNREACH, + /** + * The path reolves via an ICMP prohibit + */ + FIB_PATH_CFG_ATTRIBUTE_ICMP_PROHIBIT, + /** + * The path reolves via a classify + */ + FIB_PATH_CFG_ATTRIBUTE_CLASSIFY, /** * The deag path does a source lookup */ @@ -100,6 +112,9 @@ typedef enum fib_path_cfg_attribute_t_ { [FIB_PATH_CFG_ATTRIBUTE_RESOLVE_HOST] = "resolve-host", \ [FIB_PATH_CFG_ATTRIBUTE_RESOLVE_ATTACHED] = "resolve-attached", \ [FIB_PATH_CFG_ATTRIBUTE_LOCAL] = "local", \ + [FIB_PATH_CFG_ATTRIBUTE_ICMP_UNREACH] = "icmp-unreach", \ + [FIB_PATH_CFG_ATTRIBUTE_ICMP_PROHIBIT] = "icmp-prohibit", \ + [FIB_PATH_CFG_ATTRIBUTE_CLASSIFY] = "classify", \ [FIB_PATH_CFG_ATTRIBUTE_ATTACHED] = "attached", \ [FIB_PATH_CFG_ATTRIBUTE_INTF_RX] = "interface-rx", \ [FIB_PATH_CFG_ATTRIBUTE_RPF_ID] = "rpf-id", \ @@ -121,6 +136,9 @@ typedef enum fib_path_cfg_flags_t_ { FIB_PATH_CFG_FLAG_RESOLVE_HOST = (1 << FIB_PATH_CFG_ATTRIBUTE_RESOLVE_HOST), FIB_PATH_CFG_FLAG_RESOLVE_ATTACHED = (1 << FIB_PATH_CFG_ATTRIBUTE_RESOLVE_ATTACHED), FIB_PATH_CFG_FLAG_LOCAL = (1 << FIB_PATH_CFG_ATTRIBUTE_LOCAL), + FIB_PATH_CFG_FLAG_ICMP_UNREACH = (1 << FIB_PATH_CFG_ATTRIBUTE_ICMP_UNREACH), + FIB_PATH_CFG_FLAG_ICMP_PROHIBIT = (1 << FIB_PATH_CFG_ATTRIBUTE_ICMP_PROHIBIT), + FIB_PATH_CFG_FLAG_CLASSIFY = (1 << FIB_PATH_CFG_ATTRIBUTE_CLASSIFY), FIB_PATH_CFG_FLAG_ATTACHED = (1 << FIB_PATH_CFG_ATTRIBUTE_ATTACHED), FIB_PATH_CFG_FLAG_INTF_RX = (1 << FIB_PATH_CFG_ATTRIBUTE_INTF_RX), FIB_PATH_CFG_FLAG_RPF_ID = (1 << FIB_PATH_CFG_ATTRIBUTE_RPF_ID), @@ -181,6 +199,16 @@ extern u16 fib_path_get_preference(fib_node_index_t path_index); extern u32 fib_path_get_rpf_id(fib_node_index_t path_index); extern void fib_path_module_init(void); + +/** + * Path encode context to use when walking a path-list + * to encode paths + */ +typedef struct fib_path_encode_ctx_t_ +{ + fib_route_path_t *rpaths; +} fib_path_encode_ctx_t; + extern fib_path_list_walk_rc_t fib_path_encode(fib_node_index_t path_list_index, fib_node_index_t path_index, const struct fib_path_ext_t_ *ext_list,