[dpdk-dev] [PATCH 1/1] ip_frag: fix creating ipv6 fragment extension header
Piotr
piotrx.t.azarewicz at intel.com
Wed Sep 2 16:13:01 CEST 2015
From: Piotr Azarewicz <piotrx.t.azarewicz at intel.com>
Previous implementation won't work on every environment. The order of
allocation of bit-fields within a unit (high-order to low-order or
low-order to high-order) is implementation-defined.
Solution: used bytes instead of bit fields.
Signed-off-by: Piotr Azarewicz <piotrx.t.azarewicz at intel.com>
---
lib/librte_ip_frag/rte_ipv6_fragmentation.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/lib/librte_ip_frag/rte_ipv6_fragmentation.c b/lib/librte_ip_frag/rte_ipv6_fragmentation.c
index 0e32aa8..7342421 100644
--- a/lib/librte_ip_frag/rte_ipv6_fragmentation.c
+++ b/lib/librte_ip_frag/rte_ipv6_fragmentation.c
@@ -65,10 +65,8 @@ __fill_ipv6hdr_frag(struct ipv6_hdr *dst,
fh = (struct ipv6_extension_fragment *) ++dst;
fh->next_header = src->proto;
- fh->reserved1 = 0;
- fh->frag_offset = rte_cpu_to_be_16(fofs);
- fh->reserved2 = 0;
- fh->more_frags = rte_cpu_to_be_16(mf);
+ fh->reserved1 = 0;
+ fh->frag_data = rte_cpu_to_be_16((fofs & ~IPV6_HDR_FO_MASK) | mf);
fh->id = 0;
}
--
1.7.9.5
More information about the dev
mailing list