From: Pierre Pfister Date: Thu, 4 Aug 2016 13:25:01 +0000 (+0100) Subject: Custom adjacency formatting fix (Revived) X-Git-Tag: v16.09-rc1~37 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=5bcb3391f9eee85b4edcc0e42649ffeeea2dd997;p=vpp.git Custom adjacency formatting fix (Revived) Looks like something strange is going on with indentation. Change-Id: I8e734a2119a4a744d7ce76ce83ecc7b237828d3b Signed-off-by: Pierre Pfister --- diff --git a/plugins/ila-plugin/ila/ila.c b/plugins/ila-plugin/ila/ila.c index c0e6da11fac..a43aca13918 100644 --- a/plugins/ila-plugin/ila/ila.c +++ b/plugins/ila-plugin/ila/ila.c @@ -795,11 +795,11 @@ vlib_plugin_register (vlib_main_t * vm, vnet_plugin_handoff_t * h, return error; } -u8 *ila_format_adjacency(u8 * s, - struct ip_lookup_main_t * lm, - ip_adjacency_t *adj) +u8 *ila_format_adjacency(u8 * s, va_list * va) { ila_main_t *ilm = &ila_main; + __attribute((unused)) ip_lookup_main_t *lm = va_arg (*va, ip_lookup_main_t *); + ip_adjacency_t *adj = va_arg (*va, ip_adjacency_t *); ila_adj_data_t * ad = (ila_adj_data_t *) & adj->opaque; ila_entry_t *ie = pool_elt_at_index (ilm->entries, ad->entry_index); return format(s, "idx:%d sir:%U", ad->entry_index, format_ip6_address, &ie->sir_address); diff --git a/vnet/vnet/ip/lookup.h b/vnet/vnet/ip/lookup.h index 808f78df807..2b682d27195 100644 --- a/vnet/vnet/ip/lookup.h +++ b/vnet/vnet/ip/lookup.h @@ -365,16 +365,31 @@ typedef struct { u32 * config_index_by_sw_if_index; } ip_config_main_t; -//Function type used to register formatting of a custom adjacency formatting -typedef u8 *(* ip_adjacency_format_fn)(u8 * s, - struct ip_lookup_main_t * lm, - ip_adjacency_t *adj); - +/** + * This structure is used to dynamically register a custom adjacency + * for ip lookup. + * Typically used with + * VNET_IP4_REGISTER_ADJACENCY or + * VNET_IP6_REGISTER_ADJACENCY macros. + */ typedef struct ip_adj_register_struct { + /** Name of the node for this registered adjacency. */ + char *node_name; + + /** Formatting function for the adjacency. + * Variadic arguments given to the function are: + * - struct ip_lookup_main_t * + * - ip_adjacency_t *adj + */ + format_function_t *fn; + + /** + * When the adjacency is registered, the ip-lookup next index will + * be written where this pointer points. + */ + u32 *next_index; + struct ip_adj_register_struct *next; - char *node_name; //Name of the node for this registered adjacency - ip_adjacency_format_fn fn; //Formatting function of this adjacency - u32 *next_index; //some place where the next index to be used will be put at init } ip_adj_register_t; typedef struct ip_lookup_main_t {