X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsrp%2Fnode.c;h=12c14012b61254b720150f6c1e9d303dd7509ff1;hb=1a19552eee24e447e6087de43a2eeb9250b8cae7;hp=cf9bd31c513091bb0da156f0f92e8a47327ffcad;hpb=3a63fc5470caffda434064a439ffdbe8518963f9;p=vpp.git diff --git a/src/vnet/srp/node.c b/src/vnet/srp/node.c index cf9bd31c513..12c14012b61 100644 --- a/src/vnet/srp/node.c +++ b/src/vnet/srp/node.c @@ -40,6 +40,7 @@ #include #include /* for ip_csum_fold */ #include +#include srp_main_t srp_main; @@ -167,8 +168,8 @@ srp_input (vlib_main_t * vm, b0 = vlib_get_buffer (vm, bi0); b1 = vlib_get_buffer (vm, bi1); - s0 = (void *) (b0->data + b0->current_data); - s1 = (void *) (b1->data + b1->current_data); + s0 = vlib_buffer_get_current (b0); + s1 = vlib_buffer_get_current (b1); /* Data packets are always assigned to side A (outer ring) interface. */ sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX]; @@ -229,7 +230,7 @@ srp_input (vlib_main_t * vm, b0 = vlib_get_buffer (vm, bi0); - s0 = (void *) (b0->data + b0->current_data); + s0 = vlib_buffer_get_current (b0); /* Data packets are always assigned to side A (outer ring) interface. */ sw_if_index0 = vnet_buffer (b0)->sw_if_index[VLIB_RX]; @@ -333,8 +334,7 @@ srp_topology_packet (vlib_main_t * vm, u32 sw_if_index, u8 ** contents) u32 * to_next; u32 bi = ~0; - if (vlib_buffer_add_data (vm, VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX, - /* buffer to append to */ &bi, + if (vlib_buffer_add_data (vm, /* buffer to append to */ &bi, *contents, vec_len (*contents))) { /* complete or partial buffer allocation failure */ @@ -403,7 +403,7 @@ srp_control_input (vlib_main_t * vm, b0 = vlib_get_buffer (vm, bi0); - s0 = (void *) (b0->data + b0->current_data); + s0 = vlib_buffer_get_current(b0); l2_len0 = vlib_buffer_length_in_chain (vm, b0); l3_len0 = l2_len0 - STRUCT_OFFSET_OF (srp_generic_control_header_t, control); @@ -628,9 +628,8 @@ static void tx_ips_packet (srp_interface_t * si, = ~ip_csum_fold (ip_incremental_checksum (0, &i->control, sizeof (i[0]) - STRUCT_OFFSET_OF (srp_ips_header_t, control))); - if (vlib_buffer_add_data (vm, VLIB_BUFFER_DEFAULT_FREE_LIST_INDEX, - /* buffer to append to */ &bi, - i, sizeof (i[0]))) + if (vlib_buffer_add_data (vm, /* buffer to append to */ &bi, i, + sizeof (i[0]))) { /* complete or partial allocation failure */ if (bi != ~0) @@ -847,9 +846,9 @@ srp_ips_process (vlib_main_t * vm, while (1) { - pool_foreach (si, sm->interface_pool, ({ + pool_foreach (si, sm->interface_pool) { maybe_send_ips_message (si); - })); + } vlib_process_suspend (vm, 1.0); } @@ -863,6 +862,16 @@ vlib_node_registration_t srp_ips_process_node = { .state = VLIB_NODE_STATE_DISABLED, }; +static void +srp_setup_node (vlib_main_t *vm, u32 node_index) +{ + vlib_node_t *n = vlib_get_node (vm, node_index); + pg_node_t *pn = pg_get_node (node_index); + n->format_buffer = format_srp_header_with_length; + n->unformat_buffer = unformat_srp_header; + pn->unformat_edit = unformat_pg_srp_header; +} + static clib_error_t * srp_init (vlib_main_t * vm) { srp_main_t * sm = &srp_main;