|
FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the documentation of this file.
86 checksum0 = ip0->
checksum + clib_host_to_net_u16 (0x0100);
87 checksum0 += checksum0 >= 0xffff;
167 n_left_to_next, bi0, next0);
199 .name =
"bier-imp-ip4",
200 .vector_size =
sizeof (
u32),
219 .name =
"bier-imp-ip6",
220 .vector_size =
sizeof (
u32),
u16 dpoi_next_node
The next VLIB node to follow.
index_t dpoi_index
the index of objects of that type
vlib_main_t vlib_node_runtime_t vlib_frame_t * frame
u16 bh_oam_dscp_proto
The second word comprises: 2 bits of OAM for passive perf measurement 2 reserved bits; 6 bits of DSCP...
nat44_ei_hairpin_src_next_t next_index
static vlib_buffer_t * vlib_get_buffer(vlib_main_t *vm, u32 buffer_index)
Translate buffer index into buffer pointer.
vlib_main_t vlib_node_runtime_t * node
#define BIER_RX_ITF
The BIER inline functions acting on the bier header.
static bier_imp_t * bier_imp_get(index_t bii)
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
vlib_main_t vlib_node_runtime_t vlib_frame_t * from_frame
vlib_node_registration_t bier_imp_ip6_node
(constructor) VLIB_REGISTER_NODE (bier_imp_ip6_node)
static_always_inline void * clib_memcpy_fast(void *restrict dst, const void *restrict src, size_t n)
static void vlib_buffer_advance(vlib_buffer_t *b, word l)
Advance current data pointer by the supplied (signed!) amount.
bier_imposition : The BIER imposition object
bier_hdr_t hdr
BIER hdr applied.
#define BIER_HDR_PROTO_FIELD_SHIFT
#define VLIB_NODE_FN(node)
static u32 ip6_compute_flow_hash(const ip6_header_t *ip, flow_hash_config_t flow_hash_config)
bier_table_id_t bi_tbl
The BIER table into which to forward the post imposed packet.
static void * vlib_frame_vector_args(vlib_frame_t *f)
Get pointer to frame vector data.
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
#define IP_FLOW_HASH_DEFAULT
Default: 5-tuple + flowlabel without the "reverse" bit.
enum fib_protocol_t_ fib_protocol_t
Protocol Type.
struct _vlib_node_registration vlib_node_registration_t
bier_hdr_len_id_t bti_hdr_len
The size of the bit string processed by this table.
bier_hdr_t bi_hdr
The Header to impose.
enum bier_hdr_proto_id_t_ bier_hdr_proto_id_t
BIER header protocol payload types.
static u8 * format_bier_imp_trace(u8 *s, va_list *args)
#define vlib_validate_buffer_enqueue_x1(vm, node, next_index, to_next, n_left_to_next, bi0, next0)
Finish enqueueing one buffer forward in the graph.
vlib_node_registration_t bier_imp_ip4_node
(constructor) VLIB_REGISTER_NODE (bier_imp_ip4_node)
description fragment has unexpected format
vlib_put_next_frame(vm, node, next_index, 0)
struct bier_imp_trace_t_ bier_imp_trace_t
A struct to hold tracing information for the BIER imposition node.
u8 * format_bier_imp(u8 *s, va_list *args)
static u32 ip4_compute_flow_hash(const ip4_header_t *ip, flow_hash_config_t flow_hash_config)
#define BIER_HDR_ENTROPY_FIELD_MASK
dpo_id_t bi_dpo[FIB_PROTOCOL_IP_MAX]
The DPO contributed from the resolving BIER table.
void * vlib_add_trace(vlib_main_t *vm, vlib_node_runtime_t *r, vlib_buffer_t *b, u32 n_data_bytes)
static uword bier_imp_dpo_inline(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *from_frame, fib_protocol_t fproto, bier_hdr_proto_id_t bproto)
static void * vlib_buffer_get_current(vlib_buffer_t *b)
Get pointer to current data to process.
index_t imp
BIER imposition object hit.
A BIER header of variable length The encoding follows: https://tools.ietf.org/html/draft-ietf-bier-mp...
A struct to hold tracing information for the BIER imposition node.
u32 bh_first_word
The first nibble is always set to 0101 to ensure that when carried over MPLS, the BIER packet is not ...
u32 bier_hdr_len_id_to_num_bytes(bier_hdr_len_id_t id)
#define vlib_get_next_frame(vm, node, next_index, vectors, n_vectors_left)
Get pointer to next frame vector data by (vlib_node_runtime_t, next_index).
u32 flags
buffer flags: VLIB_BUFFER_FREE_LIST_INDEX_MASK: bits used to store free list index,...
#define BIER_HDR_ENTROPY_FIELD_SHIFT
VLIB buffer representation.
#define VLIB_REGISTER_NODE(x,...)