/*
+ * node.c
+ *
* Copyright (c) 2015 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
#include <vlib/vlib.h>
#include <vnet/vnet.h>
#include <vppinfra/error.h>
/* Make sure next header is valid */
if (PREDICT_FALSE (next_hdr != IP_PROTOCOL_IPV6 &&
next_hdr != IP_PROTOCOL_IP_IN_IP &&
- next_hdr != IP_PROTOCOL_IP6_NONXT))
+ next_hdr != IP_PROTOCOL_IP6_ETHERNET))
{
return;
}
{
vec_validate (ls0_mem->rewrite, total_size - 1);
}
- clib_memcpy (ls0_mem->rewrite, ip0, total_size);
+ clib_memcpy_fast (ls0_mem->rewrite, ip0, total_size);
ls0_mem->rw_len = total_size;
/* Remove IP header and extensions */
vlib_buffer_advance (b0, total_size);
- if (next_hdr == IP_PROTOCOL_IP6_NONXT)
+ if (next_hdr == IP_PROTOCOL_IP6_ETHERNET)
{
/* Set output interface */
vnet_buffer (b0)->sw_if_index[VLIB_TX] = ls0_mem->sw_if_index_out;
ASSERT (VLIB_BUFFER_PRE_DATA_SIZE >=
(ls0_mem->rw_len + b0->current_data));
- clib_memcpy (((u8 *) en0) - ls0_mem->rw_len,
- ls0_mem->rewrite, ls0_mem->rw_len);
+ clib_memcpy_fast (((u8 *) en0) - ls0_mem->rw_len,
+ ls0_mem->rewrite, ls0_mem->rw_len);
vlib_buffer_advance (b0, -(word) ls0_mem->rw_len);
ip0 = vlib_buffer_get_current (b0);
}
else
{
- clib_memcpy (tr->src.as_u8, ip0->src_address.as_u8,
- sizeof tr->src.as_u8);
- clib_memcpy (tr->dst.as_u8, ip0->dst_address.as_u8,
- sizeof tr->dst.as_u8);
+ clib_memcpy_fast (tr->src.as_u8, ip0->src_address.as_u8,
+ sizeof tr->src.as_u8);
+ clib_memcpy_fast (tr->dst.as_u8, ip0->dst_address.as_u8,
+ sizeof tr->dst.as_u8);
}
}
ASSERT (VLIB_BUFFER_PRE_DATA_SIZE >=
(ls0_mem->rw_len + b0->current_data));
- clib_memcpy (((u8 *) ip0_encap) - ls0_mem->rw_len,
- ls0_mem->rewrite, ls0_mem->rw_len);
+ clib_memcpy_fast (((u8 *) ip0_encap) - ls0_mem->rw_len,
+ ls0_mem->rewrite, ls0_mem->rw_len);
vlib_buffer_advance (b0, -(word) ls0_mem->rw_len);
ip0 = vlib_buffer_get_current (b0);
}
else
{
- clib_memcpy (tr->src.as_u8, ip0->src_address.as_u8,
- sizeof tr->src.as_u8);
- clib_memcpy (tr->dst.as_u8, ip0->dst_address.as_u8,
- sizeof tr->dst.as_u8);
+ clib_memcpy_fast (tr->src.as_u8, ip0->src_address.as_u8,
+ sizeof tr->src.as_u8);
+ clib_memcpy_fast (tr->dst.as_u8, ip0->dst_address.as_u8,
+ sizeof tr->dst.as_u8);
}
}
ASSERT (VLIB_BUFFER_PRE_DATA_SIZE >=
(ls0_mem->rw_len + b0->current_data));
- clib_memcpy (((u8 *) ip0_encap) - ls0_mem->rw_len,
- ls0_mem->rewrite, ls0_mem->rw_len);
+ clib_memcpy_fast (((u8 *) ip0_encap) - ls0_mem->rw_len,
+ ls0_mem->rewrite, ls0_mem->rw_len);
vlib_buffer_advance (b0, -(word) ls0_mem->rw_len);
ip0 = vlib_buffer_get_current (b0);
}
else
{
- clib_memcpy (tr->src.as_u8, ip0->src_address.as_u8,
- sizeof tr->src.as_u8);
- clib_memcpy (tr->dst.as_u8, ip0->dst_address.as_u8,
- sizeof tr->dst.as_u8);
+ clib_memcpy_fast (tr->src.as_u8, ip0->src_address.as_u8,
+ sizeof tr->src.as_u8);
+ clib_memcpy_fast (tr->dst.as_u8, ip0->dst_address.as_u8,
+ sizeof tr->dst.as_u8);
}
}
/* *INDENT-ON* */
/*
-* fd.io coding-style-patch-verification: ON
-*
-* Local Variables:
-* eval: (c-set-style "gnu")
-* End:
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
*/