void
sr_set_source (ip6_address_t * address)
{
- clib_memcpy (&sr_pr_encaps_src, address, sizeof (sr_pr_encaps_src));
+ clib_memcpy_fast (&sr_pr_encaps_src, address, sizeof (sr_pr_encaps_src));
}
static clib_error_t *
addrp = srh->segments + vec_len (sl) - 1;
vec_foreach (this_address, sl)
{
- clib_memcpy (addrp->as_u8, this_address->as_u8,
- sizeof (ip6_address_t));
+ clib_memcpy_fast (addrp->as_u8, this_address->as_u8,
+ sizeof (ip6_address_t));
addrp--;
}
}
addrp = srh->segments + vec_len (sl);
vec_foreach (this_address, sl)
{
- clib_memcpy (addrp->as_u8, this_address->as_u8, sizeof (ip6_address_t));
+ clib_memcpy_fast (addrp->as_u8, this_address->as_u8,
+ sizeof (ip6_address_t));
addrp--;
}
return rs;
addrp = srh->segments + vec_len (sl) - 1;
vec_foreach (this_address, sl)
{
- clib_memcpy (addrp->as_u8, this_address->as_u8, sizeof (ip6_address_t));
+ clib_memcpy_fast (addrp->as_u8, this_address->as_u8,
+ sizeof (ip6_address_t));
addrp--;
}
return rs;
ip6_sr_sl_t *segment_list;
pool_get (sm->sid_lists, segment_list);
- memset (segment_list, 0, sizeof (*segment_list));
+ clib_memset (segment_list, 0, sizeof (*segment_list));
vec_add1 (sr_policy->segments_lists, segment_list - sm->sid_lists);
/* Add an SR policy object */
pool_get (sm->sr_policies, sr_policy);
- memset (sr_policy, 0, sizeof (*sr_policy));
- clib_memcpy (&sr_policy->bsid, bsid, sizeof (ip6_address_t));
+ clib_memset (sr_policy, 0, sizeof (*sr_policy));
+ clib_memcpy_fast (&sr_policy->bsid, bsid, sizeof (ip6_address_t));
sr_policy->type = behavior;
sr_policy->fib_table = (fib_table != (u32) ~ 0 ? fib_table : 0); //Is default FIB 0 ?
sr_policy->is_encap = is_encap;
if (unformat (input, "next %U", unformat_ip6_address, &next_address))
{
vec_add2 (segments, this_seg, 1);
- clib_memcpy (this_seg->as_u8, next_address.as_u8,
- sizeof (*this_seg));
+ clib_memcpy_fast (this_seg->as_u8, next_address.as_u8,
+ sizeof (*this_seg));
}
else if (unformat (input, "add sl"))
operation = 1;
rv = sr_policy_add (&bsid, segments, weight,
(is_spray ? SR_POLICY_TYPE_SPRAY :
SR_POLICY_TYPE_DEFAULT), fib_table, is_encap);
+ vec_free (segments);
}
else if (is_del)
rv = sr_policy_del ((sr_policy_index != (u32) ~ 0 ? NULL : &bsid),
rv = sr_policy_mod ((sr_policy_index != (u32) ~ 0 ? NULL : &bsid),
sr_policy_index, fib_table, operation, segments,
sl_index, weight);
+ vec_free (segments);
}
switch (rv)
ip2_encap = vlib_buffer_get_current (b2);
ip3_encap = vlib_buffer_get_current (b3);
- clib_memcpy (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
- sl0->rewrite, vec_len (sl0->rewrite));
- clib_memcpy (((u8 *) ip1_encap) - vec_len (sl1->rewrite),
- sl1->rewrite, vec_len (sl1->rewrite));
- clib_memcpy (((u8 *) ip2_encap) - vec_len (sl2->rewrite),
- sl2->rewrite, vec_len (sl2->rewrite));
- clib_memcpy (((u8 *) ip3_encap) - vec_len (sl3->rewrite),
- sl3->rewrite, vec_len (sl3->rewrite));
+ clib_memcpy_fast (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) ip1_encap) - vec_len (sl1->rewrite),
+ sl1->rewrite, vec_len (sl1->rewrite));
+ clib_memcpy_fast (((u8 *) ip2_encap) - vec_len (sl2->rewrite),
+ sl2->rewrite, vec_len (sl2->rewrite));
+ clib_memcpy_fast (((u8 *) ip3_encap) - vec_len (sl3->rewrite),
+ sl3->rewrite, vec_len (sl3->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
vlib_buffer_advance (b1, -(word) vec_len (sl1->rewrite));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b1, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip1->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip1->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip1->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip1->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b2->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b2, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip2->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip2->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip2->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip2->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b3->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b3, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip3->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip3->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip3->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip3->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
}
ip0_encap = vlib_buffer_get_current (b0);
- clib_memcpy (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
- sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
ip0 = vlib_buffer_get_current (b0);
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
encap_pkts++;
ip2_encap = vlib_buffer_get_current (b2);
ip3_encap = vlib_buffer_get_current (b3);
- clib_memcpy (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
- sl0->rewrite, vec_len (sl0->rewrite));
- clib_memcpy (((u8 *) ip1_encap) - vec_len (sl1->rewrite),
- sl1->rewrite, vec_len (sl1->rewrite));
- clib_memcpy (((u8 *) ip2_encap) - vec_len (sl2->rewrite),
- sl2->rewrite, vec_len (sl2->rewrite));
- clib_memcpy (((u8 *) ip3_encap) - vec_len (sl3->rewrite),
- sl3->rewrite, vec_len (sl3->rewrite));
+ clib_memcpy_fast (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) ip1_encap) - vec_len (sl1->rewrite),
+ sl1->rewrite, vec_len (sl1->rewrite));
+ clib_memcpy_fast (((u8 *) ip2_encap) - vec_len (sl2->rewrite),
+ sl2->rewrite, vec_len (sl2->rewrite));
+ clib_memcpy_fast (((u8 *) ip3_encap) - vec_len (sl3->rewrite),
+ sl3->rewrite, vec_len (sl3->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
vlib_buffer_advance (b1, -(word) vec_len (sl1->rewrite));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b1, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip1->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip1->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip1->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip1->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b2->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b2, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip2->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip2->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip2->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip2->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b3->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b3, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip3->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip3->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip3->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip3->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
}
ip0_encap = vlib_buffer_get_current (b0);
- clib_memcpy (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
- sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
ip0 = vlib_buffer_get_current (b0);
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
encap_pkts++;
en2 = vlib_buffer_get_current (b2);
en3 = vlib_buffer_get_current (b3);
- clib_memcpy (((u8 *) en0) - vec_len (sl0->rewrite), sl0->rewrite,
- vec_len (sl0->rewrite));
- clib_memcpy (((u8 *) en1) - vec_len (sl1->rewrite), sl1->rewrite,
- vec_len (sl1->rewrite));
- clib_memcpy (((u8 *) en2) - vec_len (sl2->rewrite), sl2->rewrite,
- vec_len (sl2->rewrite));
- clib_memcpy (((u8 *) en3) - vec_len (sl3->rewrite), sl3->rewrite,
- vec_len (sl3->rewrite));
+ clib_memcpy_fast (((u8 *) en0) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) en1) - vec_len (sl1->rewrite),
+ sl1->rewrite, vec_len (sl1->rewrite));
+ clib_memcpy_fast (((u8 *) en2) - vec_len (sl2->rewrite),
+ sl2->rewrite, vec_len (sl2->rewrite));
+ clib_memcpy_fast (((u8 *) en3) - vec_len (sl3->rewrite),
+ sl3->rewrite, vec_len (sl3->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
vlib_buffer_advance (b1, -(word) vec_len (sl1->rewrite));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b1, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip1->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip1->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip1->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip1->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b2->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b2, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip2->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip2->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip2->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip2->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b3->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b3, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip3->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip3->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip3->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip3->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
}
en0 = vlib_buffer_get_current (b0);
- clib_memcpy (((u8 *) en0) - vec_len (sl0->rewrite), sl0->rewrite,
- vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) en0) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
encap_pkts++;
else
sr3 = (ip6_sr_header_t *) (ip3 + 1);
- clib_memcpy ((u8 *) ip0 - vec_len (sl0->rewrite), (u8 *) ip0,
- (void *) sr0 - (void *) ip0);
- clib_memcpy ((u8 *) ip1 - vec_len (sl1->rewrite), (u8 *) ip1,
- (void *) sr1 - (void *) ip1);
- clib_memcpy ((u8 *) ip2 - vec_len (sl2->rewrite), (u8 *) ip2,
- (void *) sr2 - (void *) ip2);
- clib_memcpy ((u8 *) ip3 - vec_len (sl3->rewrite), (u8 *) ip3,
- (void *) sr3 - (void *) ip3);
-
- clib_memcpy (((u8 *) sr0 - vec_len (sl0->rewrite)), sl0->rewrite,
- vec_len (sl0->rewrite));
- clib_memcpy (((u8 *) sr1 - vec_len (sl1->rewrite)), sl1->rewrite,
- vec_len (sl1->rewrite));
- clib_memcpy (((u8 *) sr2 - vec_len (sl2->rewrite)), sl2->rewrite,
- vec_len (sl2->rewrite));
- clib_memcpy (((u8 *) sr3 - vec_len (sl3->rewrite)), sl3->rewrite,
- vec_len (sl3->rewrite));
+ clib_memcpy_fast ((u8 *) ip0 - vec_len (sl0->rewrite), (u8 *) ip0,
+ (void *) sr0 - (void *) ip0);
+ clib_memcpy_fast ((u8 *) ip1 - vec_len (sl1->rewrite), (u8 *) ip1,
+ (void *) sr1 - (void *) ip1);
+ clib_memcpy_fast ((u8 *) ip2 - vec_len (sl2->rewrite), (u8 *) ip2,
+ (void *) sr2 - (void *) ip2);
+ clib_memcpy_fast ((u8 *) ip3 - vec_len (sl3->rewrite), (u8 *) ip3,
+ (void *) sr3 - (void *) ip3);
+
+ clib_memcpy_fast (((u8 *) sr0 - vec_len (sl0->rewrite)),
+ sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) sr1 - vec_len (sl1->rewrite)),
+ sl1->rewrite, vec_len (sl1->rewrite));
+ clib_memcpy_fast (((u8 *) sr2 - vec_len (sl2->rewrite)),
+ sl2->rewrite, vec_len (sl2->rewrite));
+ clib_memcpy_fast (((u8 *) sr3 - vec_len (sl3->rewrite)),
+ sl3->rewrite, vec_len (sl3->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
vlib_buffer_advance (b1, -(word) vec_len (sl1->rewrite));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b1, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip1->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip1->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip1->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip1->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b2->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b2, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip2->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip2->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip2->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip2->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b3->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b3, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip3->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip3->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip3->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip3->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
}
else
sr0 = (ip6_sr_header_t *) (ip0 + 1);
- clib_memcpy ((u8 *) ip0 - vec_len (sl0->rewrite), (u8 *) ip0,
- (void *) sr0 - (void *) ip0);
- clib_memcpy (((u8 *) sr0 - vec_len (sl0->rewrite)), sl0->rewrite,
- vec_len (sl0->rewrite));
+ clib_memcpy_fast ((u8 *) ip0 - vec_len (sl0->rewrite), (u8 *) ip0,
+ (void *) sr0 - (void *) ip0);
+ clib_memcpy_fast (((u8 *) sr0 - vec_len (sl0->rewrite)),
+ sl0->rewrite, vec_len (sl0->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
insert_pkts++;
else
sr3 = (ip6_sr_header_t *) (ip3 + 1);
- clib_memcpy ((u8 *) ip0 - vec_len (sl0->rewrite_bsid), (u8 *) ip0,
- (void *) sr0 - (void *) ip0);
- clib_memcpy ((u8 *) ip1 - vec_len (sl1->rewrite_bsid), (u8 *) ip1,
- (void *) sr1 - (void *) ip1);
- clib_memcpy ((u8 *) ip2 - vec_len (sl2->rewrite_bsid), (u8 *) ip2,
- (void *) sr2 - (void *) ip2);
- clib_memcpy ((u8 *) ip3 - vec_len (sl3->rewrite_bsid), (u8 *) ip3,
- (void *) sr3 - (void *) ip3);
-
- clib_memcpy (((u8 *) sr0 - vec_len (sl0->rewrite_bsid)),
- sl0->rewrite_bsid, vec_len (sl0->rewrite_bsid));
- clib_memcpy (((u8 *) sr1 - vec_len (sl1->rewrite_bsid)),
- sl1->rewrite_bsid, vec_len (sl1->rewrite_bsid));
- clib_memcpy (((u8 *) sr2 - vec_len (sl2->rewrite_bsid)),
- sl2->rewrite_bsid, vec_len (sl2->rewrite_bsid));
- clib_memcpy (((u8 *) sr3 - vec_len (sl3->rewrite_bsid)),
- sl3->rewrite_bsid, vec_len (sl3->rewrite_bsid));
+ clib_memcpy_fast ((u8 *) ip0 - vec_len (sl0->rewrite_bsid),
+ (u8 *) ip0, (void *) sr0 - (void *) ip0);
+ clib_memcpy_fast ((u8 *) ip1 - vec_len (sl1->rewrite_bsid),
+ (u8 *) ip1, (void *) sr1 - (void *) ip1);
+ clib_memcpy_fast ((u8 *) ip2 - vec_len (sl2->rewrite_bsid),
+ (u8 *) ip2, (void *) sr2 - (void *) ip2);
+ clib_memcpy_fast ((u8 *) ip3 - vec_len (sl3->rewrite_bsid),
+ (u8 *) ip3, (void *) sr3 - (void *) ip3);
+
+ clib_memcpy_fast (((u8 *) sr0 - vec_len (sl0->rewrite_bsid)),
+ sl0->rewrite_bsid, vec_len (sl0->rewrite_bsid));
+ clib_memcpy_fast (((u8 *) sr1 - vec_len (sl1->rewrite_bsid)),
+ sl1->rewrite_bsid, vec_len (sl1->rewrite_bsid));
+ clib_memcpy_fast (((u8 *) sr2 - vec_len (sl2->rewrite_bsid)),
+ sl2->rewrite_bsid, vec_len (sl2->rewrite_bsid));
+ clib_memcpy_fast (((u8 *) sr3 - vec_len (sl3->rewrite_bsid)),
+ sl3->rewrite_bsid, vec_len (sl3->rewrite_bsid));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite_bsid));
vlib_buffer_advance (b1, -(word) vec_len (sl1->rewrite_bsid));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b1, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip1->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip1->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip1->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip1->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b2->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b2, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip2->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip2->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip2->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip2->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b3->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b3, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip3->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip3->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip3->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip3->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
}
else
sr0 = (ip6_sr_header_t *) (ip0 + 1);
- clib_memcpy ((u8 *) ip0 - vec_len (sl0->rewrite_bsid), (u8 *) ip0,
- (void *) sr0 - (void *) ip0);
- clib_memcpy (((u8 *) sr0 - vec_len (sl0->rewrite_bsid)),
- sl0->rewrite_bsid, vec_len (sl0->rewrite_bsid));
+ clib_memcpy_fast ((u8 *) ip0 - vec_len (sl0->rewrite_bsid),
+ (u8 *) ip0, (void *) sr0 - (void *) ip0);
+ clib_memcpy_fast (((u8 *) sr0 - vec_len (sl0->rewrite_bsid)),
+ sl0->rewrite_bsid, vec_len (sl0->rewrite_bsid));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite_bsid));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
insert_pkts++;
end_bsid_encaps_srh_processing (node, b2, ip2_encap, sr2, &next2);
end_bsid_encaps_srh_processing (node, b3, ip3_encap, sr3, &next3);
- clib_memcpy (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
- sl0->rewrite, vec_len (sl0->rewrite));
- clib_memcpy (((u8 *) ip1_encap) - vec_len (sl1->rewrite),
- sl1->rewrite, vec_len (sl1->rewrite));
- clib_memcpy (((u8 *) ip2_encap) - vec_len (sl2->rewrite),
- sl2->rewrite, vec_len (sl2->rewrite));
- clib_memcpy (((u8 *) ip3_encap) - vec_len (sl3->rewrite),
- sl3->rewrite, vec_len (sl3->rewrite));
+ clib_memcpy_fast (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) ip1_encap) - vec_len (sl1->rewrite),
+ sl1->rewrite, vec_len (sl1->rewrite));
+ clib_memcpy_fast (((u8 *) ip2_encap) - vec_len (sl2->rewrite),
+ sl2->rewrite, vec_len (sl2->rewrite));
+ clib_memcpy_fast (((u8 *) ip3_encap) - vec_len (sl3->rewrite),
+ sl3->rewrite, vec_len (sl3->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
vlib_buffer_advance (b1, -(word) vec_len (sl1->rewrite));
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
if (PREDICT_FALSE (b1->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b1, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip1->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip1->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip1->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip1->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b2->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b2, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip2->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip2->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip2->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip2->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
if (PREDICT_FALSE (b3->flags & VLIB_BUFFER_IS_TRACED))
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b3, sizeof (*tr));
- clib_memcpy (tr->src.as_u8, ip3->src_address.as_u8,
- sizeof (tr->src.as_u8));
- clib_memcpy (tr->dst.as_u8, ip3->dst_address.as_u8,
- sizeof (tr->dst.as_u8));
+ clib_memcpy_fast (tr->src.as_u8, ip3->src_address.as_u8,
+ sizeof (tr->src.as_u8));
+ clib_memcpy_fast (tr->dst.as_u8, ip3->dst_address.as_u8,
+ sizeof (tr->dst.as_u8));
}
}
IP_PROTOCOL_IPV6_ROUTE);
end_bsid_encaps_srh_processing (node, b0, ip0_encap, sr0, &next0);
- clib_memcpy (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
- sl0->rewrite, vec_len (sl0->rewrite));
+ clib_memcpy_fast (((u8 *) ip0_encap) - vec_len (sl0->rewrite),
+ sl0->rewrite, vec_len (sl0->rewrite));
vlib_buffer_advance (b0, -(word) vec_len (sl0->rewrite));
ip0 = vlib_buffer_get_current (b0);
{
sr_policy_rewrite_trace_t *tr =
vlib_add_trace (vm, node, b0, sizeof (*tr));
- 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));
}
encap_pkts++;