fib: Source Address Selection
[vpp.git] / src / vnet / adj / adj_internal.h
index 2c123c5..6639d32 100644 (file)
@@ -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