ipsec: IPSec protection for multi-point tunnel interfaces
[vpp.git] / src / vnet / ppp / node.c
index 4f1f6a7..fd0105e 100644 (file)
@@ -139,14 +139,11 @@ ppp_input (vlib_main_t * vm,
          b0 = vlib_get_buffer (vm, bi0);
          b1 = vlib_get_buffer (vm, bi1);
 
-         h0 = (void *) (b0->data + b0->current_data);
-         h1 = (void *) (b1->data + b1->current_data);
+         h0 = vlib_buffer_get_current (b0);
+         h1 = vlib_buffer_get_current (b1);
 
-         b0->current_data += sizeof (h0[0]);
-         b1->current_data += sizeof (h1[0]);
-
-         b0->current_length -= sizeof (h0[0]);
-         b1->current_length -= sizeof (h1[0]);
+         vlib_buffer_advance (b0, sizeof (ppp_header_t));
+         vlib_buffer_advance (b1, sizeof (ppp_header_t));
 
          /* Index sparse array with network byte order. */
          protocol0 = h0->protocol;
@@ -227,10 +224,9 @@ ppp_input (vlib_main_t * vm,
 
          b0 = vlib_get_buffer (vm, bi0);
 
-         h0 = (void *) (b0->data + b0->current_data);
+         h0 = vlib_buffer_get_current (b0);
 
-         b0->current_data += sizeof (h0[0]);
-         b0->current_length -= sizeof (h0[0]);
+         vlib_buffer_advance (b0, sizeof (ppp_header_t));
 
          protocol0 = h0->protocol;
          i0 = sparse_vec_index (rt->next_by_protocol, protocol0);
@@ -295,18 +291,10 @@ VLIB_REGISTER_NODE (ppp_input_node) = {
 /* *INDENT-ON* */
 
 static clib_error_t *
-ppp_input_init (vlib_main_t * vm)
+ppp_input_runtime_init (vlib_main_t * vm)
 {
   ppp_input_runtime_t *rt;
 
-  {
-    clib_error_t *error = vlib_call_init_function (vm, ppp_init);
-    if (error)
-      clib_error_report (error);
-  }
-
-  ppp_setup_node (vm, ppp_input_node.index);
-
   rt = vlib_node_get_runtime_data (vm, ppp_input_node.index);
 
   rt->next_by_protocol = sparse_vec_new
@@ -323,7 +311,24 @@ ppp_input_init (vlib_main_t * vm)
   return 0;
 }
 
+static clib_error_t *
+ppp_input_init (vlib_main_t * vm)
+{
+
+  {
+    clib_error_t *error = vlib_call_init_function (vm, ppp_init);
+    if (error)
+      clib_error_report (error);
+  }
+
+  ppp_setup_node (vm, ppp_input_node.index);
+  ppp_input_runtime_init (vm);
+
+  return 0;
+}
+
 VLIB_INIT_FUNCTION (ppp_input_init);
+VLIB_WORKER_INIT_FUNCTION (ppp_input_runtime_init);
 
 void
 ppp_register_input_protocol (vlib_main_t * vm,