From 5ea54cd1da80ebd2bcc27193368dbe5dea814c6f Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Thu, 25 Sep 2025 20:25:45 -0400 Subject: [PATCH] ip: ip6 frags should have as much space for headers as original Type: improvement Change-Id: I10c924a391379151a09e2b81b364a4d796f751ec Signed-off-by: Florin Coras --- src/vnet/ip/ip_frag.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vnet/ip/ip_frag.c b/src/vnet/ip/ip_frag.c index adf49e93d4b..e141e86c72c 100644 --- a/src/vnet/ip/ip_frag.c +++ b/src/vnet/ip/ip_frag.c @@ -442,8 +442,10 @@ ip6_frag_do_fragment (vlib_main_t * vm, u32 from_bi, u16 mtu, vec_add1 (*buffer, to_bi); frag_set_sw_if_index (to_b, org_from_b); - /* Copy ip6 header */ - clib_memcpy_fast (to_b->data, org_from_packet, + /* Make sure we have as much space for headers as the original and copy + * ip6 header */ + to_data = vlib_buffer_make_headroom (to_b, org_from_b->current_data); + clib_memcpy_fast (to_data, org_from_packet, l2unfragmentablesize + sizeof (ip6_header_t)); to_ip6 = vlib_buffer_get_current (to_b) + l2unfragmentablesize; to_frag_hdr = (ip6_frag_hdr_t *) (to_ip6 + 1); -- 2.16.6