Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ip: Protocol Independent IP Neighbors
[vpp.git]
/
src
/
vnet
/
fib
/
fib_types.h
diff --git
a/src/vnet/fib/fib_types.h
b/src/vnet/fib/fib_types.h
index
cd6ef7e
..
333b2ab
100644
(file)
--- a/
src/vnet/fib/fib_types.h
+++ b/
src/vnet/fib/fib_types.h
@@
-18,7
+18,7
@@
#include <stdbool.h>
#include <vlib/vlib.h>
#include <stdbool.h>
#include <vlib/vlib.h>
-#include <vnet/ip/ip
6_packet
.h>
+#include <vnet/ip/ip
46_address
.h>
#include <vnet/mpls/packet.h>
#include <vnet/dpo/dpo.h>
#include <vnet/bier/bier_types.h>
#include <vnet/mpls/packet.h>
#include <vnet/dpo/dpo.h>
#include <vnet/bier/bier_types.h>
@@
-198,7
+198,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);
/**
extern dpo_proto_t fib_forw_chain_type_to_dpo_proto(fib_forward_chain_type_t fct);
/**
- * Aggreg
r
ate type for a prefix
+ * Aggregate type for a prefix
*/
typedef struct fib_prefix_t_ {
/**
*/
typedef struct fib_prefix_t_ {
/**
@@
-247,6
+247,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);
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
*
/**
* \brief Compare two prefixes for covering relationship
*
@@
-259,7
+265,7
@@
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);
* \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);
/**
* \brief Host prefix from ip
/**
* \brief Host prefix from ip
@@
-379,6
+385,15
@@
typedef enum fib_route_path_flags_t_
* A path that resolves via a DVR DPO
*/
FIB_ROUTE_PATH_DVR = (1 << 14),
* A path that resolves via a DVR DPO
*/
FIB_ROUTE_PATH_DVR = (1 << 14),
+
+ 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),
} fib_route_path_flags_t;
/**
} fib_route_path_flags_t;
/**
@@
-496,18
+511,24
@@
typedef struct fib_route_path_t_ {
*/
mpls_eos_bit_t frp_eos;
};
*/
mpls_eos_bit_t frp_eos;
};
- };
- union {
- /**
- * The interface.
- * Will be invalid for recursive paths.
- */
- u32 frp_sw_if_index;
/**
/**
- * The RPF-ID
+ * A path via a BIER imposition object.
+ * Present in an mfib path list
*/
*/
-
fib_rpf_id_t frp_rpf_id
;
+
index_t frp_bier_imp
;
};
};
+
+ /**
+ * The interface.
+ * Will be invalid for recursive paths.
+ */
+ u32 frp_sw_if_index;
+
+ /**
+ * The RPF-ID
+ */
+ fib_rpf_id_t frp_rpf_id;
+
union {
/**
* The FIB index to lookup the nexthop
union {
/**
* The FIB index to lookup the nexthop
@@
-523,6
+544,14
@@
typedef struct fib_route_path_t_ {
* The outgoing MPLS label Stack. NULL implies no label.
*/
fib_mpls_label_t *frp_label_stack;
* The outgoing MPLS label Stack. NULL implies no label.
*/
fib_mpls_label_t *frp_label_stack;
+ /**
+ * Exclusive DPO
+ */
+ dpo_id_t dpo;
+ /**
+ * MFIB interface flags
+ */
+ u32 frp_mitf_flags;
};
/**
* A path that resolves via a BIER Table.
};
/**
* A path that resolves via a BIER Table.
@@
-531,20
+560,24
@@
typedef struct fib_route_path_t_ {
bier_table_id_t frp_bier_tbl;
/**
bier_table_id_t frp_bier_tbl;
/**
- * A path via a BIER imposition object.
- * Present in an mfib path list
+ * UDP encap ID
*/
*/
-
index_t frp_bier_imp
;
+
u32 frp_udp_encap_id
;
/**
/**
- *
UDP encap
ID
+ *
Classify table
ID
*/
*/
- u32 frp_
udp_encap
_id;
+ u32 frp_
classify_table
_id;
/**
* Resolving via a BIER Fmask
*/
index_t frp_bier_fmask;
/**
* Resolving via a BIER Fmask
*/
index_t frp_bier_fmask;
+
+ /**
+ * The DPO for use with exclusive paths
+ */
+ dpo_id_t frp_dpo;
};
/**
* [un]equal cost path weight
};
/**
* [un]equal cost path weight
@@
-572,15
+605,6
@@
extern uword unformat_fib_route_path(unformat_input_t * input, va_list * args);
*/
#define FIB_ROUTE_PATH_HELP "[next-hop-address] [next-hop-interface] [next-hop-table <value>] [weight <value>] [preference <value>] [udp-encap-id <value>] [ip4-lookup-in-table <value>] [ip6-lookup-in-table <value>] [mpls-lookup-in-table <value>] [resolve-via-host] [resolve-via-connected] [rx-ip4 <interface>] [out-labels <value value value>]"
*/
#define FIB_ROUTE_PATH_HELP "[next-hop-address] [next-hop-interface] [next-hop-table <value>] [weight <value>] [preference <value>] [udp-encap-id <value>] [ip4-lookup-in-table <value>] [ip6-lookup-in-table <value>] [mpls-lookup-in-table <value>] [resolve-via-host] [resolve-via-connected] [rx-ip4 <interface>] [out-labels <value value value>]"
-/**
- * @brief
- * A representation of a fib path for fib_path_encode to convey the information to the caller
- */
-typedef struct fib_route_path_encode_t_ {
- fib_route_path_t rpath;
- dpo_id_t dpo;
-} fib_route_path_encode_t;
-
/**
* return code to control pat-hlist walk
*/
/**
* return code to control pat-hlist walk
*/