FD.io VPP  v19.08.3-2-gbabecb413
Vector Packet Processing
ip6_map.c File Reference
+ Include dependency graph for ip6_map.c:

Go to the source code of this file.

Data Structures

struct  map_ip6_map_ip4_reass_trace_t
 
struct  map_ip6_map_ip6_reass_trace_t
 

Enumerations

enum  ip6_map_next_e {
  IP6_MAP_NEXT_IP4_LOOKUP, IP6_MAP_NEXT_IP4_REWRITE, IP6_MAP_NEXT_IP6_REASS, IP6_MAP_NEXT_IP4_REASS,
  IP6_MAP_NEXT_IP4_FRAGMENT, IP6_MAP_NEXT_IP6_ICMP_RELAY, IP6_MAP_NEXT_IP6_LOCAL, IP6_MAP_NEXT_DROP,
  IP6_MAP_NEXT_ICMP, IP6_MAP_N_NEXT
}
 
enum  ip6_map_ip6_reass_next_e { IP6_MAP_IP6_REASS_NEXT_IP6_MAP, IP6_MAP_IP6_REASS_NEXT_DROP, IP6_MAP_IP6_REASS_N_NEXT }
 
enum  ip6_map_ip4_reass_next_e { IP6_MAP_IP4_REASS_NEXT_IP4_LOOKUP, IP6_MAP_IP4_REASS_NEXT_IP4_FRAGMENT, IP6_MAP_IP4_REASS_NEXT_DROP, IP6_MAP_IP4_REASS_N_NEXT }
 
enum  ip6_icmp_relay_next_e { IP6_ICMP_RELAY_NEXT_IP4_LOOKUP, IP6_ICMP_RELAY_NEXT_DROP, IP6_ICMP_RELAY_N_NEXT }
 

Functions

u8format_ip6_map_ip4_reass_trace (u8 *s, va_list *args)
 
u8format_ip6_map_ip6_reass_trace (u8 *s, va_list *args)
 
static_always_inline bool ip6_map_sec_check (map_domain_t *d, u16 port, ip4_header_t *ip4, ip6_header_t *ip6)
 
static_always_inline void ip6_map_security_check (map_domain_t *d, ip4_header_t *ip4, ip6_header_t *ip6, u32 *next, u8 *error)
 
