Go to the source code of this file.
|
static u32 | adj_get_glean_node (fib_protocol_t proto) |
|
static adj_index_t | adj_glean_db_lookup (fib_protocol_t proto, u32 sw_if_index, const ip46_address_t *nh_addr) |
|
static void | adj_glean_db_insert (fib_protocol_t proto, u32 sw_if_index, const ip46_address_t *nh_addr, adj_index_t ai) |
|
static void | adj_glean_db_remove (fib_protocol_t proto, u32 sw_if_index, const ip46_address_t *nh_addr) |
|
adj_index_t | adj_glean_add_or_lock (fib_protocol_t proto, vnet_link_t linkt, u32 sw_if_index, const fib_prefix_t *conn) |
| Glean Adjacency. More...
|
|
void | adj_glean_update_rewrite (adj_index_t adj_index) |
| adj_glean_update_rewrite More...
|
|
static adj_walk_rc_t | adj_glean_update_rewrite_walk (adj_index_t ai, void *data) |
|
void | adj_glean_update_rewrite_itf (u32 sw_if_index) |
|
void | adj_glean_walk (u32 sw_if_index, adj_walk_cb_t cb, void *data) |
| Walk all the gleans on an interface. More...
|
|
adj_index_t | adj_glean_get (fib_protocol_t proto, u32 sw_if_index, const ip46_address_t *nh) |
| Get an existing glean. More...
|
|
const ip46_address_t * | adj_glean_get_src (fib_protocol_t proto, u32 sw_if_index, const ip46_address_t *nh) |
| Return the source address from the glean. More...
|
|
void | adj_glean_remove (ip_adjacency_t *adj) |
|
static adj_walk_rc_t | adj_glean_start_backwalk (adj_index_t ai, void *data) |
|
static clib_error_t * | adj_glean_interface_state_change (vnet_main_t *vnm, u32 sw_if_index, u32 flags) |
|
| VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION (adj_glean_interface_state_change) |
|
static walk_rc_t | 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_glean_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 (adj_glean_hw_interface_state_change) |
|
static clib_error_t * | adj_glean_interface_delete (vnet_main_t *vnm, u32 sw_if_index, u32 is_add) |
|
| VNET_SW_INTERFACE_ADD_DEL_FUNCTION (adj_glean_interface_delete) |
|
u8 * | format_adj_glean (u8 *s, va_list *ap) |
| Format/display a glean adjacency. More...
|
|
u32 | adj_glean_db_size (void) |
| Return the size of the adjacency database. More...
|
|
static void | adj_dpo_lock (dpo_id_t *dpo) |
|
static void | adj_dpo_unlock (dpo_id_t *dpo) |
|
void | adj_glean_module_init (void) |
| Module initialisation. More...
|
|
◆ adj_dpo_lock()
static void adj_dpo_lock |
( |
dpo_id_t * |
dpo | ) |
|
|
static |
◆ adj_dpo_unlock()
static void adj_dpo_unlock |
( |
dpo_id_t * |
dpo | ) |
|
|
static |
◆ adj_get_glean_node()
◆ adj_glean_add_or_lock()
Glean Adjacency.
A gleean adjacency represent the need to discover new peers on an attached link. Packets that hit a glean adjacency will generate an ARP/ND packet addessesed to the packet's destination address. Note this is different to an incomplete neighbour adjacency, which does not send ARP/ND requests to the packet's destination address, but instead to the next-hop address of the adjacency itself.
Add (and lock) a new or lock an existing glean adjacency
- Parameters
-
proto | The protocol for the neighbours that we wish to glean |
sw_if_index | The interface on which to glean |
nh_addr | the address applied to the interface on which to glean. This as the source address in packets when the ARP/ND packet is sent |
Definition at line 112 of file adj_glean.c.
◆ adj_glean_db_insert()
◆ adj_glean_db_lookup()
◆ adj_glean_db_remove()
static void adj_glean_db_remove |
( |
fib_protocol_t |
proto, |
|
|
u32 |
sw_if_index, |
|
|
const ip46_address_t * |
nh_addr |
|
) |
| |
|
static |
◆ adj_glean_db_size()
u32 adj_glean_db_size |
( |
void |
| ) |
|
Return the size of the adjacency database.
for testing purposes
Definition at line 445 of file adj_glean.c.
◆ adj_glean_get()
Get an existing glean.
- Returns
- INVALID if it does not exist
Definition at line 231 of file adj_glean.c.
◆ adj_glean_get_src()
const ip46_address_t* adj_glean_get_src |
( |
fib_protocol_t |
proto, |
|
|
u32 |
sw_if_index, |
|
|
const ip46_address_t * |
nh |
|
) |
| |
Return the source address from the glean.
Definition at line 257 of file adj_glean.c.
◆ adj_glean_hw_interface_state_change()
Registered callback for HW interface state changes.
Definition at line 368 of file adj_glean.c.
◆ adj_glean_interface_delete()
◆ adj_glean_interface_state_change()
◆ adj_glean_module_init()
void adj_glean_module_init |
( |
void |
| ) |
|
◆ adj_glean_remove()
◆ adj_glean_start_backwalk()
◆ adj_glean_update_rewrite()
adj_glean_update_rewrite
Called by an adjacency provider (an interface type) to configure a glean adj (i.e. and adjacency linked to a connected prefix) to its default behaviour. Other interface types (i.e. 6RD tunnels) can can choose not to use glean behaviour on an adjacency liked to a connected prefix.
Definition at line 163 of file adj_glean.c.
◆ adj_glean_update_rewrite_itf()
void adj_glean_update_rewrite_itf |
( |
u32 |
sw_if_index | ) |
|
◆ adj_glean_update_rewrite_walk()
◆ adj_glean_walk()
Walk all the gleans on an interface.
Definition at line 196 of file adj_glean.c.
◆ adj_nbr_hw_sw_interface_state_change()
Invoked on each SW interface of a HW interface when the HW interface state changes.
Definition at line 355 of file adj_glean.c.
◆ format_adj_glean()
u8* format_adj_glean |
( |
u8 * |
s, |
|
|
va_list * |
ap |
|
) |
| |
Format/display a glean adjacency.
Definition at line 429 of file adj_glean.c.
◆ VNET_HW_INTERFACE_LINK_UP_DOWN_FUNCTION()
◆ VNET_SW_INTERFACE_ADD_DEL_FUNCTION()
◆ VNET_SW_INTERFACE_ADMIN_UP_DOWN_FUNCTION()
◆ adj_glean_dpo_vft
Initial value:= {
}
u32 adj_dpo_get_urpf(const dpo_id_t *dpo)
static void adj_dpo_unlock(dpo_id_t *dpo)
static void adj_dpo_lock(dpo_id_t *dpo)
u8 * format_adj_glean(u8 *s, va_list *ap)
Format/display a glean adjacency.
Definition at line 475 of file adj_glean.c.
◆ adj_gleans
◆ glean_ip4_nodes
const char* const glean_ip4_nodes[] |
|
static |
Initial value:
The per-protocol VLIB graph nodes that are assigned to a glean object.
this means that these graph nodes are ones from which a glean is the parent object in the DPO-graph.
Definition at line 489 of file adj_glean.c.
◆ glean_ip6_nodes
const char* const glean_ip6_nodes[] |
|
static |
◆ glean_nodes
Initial value:=
{
}
static const char *const glean_ip4_nodes[]
The per-protocol VLIB graph nodes that are assigned to a glean object.
static const char *const glean_ip6_nodes[]
Definition at line 500 of file adj_glean.c.