FD.io VPP  v20.05-21-gb1500e9ff
Vector Packet Processing
ip_adjacency_t_ Struct Reference

IP unicast adjacency. More...

+ Collaboration diagram for ip_adjacency_t_:

Public Member Functions

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

Data Fields

fib_node_t ia_node
 Linkage into the FIB node graph. More...
u32 ia_cfg_index
 feature [arc] config index More...
union {
   struct {
      ip46_address_t   next_hop
   }   nbr
   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
   struct {
      ip46_address_t   receive_addr
   }   glean
 Rewrite in second and third cache lines. More...
struct adj_delegate_t_ia_delegates
 A sorted vector of delegates. More...
u32 ia_node_index
 The VLIB node in which this adj is used to forward packets. 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...

Detailed Description

IP unicast adjacency.

cache aligned.

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

Definition at line 227 of file adj.h.

Member Function Documentation


ip_adjacency_t_::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline0  )


ip_adjacency_t_::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline1  )


ip_adjacency_t_::CLIB_CACHE_LINE_ALIGN_MARK ( cacheline3  )

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

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 284 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 279 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 275 of file adj.h.

◆ glean

struct { ... } ip_adjacency_t_::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_cfg_index

u32 ip_adjacency_t_::ia_cfg_index

feature [arc] config index

Definition at line 239 of file adj.h.

◆ ia_delegates

struct adj_delegate_t_* ip_adjacency_t_::ia_delegates

A sorted vector of delegates.

Definition at line 317 of file adj.h.

◆ ia_flags

adj_flags_t ip_adjacency_t_::ia_flags

Flags on the adjacency 1-bytes.

Definition at line 348 of file adj.h.

◆ ia_link

vnet_link_t ip_adjacency_t_::ia_link

link/ether-type 1 bytes

Definition at line 335 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-bytes

Definition at line 342 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 235 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 322 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 329 of file adj.h.

◆ midchain

struct { ... } ip_adjacency_t_::midchain


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

◆ nbr

struct { ... } ip_adjacency_t_::nbr


neighbour adjacency sub-type;

◆ next_dpo

dpo_id_t ip_adjacency_t_::next_dpo

The next DPO to use.

Definition at line 271 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 250 of file adj.h.

◆ receive_addr

ip46_address_t ip_adjacency_t_::receive_addr

Definition at line 300 of file adj.h.

◆ sub_type

union { ... } ip_adjacency_t_::sub_type



Rewrite in second and third cache lines.

Definition at line 307 of file adj.h.

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