static uword ip6_map (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static_always_inline void ip6_map_ip6_reass_prepare (vlib_main_t *vm, vlib_node_runtime_t *node, map_ip6_reass_t *r, u32 **fragments_ready, u32 **fragments_to_drop)
 
void map_ip6_drop_pi (u32 pi)
 
void map_ip4_drop_pi (u32 pi)
 
static uword ip6_map_ip6_reass (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_map_ip4_reass (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
static uword ip6_map_icmp_relay (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
 
 VNET_FEATURE_INIT (ip6_map_feature, static)
 

Variables

vlib_node_registration_t ip6_map_ip4_reass_node
 (constructor) VLIB_REGISTER_NODE (ip6_map_ip4_reass_node) More...
 
vlib_node_registration_t ip6_map_ip6_reass_node
 (constructor) VLIB_REGISTER_NODE (ip6_map_ip6_reass_node) More...
 
static vlib_node_registration_t ip6_map_icmp_relay_node
 (constructor) VLIB_REGISTER_NODE (ip6_map_icmp_relay_node) More...
 
static char * map_error_strings []
 
vlib_node_registration_t ip6_map_node
 (constructor) VLIB_REGISTER_NODE (ip6_map_node) More...
 

Enumeration Type Documentation

◆ ip6_icmp_relay_next_e

Enumerator
IP6_ICMP_RELAY_NEXT_IP4_LOOKUP 
IP6_ICMP_RELAY_NEXT_DROP 
IP6_ICMP_RELAY_N_NEXT 

Definition at line 52 of file ip6_map.c.

◆ ip6_map_ip4_reass_next_e

Enumerator
IP6_MAP_IP4_REASS_NEXT_IP4_LOOKUP 
IP6_MAP_IP4_REASS_NEXT_IP4_FRAGMENT 
IP6_MAP_IP4_REASS_NEXT_DROP 
IP6_MAP_IP4_REASS_N_NEXT 

Definition at line 44 of file ip6_map.c.

◆ ip6_map_ip6_reass_next_e

Enumerator
IP6_MAP_IP6_REASS_NEXT_IP6_MAP 
IP6_MAP_IP6_REASS_NEXT_DROP 
IP6_MAP_IP6_REASS_N_NEXT 

Definition at line 37 of file ip6_map.c.

◆ ip6_map_next_e

Enumerator
IP6_MAP_NEXT_IP4_LOOKUP 
IP6_MAP_NEXT_IP4_REWRITE 
IP6_MAP_NEXT_IP6_REASS 
IP6_MAP_NEXT_IP4_REASS 
IP6_MAP_NEXT_IP4_FRAGMENT 
IP6_MAP_NEXT_IP6_ICMP_RELAY 
IP6_MAP_NEXT_IP6_LOCAL 
IP6_MAP_NEXT_DROP 
IP6_MAP_NEXT_ICMP 
IP6_MAP_N_NEXT 

Definition at line 21 of file ip6_map.c.

Function Documentation

◆ format_ip6_map_ip4_reass_trace()

u8* format_ip6_map_ip4_reass_trace ( u8 s,
va_list *  args 
)

Definition at line 71 of file ip6_map.c.

+ Here is the call graph for this function:

◆ format_ip6_map_ip6_reass_trace()

u8* format_ip6_map_ip6_reass_trace ( u8 s,
va_list *  args 
)

Definition at line 90 of file ip6_map.c.

+ Here is the call graph for this function:

◆ ip6_map()

static uword ip6_map ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 156 of file ip6_map.c.

+ Here is the call graph for this function:

◆ ip6_map_icmp_relay()

static uword ip6_map_icmp_relay ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 994 of file ip6_map.c.

+ Here is the call graph for this function:

◆ ip6_map_ip4_reass()

static uword ip6_map_ip4_reass ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 803 of file ip6_map.c.

+ Here is the call graph for this function:

◆ ip6_map_ip6_reass()

static uword ip6_map_ip6_reass ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_frame_t frame 
)
static

Definition at line 663 of file ip6_map.c.

+ Here is the call graph for this function:

◆ ip6_map_ip6_reass_prepare()

static_always_inline void ip6_map_ip6_reass_prepare ( vlib_main_t vm,
vlib_node_runtime_t node,
map_ip6_reass_t r,
u32 **  fragments_ready,
u32 **  fragments_to_drop 
)

Definition at line 542 of file ip6_map.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip6_map_sec_check()

static_always_inline bool ip6_map_sec_check ( map_domain_t d,
u16  port,
ip4_header_t ip4,
ip6_header_t ip6 
)

Definition at line 104 of file ip6_map.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ip6_map_security_check()

static_always_inline void ip6_map_security_check ( map_domain_t d,
ip4_header_t ip4,
ip6_header_t ip6,
u32 next,
u8 error 
)

Definition at line 120 of file ip6_map.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ map_ip4_drop_pi()

void map_ip4_drop_pi ( u32  pi)

Definition at line 647 of file ip6_map.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ map_ip6_drop_pi()

void map_ip6_drop_pi ( u32  pi)

Definition at line 638 of file ip6_map.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ VNET_FEATURE_INIT()

VNET_FEATURE_INIT ( ip6_map_feature  ,
static   
)

Variable Documentation

◆ ip6_map_icmp_relay_node

static vlib_node_registration_t ip6_map_icmp_relay_node
static
Initial value:
= {
.function = ip6_map_icmp_relay,
.name = "ip6-map-icmp-relay",
.vector_size = sizeof(u32),
.format_trace = format_map_trace,
.n_errors = MAP_N_ERROR,
.error_strings = map_error_strings,
.n_next_nodes = IP6_ICMP_RELAY_N_NEXT,
.next_nodes = {
[IP6_ICMP_RELAY_NEXT_DROP] = "error-drop",
},
}
static char * map_error_strings[]
Definition: ip6_map.c:1153
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static uword ip6_map_icmp_relay(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_map.c:994
u8 * format_map_trace(u8 *s, va_list *args)
Definition: map.c:1363

(constructor) VLIB_REGISTER_NODE (ip6_map_icmp_relay_node)

Definition at line 61 of file ip6_map.c.

◆ ip6_map_ip4_reass_node

vlib_node_registration_t ip6_map_ip4_reass_node
Initial value:
= {
.function = ip6_map_ip4_reass,
.name = "ip6-map-ip4-reass",
.vector_size = sizeof(u32),
.n_errors = MAP_N_ERROR,
.error_strings = map_error_strings,
.n_next_nodes = IP6_MAP_IP4_REASS_N_NEXT,
.next_nodes = {
[IP6_MAP_IP4_REASS_NEXT_DROP] = "error-drop",
},
}
static char * map_error_strings[]
Definition: ip6_map.c:1153
unsigned int u32
Definition: types.h:88
u8 * format_ip6_map_ip4_reass_trace(u8 *s, va_list *args)
Definition: ip6_map.c:71
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static uword ip6_map_ip4_reass(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_map.c:803

(constructor) VLIB_REGISTER_NODE (ip6_map_ip4_reass_node)

Definition at line 59 of file ip6_map.c.

◆ ip6_map_ip6_reass_node

vlib_node_registration_t ip6_map_ip6_reass_node
Initial value:
= {
.function = ip6_map_ip6_reass,
.name = "ip6-map-ip6-reass",
.vector_size = sizeof(u32),
.n_errors = MAP_N_ERROR,
.error_strings = map_error_strings,
.n_next_nodes = IP6_MAP_IP6_REASS_N_NEXT,
.next_nodes = {
[IP6_MAP_IP6_REASS_NEXT_DROP] = "error-drop",
},
}
static char * map_error_strings[]
Definition: ip6_map.c:1153
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
u8 * format_ip6_map_ip6_reass_trace(u8 *s, va_list *args)
Definition: ip6_map.c:90
static uword ip6_map_ip6_reass(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_map.c:663

(constructor) VLIB_REGISTER_NODE (ip6_map_ip6_reass_node)

Definition at line 60 of file ip6_map.c.

◆ ip6_map_node

Initial value:
= {
.function = ip6_map,
.name = "ip6-map",
.vector_size = sizeof(u32),
.format_trace = format_map_trace,
.n_errors = MAP_N_ERROR,
.error_strings = map_error_strings,
.n_next_nodes = IP6_MAP_N_NEXT,
.next_nodes = {
[IP6_MAP_NEXT_IP4_LOOKUP] = "ip4-lookup",
[IP6_MAP_NEXT_IP4_REWRITE] = "ip4-load-balance",
[IP6_MAP_NEXT_IP6_REASS] = "ip6-map-ip6-reass",
[IP6_MAP_NEXT_IP4_REASS] = "ip6-map-ip4-reass",
[IP6_MAP_NEXT_IP4_FRAGMENT] = "ip4-frag",
[IP6_MAP_NEXT_IP6_ICMP_RELAY] = "ip6-map-icmp-relay",
[IP6_MAP_NEXT_IP6_LOCAL] = "ip6-local",
[IP6_MAP_NEXT_DROP] = "error-drop",
[IP6_MAP_NEXT_ICMP] = "ip6-icmp-error",
},
}
static char * map_error_strings[]
Definition: ip6_map.c:1153
unsigned int u32
Definition: types.h:88
vl_api_fib_path_type_t type
Definition: fib_types.api:123
static uword ip6_map(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame)
Definition: ip6_map.c:156
u8 * format_map_trace(u8 *s, va_list *args)
Definition: map.c:1363

(constructor) VLIB_REGISTER_NODE (ip6_map_node)

Definition at line 1167 of file ip6_map.c.

◆ map_error_strings

char* map_error_strings[]
static
Initial value:
= {
#define _(sym,string)
}
#define foreach_map_error
Definition: map.h:350

Definition at line 1153 of file ip6_map.c.