|
FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
|
Go to the documentation of this file.
57 ip4_udp_lisp_gpe_header_t *h0;
64 h0 = (ip4_udp_lisp_gpe_header_t *) rw;
78 h0->udp.src_port = clib_host_to_net_u16 (4341);
79 h0->udp.dst_port = clib_host_to_net_u16 (UDP_DST_PORT_lisp_gpe);
86 ip6_udp_lisp_gpe_header_t *h0;
93 h0 = (ip6_udp_lisp_gpe_header_t *) rw;
98 clib_host_to_net_u32 (0x6 << 28);
107 h0->udp.src_port = clib_host_to_net_u16 (4341);
108 h0->udp.dst_port = clib_host_to_net_u16 (UDP_DST_PORT_lisp_gpe);
117 lisp0->
flags &= ~LISP_GPE_FLAGS_P;
122 lisp0->
iid = clib_host_to_net_u32 (ladj->
vni) >> 8;
154 .fib_index = rloc_fib_index,
222 s =
format (s,
" fib-index: %d, locks:%d \n",
224 s =
format (s,
" lisp ver 0\n");
226 s =
format (s,
" locator-pair:\n");
227 s =
format (s,
" local: %U remote: %U\n",
270 .path =
"show gpe tunnel",
index_t lisp_gpe_tunnel_find_or_create_and_lock(const locator_pair_t *pair, u32 rloc_fib_index)
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
static void clib_mem_free(void *p)
enum gpe_encap_mode_e gpe_encap_mode_t
#define hash_set_mem(h, key, value)
void ip_address_to_fib_prefix(const ip_address_t *addr, fib_prefix_t *prefix)
convert from a IP address to a FIB prefix
#define pool_put(P, E)
Free an object E in pool P.
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
#define ip_addr_version(_a)
#define pool_foreach(VAR, POOL)
Iterate through pool.
void ip_address_copy_addr(void *dst, const ip_address_t *src)
#define hash_create_mem(elts, key_bytes, value_bytes)
lisp_gpe_tunnel_t * lisp_gpe_tunnel_get_i(index_t lgti)
#define hash_unset_mem(h, key)
#define vec_validate_aligned(V, I, A)
Make sure vector is long enough for given index (no header, specified alignment)
fib_node_index_t fib_entry_index
the FIB entry through which the remote rloc is reachable s
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
u8 * format_ip_address(u8 *s, va_list *args)
const lisp_gpe_tunnel_t * lisp_gpe_tunnel_get(index_t lgti)
static clib_error_t * show_lisp_gpe_tunnel_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
CLI command to show LISP-GPE tunnels.
#define pool_get(P, E)
Allocate an object E from a pool P (unspecified alignment).
#define VLIB_CLI_COMMAND(x,...)
#define CLIB_CACHE_LINE_BYTES
void vlib_cli_output(vlib_main_t *vm, char *fmt,...)
Common utility functions for IPv4, IPv6 and L2 LISP-GPE tunnels.
#define hash_get_mem(h, key)
description fragment has unexpected format
static uword * lisp_gpe_tunnel_db
a DB of all tunnels
#define VLIB_INIT_FUNCTION(x)
lisp_gpe_tunnel_key_t * key
RLOC pair and rloc fib_index.
static vlib_cli_command_t show_lisp_gpe_tunnel_command
(constructor) VLIB_CLI_COMMAND (show_lisp_gpe_tunnel_command)
static uword pool_elts(void *v)
Number of active elements in a pool.
u8 * lisp_gpe_tunnel_build_rewrite(const lisp_gpe_tunnel_t *lgt, const lisp_gpe_adjacency_t *ladj, lisp_gpe_next_protocol_e payload_proto)
Compute IP-UDP-GPE sub-tunnel encap/rewrite header.
u8 flags
LISP header fields in HOST byte order.
clib_memset(h->entries, 0, sizeof(h->entries[0]) *entries)
u32 locks
number of reference counting locks
Common utility functions for IPv4, IPv6 and L2 LISP-GPE adjacencys.
gpe_encap_mode_t vnet_gpe_get_encap_mode(void)
static u16 ip4_header_checksum(ip4_header_t *i)
clib_error_t *() vlib_init_function_t(struct vlib_main_t *vm)
void lisp_gpe_tunnel_unlock(index_t lgti)
static lisp_gpe_tunnel_t * lisp_gpe_tunnel_pool
Pool of all LISP tunnels.
@ FIB_SOURCE_RR
Recursive resolution source.
fib_node_index_t fib_table_entry_special_add(u32 fib_index, const fib_prefix_t *prefix, fib_source_t source, fib_entry_flag_t flags)
Add a 'special' entry to the FIB.
u8 * format_lisp_gpe_tunnel(u8 *s, va_list *args)
Format LISP-GPE tunnel.
static clib_error_t * lisp_gpe_tunnel_module_init(vlib_main_t *vm)
static void * clib_mem_alloc(uword size)
Aggregate type for a prefix.
static lisp_gpe_tunnel_t * lisp_gpe_tunnel_db_find(const lisp_gpe_tunnel_key_t *key)