[PATCH v11 22/30] examples/l3fwd: replace packed attributes

Andre Muezerie andremue at linux.microsoft.com
Fri Jan 10 23:16:43 CET 2025


MSVC struct packing is not compatible with GCC. Replace macro
__rte_packed with __rte_packed_begin to push existing pack value
and set packing to 1-byte and macro __rte_packed_end to restore
the pack value prior to the push.

Macro __rte_packed_end is deliberately utilized to trigger a
MSVC compiler warning if no existing packing has been pushed allowing
easy identification of locations where the __rte_packed_begin is
missing.

Signed-off-by: Andre Muezerie <andremue at linux.microsoft.com>
---
 examples/l3fwd/l3fwd_route.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/examples/l3fwd/l3fwd_route.h b/examples/l3fwd/l3fwd_route.h
index 62263c3540..b02b9cc11c 100644
--- a/examples/l3fwd/l3fwd_route.h
+++ b/examples/l3fwd/l3fwd_route.h
@@ -36,21 +36,21 @@ struct ipv6_l3fwd_route {
 	uint8_t if_out;
 };
 
-struct ipv4_5tuple {
+struct __rte_packed_begin ipv4_5tuple {
 	uint32_t ip_dst;
 	uint32_t ip_src;
 	uint16_t port_dst;
 	uint16_t port_src;
 	uint8_t  proto;
-} __rte_packed;
+} __rte_packed_end;
 
-struct ipv6_5tuple {
+struct __rte_packed_begin ipv6_5tuple {
 	uint8_t  ip_dst[IPV6_ADDR_LEN];
 	uint8_t  ip_src[IPV6_ADDR_LEN];
 	uint16_t port_dst;
 	uint16_t port_src;
 	uint8_t  proto;
-} __rte_packed;
+} __rte_packed_end;
 
 struct lpm_route_rule {
 	union {
-- 
2.47.0.vfs.0.3



More information about the dev mailing list