/* First element in heap points back to pool index. */
d = vec_elt_at_index (cm->config_string_heap, c->config_string_heap_index);
d[0] = c->index;
- memcpy (d + 1, config_string, vec_bytes (config_string));
+ clib_memcpy (d + 1, config_string, vec_bytes (config_string));
hash_set_mem (cm->config_string_hash, config_string, c->index);
c->reference_count = 0; /* will be incremented by caller. */
}
}
+static int
+feature_cmp (void * a1, void * a2)
+{
+ vnet_config_feature_t * f1 = a1;
+ vnet_config_feature_t * f2 = a2;
+
+ return (int) f1->feature_index - f2->feature_index;
+}
+
always_inline u32 *
vnet_get_config_heap (vnet_config_main_t * cm, u32 ci)
{ return heap_elt_at_index (cm->config_string_heap, ci); }
/* Sort (prioritize) features. */
if (vec_len (new_features) > 1)
- vec_sort (new_features, f1, f2, (int) f1->feature_index - f2->feature_index);
+ vec_sort_with_function (new_features, feature_cmp);
if (old)
remove_reference (cm, old);