ip: Protocol Independent IP Neighbors
[vpp.git] / src / vnet / adj / adj.h
index 4c38b04..1a841ed 100644 (file)
@@ -150,7 +150,7 @@ struct ip_adjacency_t_;
  * @brief A function type for post-rewrite fixups on midchain adjacency
  */
 typedef void (*adj_midchain_fixup_t) (vlib_main_t * vm,
-                                     struct ip_adjacency_t_ * adj,
+                                     const struct ip_adjacency_t_ * adj,
                                      vlib_buffer_t * b0,
                                       const void *data);
 
@@ -216,14 +216,14 @@ extern u8* format_adj_flags(u8 * s, va_list * args);
  * @brief IP unicast adjacency.
  *  @note cache aligned.
  *
- * An adjacency is a represenation of a peer on a particular link.
+ * An adjacency is a representation of a peer on a particular link.
  */
 typedef struct ip_adjacency_t_
 {
   CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
 
   /**
-   * Linkage into the FIB node grpah. First member since this type
+   * Linkage into the FIB node graph. First member since this type
    * has 8 byte alignment requirements.
    */
   fib_node_t ia_node;
@@ -243,7 +243,7 @@ typedef struct ip_adjacency_t_
 
   /**
    * The protocol of the neighbor/peer. i.e. the protocol with
-   * which to interpret the 'next-hop' attirbutes of the sub-types.
+   * which to interpret the 'next-hop' attributes of the sub-types.
    * 1-btyes
    */
   fib_protocol_t ia_nh_proto;
@@ -316,7 +316,7 @@ typedef struct ip_adjacency_t_
   CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
 
   /* Rewrite in second/third cache lines */
-  vnet_declare_rewrite (VLIB_BUFFER_PRE_DATA_SIZE);
+  VNET_DECLARE_REWRITE;
 
   /**
    * more control plane members that do not fit on the first cacheline
@@ -326,13 +326,17 @@ typedef struct ip_adjacency_t_
    */
   struct adj_delegate_t_ *ia_delegates;
 
+  /**
+   * The VLIB node in which this adj is used to forward packets
+   */
+  u32 ia_node_index;
 } ip_adjacency_t;
 
 STATIC_ASSERT ((STRUCT_OFFSET_OF (ip_adjacency_t, cacheline0) == 0),
-              "IP adjacency cachline 0 is not offset");
+              "IP adjacency cacheline 0 is not offset");
 STATIC_ASSERT ((STRUCT_OFFSET_OF (ip_adjacency_t, cacheline1) ==
                CLIB_CACHE_LINE_BYTES),
-              "IP adjacency cachline 1 is more than one cachline size offset");
+              "IP adjacency cacheline 1 is more than one cacheline size offset");
 
 /**
  * @brief
@@ -389,12 +393,6 @@ extern int adj_is_up (adj_index_t ai);
  */
 extern const u8* adj_get_rewrite (adj_index_t ai);
 
-/**
- * @brief Notify the adjacency subsystem that the features settings for
- * an interface have changed
- */
-extern void adj_feature_update (u32 sw_if_index, u8 arc_index, u8 is_enable);
-
 /**
  * @brief descend the FIB graph looking for loops
  *
@@ -409,7 +407,7 @@ extern int adj_recursive_loop_detect (adj_index_t ai,
 
 /**
  * @brief
- * The global adjacnecy pool. Exposed for fast/inline data-plane access
+ * The global adjacency pool. Exposed for fast/inline data-plane access
  */
 extern ip_adjacency_t *adj_pool;