X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fioam%2Fip6%2Fioam_cache.h;h=338ed9828eeb913b17b0da02c76c00c16444d022;hb=71612d61930e57e7c8ebf9e5647b15a4b23720b2;hp=e668ad7f5b4d82525643b48c5de031936c8aa238;hpb=5d73eecd63018db69b10bf56adeec9cc5cf92790;p=vpp.git diff --git a/src/plugins/ioam/ip6/ioam_cache.h b/src/plugins/ioam/ip6/ioam_cache.h index e668ad7f5b4..338ed9828ee 100644 --- a/src/plugins/ioam/ip6/ioam_cache.h +++ b/src/plugins/ioam/ip6/ioam_cache.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 */