Add extern to *_main global variable declarations in header files.
[vpp.git] / src / plugins / ioam / ip6 / ioam_cache.h
index 75ec784..338ed98 100644 (file)
@@ -20,7 +20,7 @@
 #include <vnet/ip/ip_packet.h>
 #include <vnet/ip/ip4_packet.h>
 #include <vnet/ip/ip6_packet.h>
-#include <vnet/sr/sr.h>
+#include <vnet/srv6/sr.h>
 
 #include <vppinfra/pool.h>
 #include <vppinfra/hash.h>
@@ -173,6 +173,7 @@ typedef struct
   /* The current rewrite string being used */
   u8 *rewrite;
   u8 rewrite_pool_index_offset;
+  ip6_address_t sr_localsid_cache;
 
   u64 lookup_table_nbuckets;
   u64 lookup_table_size;
@@ -190,6 +191,7 @@ typedef struct
    */
   bool criteria_oneway;
   u8 wait_for_responses;
+  ip6_address_t sr_localsid_ts;
 
   /* convenience */
   vlib_main_t *vlib_main;
@@ -201,7 +203,7 @@ typedef struct
   u32 cleanup_process_node_index;
 } ioam_cache_main_t;
 
-ioam_cache_main_t ioam_cache_main;
+extern ioam_cache_main_t ioam_cache_main;
 
 extern vlib_node_registration_t ioam_cache_node;
 extern vlib_node_registration_t ioam_cache_ts_node;
@@ -276,17 +278,11 @@ typedef CLIB_PACKED (struct
 
 static inline void
 ioam_e2e_id_rewrite_handler (ioam_e2e_id_option_t * e2e_option,
-                            vlib_buffer_t * b0)
+                            ip6_address_t * address)
 {
-  ip6_main_t *im = &ip6_main;
-  ip6_address_t *my_address = 0;
-  my_address =
-    ip6_interface_first_address (im, vnet_buffer (b0)->sw_if_index[VLIB_RX]);
-  if (my_address)
-    {
-      e2e_option->id.as_u64[0] = my_address->as_u64[0];
-      e2e_option->id.as_u64[1] = my_address->as_u64[1];
-    }
+  e2e_option->id.as_u64[0] = address->as_u64[0];
+  e2e_option->id.as_u64[1] = address->as_u64[1];
+
 }
 
 /* Following functions are for the caching of ioam header
@@ -400,7 +396,7 @@ ioam_cache_add (vlib_buffer_t * b0,
 
   /* suffix rewrite string with e2e ID option */
   e2e = (ioam_e2e_id_option_t *) (entry->ioam_rewrite_string + e2e_id_offset);
-  ioam_e2e_id_rewrite_handler (e2e, b0);
+  ioam_e2e_id_rewrite_handler (e2e, &cm->sr_localsid_cache);
   entry->my_address_offset = (u8 *) (&e2e->id) - (u8 *) hbh0;
 
   /* add it to hash, replacing and freeing any collision for now */
@@ -436,9 +432,9 @@ ioam_cache_sr_rewrite_template_create (void)
 
   /* This nodes address and the original dest will be
    * filled when the packet is processed */
-  vec_add2 (segments, this_seg, 2);
-  memset (this_seg, 0xfe, 2 * sizeof (ip6_address_t));
-  cm->sr_rewrite_template = ip6_compute_rewrite_string_insert (segments);
+  vec_add2 (segments, this_seg, 1);
+  memset (this_seg, 0xfe, sizeof (ip6_address_t));
+  cm->sr_rewrite_template = ip6_sr_compute_rewrite_string_insert (segments);
   vec_free (segments);
 }