X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Ffib_types.h;h=b5a58e7b67420c5b765792590c64b28f51c57c9c;hb=e2fe09742;hp=77b133fa9db00b3e024d045674518aa7041419ca;hpb=097fa66b986f06281f603767d321ab13ab6c88c3;p=vpp.git diff --git a/src/vnet/fib/fib_types.h b/src/vnet/fib/fib_types.h index 77b133fa9db..b5a58e7b674 100644 --- a/src/vnet/fib/fib_types.h +++ b/src/vnet/fib/fib_types.h @@ -17,8 +17,7 @@ #define __FIB_TYPES_H__ #include -#include -#include +#include #include #include #include @@ -198,7 +197,7 @@ extern fib_forward_chain_type_t fib_forw_chain_type_from_fib_proto(fib_protocol_ extern dpo_proto_t fib_forw_chain_type_to_dpo_proto(fib_forward_chain_type_t fct); /** - * Aggregrate type for a prefix + * Aggregate type for a prefix */ typedef struct fib_prefix_t_ { /** @@ -247,6 +246,12 @@ STATIC_ASSERT(STRUCT_OFFSET_OF(fib_prefix_t, fp_addr) == 4, extern int fib_prefix_cmp(const fib_prefix_t *p1, const fib_prefix_t *p2); +/** + * \brief Copy a prefix + */ +extern void fib_prefix_copy(fib_prefix_t *dst, + const fib_prefix_t *src); + /** * \brief Compare two prefixes for covering relationship * @@ -259,7 +264,14 @@ extern int fib_prefix_is_cover(const fib_prefix_t *p1, * \brief Return true is the prefix is a host prefix */ extern int fib_prefix_is_host(const fib_prefix_t *p); +extern u8 fib_prefix_get_host_length (fib_protocol_t proto); +/** + * normalise a prefix (i.e. mask the host bits according to the + * prefix length) + */ +extern void fib_prefix_normalize(const fib_prefix_t *p, + fib_prefix_t *out); /** * \brief Host prefix from ip @@ -383,8 +395,22 @@ typedef enum fib_route_path_flags_t_ FIB_ROUTE_PATH_ICMP_UNREACH = (1 << 15), FIB_ROUTE_PATH_ICMP_PROHIBIT = (1 << 16), FIB_ROUTE_PATH_CLASSIFY = (1 << 17), + + /** + * Pop a Psuedo Wire Control Word + */ + FIB_ROUTE_PATH_POP_PW_CW = (1 << 18), + /** + * A path that resolves via a glean adjacency + */ + FIB_ROUTE_PATH_GLEAN = (1 << 19), } fib_route_path_flags_t; +/** + * Format route path flags + */ +extern u8 * format_fib_route_path_flags(u8 *s, va_list *ap); + /** * An RPF-ID is numerical value that is used RPF validate. An entry * has-a RPF-ID, when a packet egress from (e.g. an LSP) it gains an @@ -505,6 +531,11 @@ typedef struct fib_route_path_t_ { * Present in an mfib path list */ index_t frp_bier_imp; + + /** + * Glean prefix on a glean path + */ + fib_prefix_t frp_connected; }; /** @@ -589,6 +620,11 @@ typedef struct fib_route_path_t_ { */ extern uword unformat_fib_route_path(unformat_input_t * input, va_list * args); +/** + * Format route path flags + */ +extern u8 * format_fib_route_path(u8 *s, va_list *ap); + /** * A help string to list the FIB path options */