bonding: support custom interface IDs
[vpp.git] / src / vnet / pg / output.c
index 016e5b3..a84f303 100644 (file)
@@ -47,7 +47,7 @@ uword
 pg_output (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
 {
   pg_main_t *pg = &pg_main;
-  u32 *buffers = vlib_frame_args (frame);
+  u32 *buffers = vlib_frame_vector_args (frame);
   uword n_buffers = frame->n_vectors;
   uword n_left = n_buffers;
   vnet_interface_output_runtime_t *rd = (void *) node->runtime_data;
@@ -68,9 +68,10 @@ pg_output (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
        {
          pg_output_trace_t *t = vlib_add_trace (vm, node, b, sizeof (*t));
          t->buffer_index = bi0;
-         clib_memcpy (&t->buffer, b, sizeof (b[0]) - sizeof (b->pre_data));
-         clib_memcpy (t->buffer.pre_data, b->data + b->current_data,
-                      sizeof (t->buffer.pre_data));
+         clib_memcpy_fast (&t->buffer, b,
+                           sizeof (b[0]) - sizeof (b->pre_data));
+         clib_memcpy_fast (t->buffer.pre_data, b->data + b->current_data,
+                           sizeof (t->buffer.pre_data));
        }
 
       if (pif->pcap_file_name != 0)
@@ -80,7 +81,7 @@ pg_output (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
     pcap_write (&pif->pcap_main);
 
 
-  vlib_buffer_free (vm, vlib_frame_args (frame), n_buffers);
+  vlib_buffer_free (vm, vlib_frame_vector_args (frame), n_buffers);
   if (PREDICT_FALSE (pif->lockp != 0))
     clib_atomic_release (pif->lockp);