X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fadj%2Fadj_internal.h;h=6639d32267fba32bb25e427f9574eb5cd4416409;hb=e2fe09742;hp=2c123c542a1c87f02530ee3f5b2c8e3a789dfbd8;hpb=0f26c5a0138ac86d7ebd197c31a09d8d624c35fe;p=vpp.git diff --git a/src/vnet/adj/adj_internal.h b/src/vnet/adj/adj_internal.h index 2c123c542a1..6639d32267f 100644 --- a/src/vnet/adj/adj_internal.h +++ b/src/vnet/adj/adj_internal.h @@ -53,7 +53,7 @@ adj_get_rewrite_node (vnet_link_t linkt) case VNET_LINK_MPLS: return (mpls_output_node.index); case VNET_LINK_ETHERNET: - return (adj_l2_rewrite_node.index); + return (adj_l2_rewrite_node.index); case VNET_LINK_NSH: return (adj_nsh_rewrite_node.index); case VNET_LINK_ARP: @@ -78,12 +78,27 @@ adj_fib_proto_2_nd (fib_protocol_t fp) return (0); } +static inline ip46_type_t +adj_proto_to_46 (fib_protocol_t proto) +{ + switch (proto) + { + case FIB_PROTOCOL_IP4: + return (IP46_TYPE_IP4); + case FIB_PROTOCOL_IP6: + return (IP46_TYPE_IP6); + default: + return (IP46_TYPE_IP4); + } + return (IP46_TYPE_IP4); +} + /** * @brief * Get a pointer to an adjacency object from its index */ static inline adj_index_t -adj_get_index (ip_adjacency_t *adj) +adj_get_index (const ip_adjacency_t *adj) { return (adj - adj_pool); } @@ -95,6 +110,7 @@ extern void adj_nbr_update_rewrite_internal(ip_adjacency_t *adj, u8 *rewrite); extern void adj_midchain_setup(adj_index_t adj_index, adj_midchain_fixup_t fixup, + const void *data, adj_flags_t flags); extern ip_adjacency_t * adj_alloc(fib_protocol_t proto); @@ -104,9 +120,24 @@ extern void adj_nbr_remove(adj_index_t ai, vnet_link_t link_type, const ip46_address_t *nh_addr, u32 sw_if_index); -extern void adj_glean_remove(fib_protocol_t proto, - u32 sw_if_index); +extern void adj_glean_remove(ip_adjacency_t *adj); extern void adj_mcast_remove(fib_protocol_t proto, u32 sw_if_index); +extern void adj_midchain_teardown(ip_adjacency_t *adj); + +extern u32 adj_dpo_get_urpf(const dpo_id_t *dpo); + +/* + * Adj BFD + */ +extern int adj_bfd_is_up (adj_index_t ai); + +/* + * Adj delegates + */ +extern void adj_delegate_adj_deleted(ip_adjacency_t *adj); +extern void adj_delegate_adj_created(ip_adjacency_t *adj); +extern void adj_delegate_adj_modified(ip_adjacency_t *adj); +extern u8* adj_delegate_format(u8* s, ip_adjacency_t *adj); #endif