FD.io VPP  v20.01-48-g3e0dafb74
Vector Packet Processing
ip_adjacency_t_ Struct Reference

IP unicast adjacency. More...

+ Collaboration diagram for ip_adjacency_t_:

Public Member Functions

 CLIB_CACHE_LINE_ALIGN_MARK (cacheline0)
 
 CLIB_CACHE_LINE_ALIGN_MARK (cacheline1)
 

Data Fields

fib_node_t ia_node
 Linkage into the FIB node graph. More...
 
ip_lookup_next_t lookup_next_index
 Next hop after ip4-lookup. More...
 
vnet_link_t ia_link
 link/ether-type 1 bytes More...
 
fib_protocol_t ia_nh_proto
 The protocol of the neighbor/peer. More...
 
adj_flags_t ia_flags
 Flags on the adjacency 1-bytes. More...
 
union {
   struct {
      ip46_address_t   next_hop
 
   }   nbr
 IP_LOOKUP_NEXT_ARP/IP_LOOKUP_NEXT_REWRITE. More...
 
   struct {
      ip46_address_t   next_hop
 The recursive next-hop. More...
 
      dpo_id_t   next_dpo
 The next DPO to use. More...
 
      adj_midchain_fixup_t   fixup_func
 A function to perform the post-rewrite fixup. More...
 
      const void *   fixup_data
 Fixup data passed back to the client in the fixup function. More...
 
      fib_node_index_t   fei
 the FIB entry this midchain resolves through. More...
 
   }   midchain
 IP_LOOKUP_NEXT_MIDCHAIN. More...
 
   struct {
      ip46_address_t   receive_addr
 
   }   glean
 IP_LOOKUP_NEXT_GLEAN. More...
 
sub_type
 
 VNET_DECLARE_REWRITE
 
struct adj_delegate_t_ia_delegates
 more control plane members that do not fit on the first cacheline More...
 
u32 ia_node_index
 The VLIB node in which this adj is used to forward packets. More...
 

Detailed Description

IP unicast adjacency.

Note
cache aligned.

An adjacency is a representation of a peer on a particular link.

Definition at line 221 of file adj.h.

Member Function Documentation

◆ CLIB_CACHE_LINE_ALIGN_MARK() [1/2]

ip_adjacency_t_::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline0  )

◆ CLIB_CACHE_LINE_ALIGN_MARK() [2/2]

ip_adjacency_t_::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline1  )

Field Documentation

◆ fei

fib_node_index_t ip_adjacency_t_::fei

the FIB entry this midchain resolves through.

required for recursive loop detection.

Definition at line 300 of file adj.h.

◆ fixup_data

const void* ip_adjacency_t_::fixup_data

Fixup data passed back to the client in the fixup function.

Definition at line 295 of file adj.h.

◆ fixup_func

adj_midchain_fixup_t ip_adjacency_t_::fixup_func

A function to perform the post-rewrite fixup.

Definition at line 291 of file adj.h.

◆ glean

struct { ... } ip_adjacency_t_::glean

IP_LOOKUP_NEXT_GLEAN.

Glean the address to ARP for from the packet's destination. Technically these aren't adjacencies, i.e. they are not a representation of a peer. One day we might untangle this coupling and use a new Glean DPO.

◆ ia_delegates

struct adj_delegate_t_* ip_adjacency_t_::ia_delegates

more control plane members that do not fit on the first cacheline

A sorted vector of delegates

Definition at line 327 of file adj.h.

◆ ia_flags

adj_flags_t ip_adjacency_t_::ia_flags

Flags on the adjacency 1-bytes.

Definition at line 255 of file adj.h.

◆ ia_link

vnet_link_t ip_adjacency_t_::ia_link

link/ether-type 1 bytes

Definition at line 242 of file adj.h.

◆ ia_nh_proto

fib_protocol_t ip_adjacency_t_::ia_nh_proto

The protocol of the neighbor/peer.

i.e. the protocol with which to interpret the 'next-hop' attributes of the sub-types. 1-btyes

Definition at line 249 of file adj.h.

◆ ia_node

fib_node_t ip_adjacency_t_::ia_node

Linkage into the FIB node graph.

First member since this type has 8 byte alignment requirements.

Definition at line 229 of file adj.h.

◆ ia_node_index

u32 ip_adjacency_t_::ia_node_index

The VLIB node in which this adj is used to forward packets.

Definition at line 332 of file adj.h.

◆ lookup_next_index

ip_lookup_next_t ip_adjacency_t_::lookup_next_index

Next hop after ip4-lookup.

This is not accessed in the rewrite nodes. 1-bytes

Definition at line 236 of file adj.h.

◆ midchain

struct { ... } ip_adjacency_t_::midchain

IP_LOOKUP_NEXT_MIDCHAIN.

A nbr adj that is also recursive. Think tunnels. A nbr adj can transition to be of type MDICHAIN so be sure to leave the two structs with the next_hop fields aligned.

◆ nbr

struct { ... } ip_adjacency_t_::nbr

IP_LOOKUP_NEXT_ARP/IP_LOOKUP_NEXT_REWRITE.

neighbour adjacency sub-type;

◆ next_dpo

dpo_id_t ip_adjacency_t_::next_dpo

The next DPO to use.

Definition at line 287 of file adj.h.

◆ next_hop

ip46_address_t ip_adjacency_t_::next_hop

The recursive next-hop.

This field MUST be at the same memory location as sub_type.nbr.next_hop

Definition at line 266 of file adj.h.

◆ receive_addr

ip46_address_t ip_adjacency_t_::receive_addr

Definition at line 312 of file adj.h.

◆ sub_type

union { ... } ip_adjacency_t_::sub_type

◆ VNET_DECLARE_REWRITE

ip_adjacency_t_::VNET_DECLARE_REWRITE

Definition at line 319 of file adj.h.


The documentation for this struct was generated from the following file: