FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
ip_types.h File Reference
+ Include dependency graph for ip_types.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ip_address
 
struct  ip_prefix
 

Macros

#define N_AF   (AF_IP6+1)
 
#define N_AF   (AF_IP6+1)
 
#define FOR_EACH_IP_ADDRESS_FAMILY(_af)   for (_af = AF_IP4; _af <= AF_IP6; _af++)
 
#define u8_ptr_add(ptr, index)   (((u8 *)ptr) + index)
 
#define u16_net_add(u, val)   clib_host_to_net_u16(clib_net_to_host_u16(u) + (val))
 
#define IP_ADDRESS_V4_ALL_0S   {.ip.ip4.as_u32 = 0, .version = AF_IP4}
 
#define IP_ADDRESS_V6_ALL_0S   {.ip.ip6.as_u64 = {0, 0}, .version = AF_IP6}
 
#define ip_addr_46(_a)   (_a)->ip
 
#define ip_addr_v4(_a)   (_a)->ip.ip4
 
#define ip_addr_v6(_a)   (_a)->ip.ip6
 
#define ip_addr_version(_a)   (_a)->version
 
#define ip_prefix_addr(_a)   (_a)->addr
 
#define ip_prefix_version(_a)   ip_addr_version(&ip_prefix_addr(_a))
 
#define ip_prefix_len(_a)   (_a)->len
 
#define ip_prefix_v4(_a)   ip_addr_v4(&ip_prefix_addr(_a))
 
#define ip_prefix_v6(_a)   ip_addr_v6(&ip_prefix_addr(_a))
 

Typedefs

typedef enum ip_address_family_t_ ip_address_family_t
 
typedef struct ip_address ip_address_t
 
typedef struct ip_prefix ip_prefix_t
 

Enumerations

enum  ip_address_family_t_ { AF_IP4, AF_IP6 }
 

Functions

uword unformat_ip_address_family (unformat_input_t *input, va_list *args)
 
u8format_ip_address_family (u8 *s, va_list *args)
 
vnet_link_t ip_address_family_to_link_type (ip_address_family_t af)
 
fib_protocol_t ip_address_family_to_fib_proto (ip_address_family_t af)
 
ip_address_family_t ip_address_family_from_fib_proto (fib_protocol_t fp)
 
u8ip_addr_bytes (ip_address_t *ip)
 
bool ip_address_is_zero (const ip_address_t *ip)
 
int ip_address_cmp (const ip_address_t *ip1, const ip_address_t *ip2)
 
void ip_address_copy (ip_address_t *dst, const ip_address_t *src)
 
void ip_address_copy_addr (void *dst, const ip_address_t *src)
 
void ip_address_set (ip_address_t *dst, const void *src, u8 version)
 
u16 ip_address_size (const ip_address_t *a)
 
u16 ip_version_to_size (ip_address_family_t af)
 
u8format_ip_address (u8 *s, va_list *args)
 
uword unformat_ip_address (unformat_input_t *input, va_list *args)
 
fib_protocol_t ip_address_to_46 (const ip_address_t *addr, ip46_address_t *a)
 
void ip_address_from_46 (const ip46_address_t *a, fib_protocol_t fproto, ip_address_t *addr)
 
int ip_prefix_cmp (ip_prefix_t *p1, ip_prefix_t *p2)
 
void ip_prefix_normalize (ip_prefix_t *a)
 
void ip_address_to_fib_prefix (const ip_address_t *addr, fib_prefix_t *prefix)
 convert from a IP address to a FIB prefix More...
 
void ip_prefix_to_fib_prefix (const ip_prefix_t *ipp, fib_prefix_t *fibp)
 convert from a LISP to a FIB prefix More...
 
u8format_ip_prefix (u8 *s, va_list *args)
 
uword unformat_ip_prefix (unformat_input_t *input, va_list *args)
 
bool ip_prefix_validate (const ip_prefix_t *ip)
 
void ip4_address_normalize (ip4_address_t *ip4, u8 preflen)
 
void ip6_address_normalize (ip6_address_t *ip6, u8 preflen)
 
void ip4_preflen_to_mask (u8 pref_len, ip4_address_t *ip)
 
u32 ip4_mask_to_preflen (ip4_address_t *mask)
 
void ip4_prefix_max_address_host_order (ip4_address_t *ip, u8 plen, ip4_address_t *res)
 
void ip6_prefix_max_address_host_order (ip6_address_t *ip, u8 plen, ip6_address_t *res)
 
void ip6_preflen_to_mask (u8 pref_len, ip6_address_t *mask)
 
u32 ip6_mask_to_preflen (ip6_address_t *mask)
 

Macro Definition Documentation

◆ FOR_EACH_IP_ADDRESS_FAMILY

#define FOR_EACH_IP_ADDRESS_FAMILY (   _af)    for (_af = AF_IP4; _af <= AF_IP6; _af++)

Definition at line 35 of file ip_types.h.

◆ ip_addr_46

#define ip_addr_46 (   _a)    (_a)->ip

Definition at line 57 of file ip_types.h.

◆ ip_addr_v4

#define ip_addr_v4 (   _a)    (_a)->ip.ip4

Definition at line 58 of file ip_types.h.

◆ ip_addr_v6

#define ip_addr_v6 (   _a)    (_a)->ip.ip6

Definition at line 59 of file ip_types.h.

◆ ip_addr_version

#define ip_addr_version (   _a)    (_a)->version

Definition at line 60 of file ip_types.h.

◆ IP_ADDRESS_V4_ALL_0S

#define IP_ADDRESS_V4_ALL_0S   {.ip.ip4.as_u32 = 0, .version = AF_IP4}

Definition at line 54 of file ip_types.h.

◆ IP_ADDRESS_V6_ALL_0S

#define IP_ADDRESS_V6_ALL_0S   {.ip.ip6.as_u64 = {0, 0}, .version = AF_IP6}

Definition at line 55 of file ip_types.h.

◆ ip_prefix_addr

#define ip_prefix_addr (   _a)    (_a)->addr

Definition at line 87 of file ip_types.h.

◆ ip_prefix_len

#define ip_prefix_len (   _a)    (_a)->len

Definition at line 89 of file ip_types.h.

◆ ip_prefix_v4

#define ip_prefix_v4 (   _a)    ip_addr_v4(&ip_prefix_addr(_a))

Definition at line 90 of file ip_types.h.

◆ ip_prefix_v6

#define ip_prefix_v6 (   _a)    ip_addr_v6(&ip_prefix_addr(_a))

Definition at line 91 of file ip_types.h.

◆ ip_prefix_version

#define ip_prefix_version (   _a)    ip_addr_version(&ip_prefix_addr(_a))

Definition at line 88 of file ip_types.h.

◆ N_AF [1/2]

#define N_AF   (AF_IP6+1)

Definition at line 29 of file ip_types.h.

◆ N_AF [2/2]

#define N_AF   (AF_IP6+1)

Definition at line 29 of file ip_types.h.

◆ u16_net_add

#define u16_net_add (   u,
  val 
)    clib_host_to_net_u16(clib_net_to_host_u16(u) + (val))

Definition at line 44 of file ip_types.h.

◆ u8_ptr_add

#define u8_ptr_add (   ptr,
  index 
)    (((u8 *)ptr) + index)

Definition at line 43 of file ip_types.h.

Typedef Documentation

◆ ip_address_family_t

◆ ip_address_t

typedef struct ip_address ip_address_t

◆ ip_prefix_t

typedef struct ip_prefix ip_prefix_t

Enumeration Type Documentation

◆ ip_address_family_t_

Enumerator
AF_IP4 
AF_IP6 

Definition at line 21 of file ip_types.h.

Function Documentation

◆ format_ip_address()

u8* format_ip_address ( u8 s,
va_list *  args 
)

Definition at line 21 of file ip_types.c.

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

◆ format_ip_address_family()

u8* format_ip_address_family ( u8 s,
va_list *  args 
)

Definition at line 106 of file ip.c.

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

◆ format_ip_prefix()

u8* format_ip_prefix ( u8 s,
va_list *  args 
)

Definition at line 56 of file ip_types.c.

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

◆ ip4_address_normalize()

void ip4_address_normalize ( ip4_address_t ip4,
u8  preflen 
)

Definition at line 446 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip4_mask_to_preflen()

u32 ip4_mask_to_preflen ( ip4_address_t mask)

Definition at line 485 of file ip_types.c.

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

◆ ip4_prefix_max_address_host_order()

void ip4_prefix_max_address_host_order ( ip4_address_t ip,
u8  plen,
ip4_address_t res 
)

Definition at line 493 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip4_preflen_to_mask()

void ip4_preflen_to_mask ( u8  pref_len,
ip4_address_t ip 
)

Definition at line 476 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip6_address_normalize()

void ip6_address_normalize ( ip6_address_t *  ip6,
u8  preflen 
)

Definition at line 456 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip6_mask_to_preflen()

u32 ip6_mask_to_preflen ( ip6_address_t *  mask)

Definition at line 547 of file ip_types.c.

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

◆ ip6_prefix_max_address_host_order()

void ip6_prefix_max_address_host_order ( ip6_address_t *  ip,
u8  plen,
ip6_address_t *  res 
)

Definition at line 524 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip6_preflen_to_mask()

void ip6_preflen_to_mask ( u8  pref_len,
ip6_address_t *  mask 
)

Definition at line 502 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip_addr_bytes()

u8* ip_addr_bytes ( ip_address_t ip)

Definition at line 146 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip_address_cmp()

int ip_address_cmp ( const ip_address_t ip1,
const ip_address_t ip2 
)

Definition at line 114 of file ip_types.c.

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

◆ ip_address_copy()

void ip_address_copy ( ip_address_t dst,
const ip_address_t src 
)

Definition at line 130 of file ip_types.c.

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

◆ ip_address_copy_addr()

void ip_address_copy_addr ( void *  dst,
const ip_address_t src 
)

Definition at line 161 of file ip_types.c.

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

◆ ip_address_family_from_fib_proto()

ip_address_family_t ip_address_family_from_fib_proto ( fib_protocol_t  fp)

Definition at line 235 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip_address_family_to_fib_proto()

fib_protocol_t ip_address_family_to_fib_proto ( ip_address_family_t  af)

Definition at line 221 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip_address_family_to_link_type()

vnet_link_t ip_address_family_to_link_type ( ip_address_family_t  af)

Definition at line 190 of file ip_types.c.

◆ ip_address_from_46()

void ip_address_from_46 ( const ip46_address_t *  a,
fib_protocol_t  fproto,
ip_address_t addr 
)

Definition at line 257 of file ip_types.c.

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

◆ ip_address_is_zero()

bool ip_address_is_zero ( const ip_address_t ip)

Definition at line 99 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip_address_set()

void ip_address_set ( ip_address_t dst,
const void *  src,
u8  version 
)

Definition at line 205 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip_address_size()

u16 ip_address_size ( const ip_address_t a)

Definition at line 84 of file ip_types.c.

+ Here is the caller graph for this function:

◆ ip_address_to_46()

fib_protocol_t ip_address_to_46 ( const ip_address_t addr,
ip46_address_t *  a 
)

Definition at line 250 of file ip_types.c.

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

◆ ip_address_to_fib_prefix()

void ip_address_to_fib_prefix ( const ip_address_t addr,
fib_prefix_t prefix 
)

convert from a IP address to a FIB prefix

Definition at line 268 of file ip_types.c.

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

◆ ip_prefix_cmp()

int ip_prefix_cmp ( ip_prefix_t p1,
ip_prefix_t p2 
)

Definition at line 368 of file ip_types.c.

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

◆ ip_prefix_normalize()

void ip_prefix_normalize ( ip_prefix_t a)

Definition at line 342 of file ip_types.c.

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

◆ ip_prefix_to_fib_prefix()

void ip_prefix_to_fib_prefix ( const ip_prefix_t ipp,
fib_prefix_t fibp 
)

convert from a LISP to a FIB prefix

Definition at line 395 of file ip_types.c.

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

◆ ip_prefix_validate()

bool ip_prefix_validate ( const ip_prefix_t ip)

Definition at line 432 of file ip_types.c.

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

◆ ip_version_to_size()

u16 ip_version_to_size ( ip_address_family_t  af)

Definition at line 175 of file ip_types.c.

+ Here is the caller graph for this function:

◆ unformat_ip_address()

uword unformat_ip_address ( unformat_input_t input,
va_list *  args 
)

Definition at line 41 of file ip_types.c.

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

◆ unformat_ip_address_family()

uword unformat_ip_address_family ( unformat_input_t input,
va_list *  args 
)

Definition at line 122 of file ip.c.

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

◆ unformat_ip_prefix()

uword unformat_ip_prefix ( unformat_input_t input,
va_list *  args 
)

Definition at line 64 of file ip_types.c.

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