FD.io VPP
v17.04-9-g99c0734
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | adj_db_count_ctx_t_ |
struct | adj_walk_ctx_t_ |
Context for a walk of the adjacency neighbour DB. More... | |
struct | adj_walk_nh_ctx_t_ |
Context for a walk of the adjacency neighbour DB. More... | |
struct | adj_nbr_interface_state_change_ctx_t_ |
Context for the state change walk of the DB. More... | |
Macros | |
#define | ADJ_NBR_DEFAULT_HASH_NUM_BUCKETS (64 * 64) |
#define | ADJ_NBR_DEFAULT_HASH_MEMORY_SIZE (32<<20) |
#define | ADJ_NBR_SET_KEY(_key, _lt, _nh) |
#define | ADJ_NBR_ITF_OK(_proto, _itf) |
Typedefs | |
typedef struct adj_db_count_ctx_t_ | adj_db_count_ctx_t |
typedef struct adj_walk_ctx_t_ | adj_walk_ctx_t |
Context for a walk of the adjacency neighbour DB. More... | |
typedef struct adj_walk_nh_ctx_t_ | adj_walk_nh_ctx_t |
Context for a walk of the adjacency neighbour DB. More... | |
typedef enum adj_nbr_interface_flags_t_ | adj_nbr_interface_flags_t |
Flags associated with the interface state walks. More... | |
typedef struct adj_nbr_interface_state_change_ctx_t_ | adj_nbr_interface_state_change_ctx_t |
Context for the state change walk of the DB. More... | |
Enumerations | |
enum | adj_nbr_interface_flags_t_ { ADJ_NBR_INTERFACE_UP = (1 << 0) } |
Flags associated with the interface state walks. More... | |
Functions | |
static | BVT (clib_bihash) |
void | adj_nbr_remove (adj_index_t ai, fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index) |
static adj_index_t | adj_nbr_find (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index) |
static u32 | adj_get_nd_node (fib_protocol_t proto) |
static void | adj_nbr_evaluate_feature (adj_index_t ai) |
Check and set feature flags if o/p interface has any o/p features. More... | |
static ip_adjacency_t * | adj_nbr_alloc (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index) |
adj_index_t | adj_nbr_add_or_lock (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index) |
Neighbour Adjacency sub-type. More... | |
adj_index_t | adj_nbr_add_or_lock_w_rewrite (fib_protocol_t nh_proto, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index, u8 *rewrite) |
Add (and lock) a new or lock an existing neighbour adjacency. More... | |
void | adj_nbr_update_rewrite (adj_index_t adj_index, adj_nbr_rewrite_flag_t flags, u8 *rewrite) |
adj_nbr_update_rewrite More... | |
void | adj_nbr_update_rewrite_internal (ip_adjacency_t *adj, u32 adj_next_index, u32 this_node, u32 next_node, u8 *rewrite) |
adj_nbr_update_rewrite_internal More... | |
static void | adj_db_count (BVT(clib_bihash_kv)*kvp, void *arg) |
u32 | adj_nbr_db_size (void) |
Return the size of the adjacency database. More... | |
static void | adj_nbr_walk_cb (BVT(clib_bihash_kv)*kvp, void *arg) |
void | adj_nbr_walk (u32 sw_if_index, fib_protocol_t adj_nh_proto, adj_walk_cb_t cb, void *ctx) |
Walk the neighbour Adjacencies on a given interface. More... | |
static void | adj_nbr_walk_nh_cb (BVT(clib_bihash_kv)*kvp, void *arg) |
void | adj_nbr_walk_nh4 (u32 sw_if_index, const ip4_address_t *addr, adj_walk_cb_t cb, void *ctx) |
Walk adjacencies on a link with a given v4 next-hop. More... | |
void | adj_nbr_walk_nh6 (u32 sw_if_index, const ip6_address_t *addr, adj_walk_cb_t cb, void *ctx) |
Walk adjacencies on a link with a given v6 next-hop. More... | |
void | adj_nbr_walk_nh (u32 sw_if_index, fib_protocol_t adj_nh_proto, const ip46_address_t *nh, adj_walk_cb_t cb, void *ctx) |
Walk adjacencies on a link with a given next-hop. More... | |
static adj_walk_rc_t | adj_nbr_interface_state_change_one (adj_index_t ai, void *arg) |
static clib_error_t * | adj_nbr_sw_interface_state_change (vnet_main_t *vnm, u32 sw_if_index, u32 flags) |
Registered function for SW interface state changes. More... | |
VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION_PRIO (adj_nbr_sw_interface_state_change, VNET_ITF_FUNC_PRIORITY_HIGH) | |
static void | adj_nbr_hw_sw_interface_state_change (vnet_main_t *vnm, u32 sw_if_index, void *arg) |
Invoked on each SW interface of a HW interface when the HW interface state changes. More... | |
static clib_error_t * | adj_nbr_hw_interface_state_change (vnet_main_t *vnm, u32 hw_if_index, u32 flags) |
Registered callback for HW interface state changes. More... | |
VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION_PRIO (adj_nbr_hw_interface_state_change, VNET_ITF_FUNC_PRIORITY_HIGH) | |
static adj_walk_rc_t | adj_nbr_interface_delete_one (adj_index_t ai, void *arg) |
static clib_error_t * | adj_nbr_interface_add_del (vnet_main_t *vnm, u32 sw_if_index, u32 is_add) |
adj_nbr_interface_add_del More... | |
VNET_SW_INTERFACE_ADD_DEL_FUNCTION (adj_nbr_interface_add_del) | |
static adj_walk_rc_t | adj_nbr_show_one (adj_index_t ai, void *arg) |
static clib_error_t * | adj_nbr_show (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd) |
static ip46_type_t | adj_proto_to_46 (fib_protocol_t proto) |
u8 * | format_adj_nbr_incomplete (u8 *s, va_list *ap) |
Format aa incomplete neigbour (ARP) adjacency. More... | |
u8 * | format_adj_nbr (u8 *s, va_list *ap) |
Format a neigbour (REWRITE) adjacency. More... | |
static void | adj_dpo_lock (dpo_id_t *dpo) |
static void | adj_dpo_unlock (dpo_id_t *dpo) |
static void | adj_mem_show (void) |
void | adj_nbr_module_init (void) |
Module initialisation. More... | |
Variables | |
static vlib_cli_command_t | ip4_show_fib_command |
(constructor) VLIB_CLI_COMMAND (ip4_show_fib_command) More... | |
static const dpo_vft_t | adj_nbr_dpo_vft |
static const dpo_vft_t | adj_nbr_incompl_dpo_vft |
static const char *const | nbr_ip4_nodes [] |
The per-protocol VLIB graph nodes that are assigned to an adjacency object. More... | |
static const char *const | nbr_ip6_nodes [] |
static const char *const | nbr_mpls_nodes [] |
static const char *const | nbr_ethernet_nodes [] |
static const char *const *const | nbr_nodes [DPO_PROTO_NUM] |
static const char *const | nbr_incomplete_ip4_nodes [] |
static const char *const | nbr_incomplete_ip6_nodes [] |
static const char *const | nbr_incomplete_mpls_nodes [] |
static const char *const *const | nbr_incomplete_nodes [DPO_PROTO_NUM] |
#define ADJ_NBR_DEFAULT_HASH_MEMORY_SIZE (32<<20) |
#define ADJ_NBR_DEFAULT_HASH_NUM_BUCKETS (64 * 64) |
#define ADJ_NBR_ITF_OK | ( | _proto, | |
_itf | |||
) |
#define ADJ_NBR_SET_KEY | ( | _key, | |
_lt, | |||
_nh | |||
) |
typedef struct adj_db_count_ctx_t_ adj_db_count_ctx_t |
typedef enum adj_nbr_interface_flags_t_ adj_nbr_interface_flags_t |
Flags associated with the interface state walks.
Context for the state change walk of the DB.
typedef struct adj_walk_ctx_t_ adj_walk_ctx_t |
Context for a walk of the adjacency neighbour DB.
typedef struct adj_walk_nh_ctx_t_ adj_walk_nh_ctx_t |
Context for a walk of the adjacency neighbour DB.
|
static |
|
static |
|
static |
|
inlinestatic |
|
static |
adj_index_t adj_nbr_add_or_lock | ( | fib_protocol_t | nh_proto, |
vnet_link_t | link_type, | ||
const ip46_address_t * | nh_addr, | ||
u32 | sw_if_index | ||
) |
Neighbour Adjacency sub-type.
These adjs represent an L3 peer on a connected link.
Add (and lock) a new or lock an existing neighbour adjacency
nh_proto | The protocol for the next-hop address (v4 or v6) |
link_type | A description of the protocol of the packets that will forward through this adj. On an ethernet interface this is the MAC header's ether-type |
nh_addr | The address of the next-hop/peer to send the packet to |
sw_if_index | The interface on which the peer resides |
Definition at line 216 of file adj_nbr.c.
adj_index_t adj_nbr_add_or_lock_w_rewrite | ( | fib_protocol_t | nh_proto, |
vnet_link_t | link_type, | ||
const ip46_address_t * | nh_addr, | ||
u32 | sw_if_index, | ||
u8 * | rewrite | ||
) |
Add (and lock) a new or lock an existing neighbour adjacency.
nh_proto | The protocol for the next-hop address (v4 or v6) |
link_type | A description of the protocol of the packets that will forward through this adj. On an ethernet interface this is the MAC header's ether-type |
nh_addr | The address of the next-hop/peer to send the packet to |
sw_if_index | The interface on which the peer resides |
rewrite | The rewrite to prepend to packets |
Definition at line 256 of file adj_nbr.c.
|
static |
u32 adj_nbr_db_size | ( | void | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
void adj_nbr_module_init | ( | void | ) |
void adj_nbr_remove | ( | adj_index_t | ai, |
fib_protocol_t | nh_proto, | ||
vnet_link_t | link_type, | ||
const ip46_address_t * | nh_addr, | ||
u32 | sw_if_index | ||
) |
|
static |
|
static |
|
static |
void adj_nbr_update_rewrite | ( | adj_index_t | adj_index, |
adj_nbr_rewrite_flag_t | flags, | ||
u8 * | rewrite | ||
) |
adj_nbr_update_rewrite
Update the rewrite string for an existing adjacecny.
Update the adjacency's rewrite string. A NULL string implies the rewirte is reset (i.e. when ARP/ND etnry is gone). NB: the adj being updated may be handling traffic in the DP.
Definition at line 293 of file adj_nbr.c.
void adj_nbr_update_rewrite_internal | ( | ip_adjacency_t * | adj, |
u32 | adj_next_index, | ||
u32 | this_node, | ||
u32 | next_node, | ||
u8 * | rewrite | ||
) |
adj_nbr_update_rewrite_internal
Update the adjacency's rewrite string. A NULL string implies the rewirte is reset (i.e. when ARP/ND etnry is gone). NB: the adj being updated may be handling traffic in the DP.
Definition at line 335 of file adj_nbr.c.
void adj_nbr_walk | ( | u32 | sw_if_index, |
fib_protocol_t | adj_nh_proto, | ||
adj_walk_cb_t | cb, | ||
void * | ctx | ||
) |
|
static |
void adj_nbr_walk_nh | ( | u32 | sw_if_index, |
fib_protocol_t | adj_nh_proto, | ||
const ip46_address_t * | nh, | ||
adj_walk_cb_t | cb, | ||
void * | ctx | ||
) |
Walk adjacencies on a link with a given next-hop.
Walk the neighbour Adjacencies on a given interface with a given next-hop.
that is visit the adjacencies with different link types.
Definition at line 674 of file adj_nbr.c.
void adj_nbr_walk_nh4 | ( | u32 | sw_if_index, |
const ip4_address_t * | addr, | ||
adj_walk_cb_t | cb, | ||
void * | ctx | ||
) |
void adj_nbr_walk_nh6 | ( | u32 | sw_if_index, |
const ip6_address_t * | addr, | ||
adj_walk_cb_t | cb, | ||
void * | ctx | ||
) |
|
static |
|
static |
|
static |
VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION_PRIO | ( | adj_nbr_hw_interface_state_change | , |
VNET_ITF_FUNC_PRIORITY_HIGH | |||
) |
VNET_SW_INTERFACE_ADD_DEL_FUNCTION | ( | adj_nbr_interface_add_del | ) |
VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION_PRIO | ( | adj_nbr_sw_interface_state_change | , |
VNET_ITF_FUNC_PRIORITY_HIGH | |||
) |
|
static |
|
static |
|
static |
(constructor) VLIB_CLI_COMMAND (ip4_show_fib_command)
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |