[PATCH v2] examples/l3fwd: fix compilation when DP debug on
Andrei-Niculae Petre
p31andrei at gmail.com
Fri Jul 31 15:37:39 CEST 2026
Update l3fwd example app to fix compilation when building dpdk with
RTE_LOG_DP_LEVEL=RTE_LOG_DEBUG in config/rte_config.h .
Move l3fwd_acl.h include above all #ifdef L3FWDACL_DEBUG checks,
as previously one ifdef would evaluate to false all the time (as
header include was added too late).
Adapt maintainers line from previous examples/l3fwd-acl (removed in
6de0ea50e9b9) to examples/l3fwd/l3fwd_acl* after l3fwd-acl app
unification into l3fwd. In 6de0ea50e9b9, a line with maintainer
expertise was removed.
Own testing of the l3fwd example:
1. It now compiles with "#define RTE_LOG_DP_LEVEL RTE_LOG_DEBUG" in
config/rte_config.h. See Bugzilla ID 1318 comments for full error
seen before this patch.
2. I ran the l3fwd app with IPv4/IPv6 ACL rules to see the prints (when
RTE_LOG_DP_LEVEL RTE_LOG_DEBUG is set) in the application around ACL
work as expected. See extract below (I added \ to format to 72chars):
// dump_acl4_rule extract:
Packet Src:192.168.1.100 Dst:192.168.1.101 Src port:2048,Dst port:1846 \
hit ACL 1 - 192.168.1.100/24 0.0.0.0/0 0 : 65535 0 : 65535 0x0/0x0 \
0xffffffff-0x1ffffffe-0xf0000001
// dump_acl6_rule extract:
Packet Src2001:db8:1::100
Dst2001:db8:1::101
Src port:32768,Dst port:21005 hit ACL 0 - \
2001:0db8:0001:0000:0000:0000:0000:0000/64 \
0000:0000:0000:0000:0000:0000:0000:0000/0 0 : 65535 0 : 65535 \
0x0/0x0 0xffffffff-0x1fffffff-0xf0000000
Bugzilla ID: 1318
Fixes: 6de0ea50e9b9 ("examples/l3fwd: merge l3fwd-acl example")
Cc: stable at dpdk.org
Cc: sean.morrissey at intel.com
Signed-off-by: Andrei-Niculae Petre <p31andrei at gmail.com>
---
v2
* Rebase from latest main
* Shrink/simplify patch by not making print_one_ipv*_rule static
* Test l3fwd app with acl rules and add to description
---
.mailmap | 1 +
MAINTAINERS | 2 ++
examples/l3fwd/l3fwd_acl.c | 23 ++++++++++++-----------
3 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/.mailmap b/.mailmap
index fcb3d1bb3f..01a4bedf97 100644
--- a/.mailmap
+++ b/.mailmap
@@ -112,6 +112,7 @@ Andre Richter <andre.o.richter at gmail.com>
Andrea Arcangeli <aarcange at redhat.com>
Andrea Grandi <andrea.grandi at intel.com>
Andrea Panattoni <apanatto at redhat.com>
+Andrei-Niculae Petre <p31andrei at gmail.com> <andrei.petre at keysight.com>
Andrew Bailey <abailey at iol.unh.edu>
Andrew Boyer <andrew.boyer at amd.com> <aboyer at pensando.io>
Andrew Harvey <agh at cisco.com>
diff --git a/MAINTAINERS b/MAINTAINERS
index e99a65d197..6b6446a998 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1756,6 +1756,8 @@ F: lib/acl/
F: doc/guides/prog_guide/packet_classif_access_ctrl.rst
F: app/test-acl/
F: app/test/test_acl.*
+F: examples/l3fwd/l3fwd_acl*
+F: doc/guides/sample_app_ug/l3_forward.rst
EFD
M: Yipeng Wang <yipeng1.wang at intel.com>
diff --git a/examples/l3fwd/l3fwd_acl.c b/examples/l3fwd/l3fwd_acl.c
index 4ee3411d2a..6f39923140 100644
--- a/examples/l3fwd/l3fwd_acl.c
+++ b/examples/l3fwd/l3fwd_acl.c
@@ -239,6 +239,9 @@ enum {
RTE_ACL_RULE_DEF(acl4_rule, RTE_DIM(ipv4_defs));
RTE_ACL_RULE_DEF(acl6_rule, RTE_DIM(ipv6_defs));
+/* Must be included before any L3FWDACL_DEBUG define check. */
+#include "l3fwd_acl.h"
+
static struct {
struct rte_acl_ctx *acx_ipv4[NB_SOCKETS];
struct rte_acl_ctx *acx_ipv6[NB_SOCKETS];
@@ -255,8 +258,6 @@ static struct rte_acl_rule *acl_base_ipv4, *route_base_ipv4,
static unsigned int acl_num_ipv4, route_num_ipv4,
acl_num_ipv6, route_num_ipv6;
-#include "l3fwd_acl.h"
-
#include "l3fwd_acl_scalar.h"
/*
@@ -859,17 +860,17 @@ print_one_ipv6_rule(struct acl6_rule *rule, int extra)
#ifdef L3FWDACL_DEBUG
static inline void
-dump_acl4_rule(struct rte_mbuf *m, uint32_t sig)
+dump_acl4_rule(const struct rte_mbuf *m, uint32_t sig)
{
- char abuf[INET6_ADDRSTRLEN];
+ char abuf[INET_ADDRSTRLEN];
uint32_t offset = sig & ~ACL_DENY_SIGNATURE;
struct rte_ipv4_hdr *ipv4_hdr =
rte_pktmbuf_mtod_offset(m, struct rte_ipv4_hdr *,
sizeof(struct rte_ether_hdr));
- printf("Packet Src:%s ", inet_ntop(AF_INET, ipv4_hdr->src_addr,
+ printf("Packet Src:%s ", inet_ntop(AF_INET, &ipv4_hdr->src_addr,
abuf, sizeof(abuf)));
- printf("Dst:%s ", inet_ntop(AF_INET, ipv4_hdr->dst_addr,
+ printf("Dst:%s ", inet_ntop(AF_INET, &ipv4_hdr->dst_addr,
abuf, sizeof(abuf)));
printf("Src port:%hu,Dst port:%hu ",
@@ -883,7 +884,7 @@ dump_acl4_rule(struct rte_mbuf *m, uint32_t sig)
}
static inline void
-dump_acl6_rule(struct rte_mbuf *m, uint32_t sig)
+dump_acl6_rule(const struct rte_mbuf *m, uint32_t sig)
{
char abuf[INET6_ADDRSTRLEN];
uint32_t offset = sig & ~ACL_DENY_SIGNATURE;
@@ -892,10 +893,10 @@ dump_acl6_rule(struct rte_mbuf *m, uint32_t sig)
sizeof(struct rte_ether_hdr));
printf("Packet Src");
- printf("%s", inet_ntop(AF_INET6, ipv6_hdr->src_addr,
+ printf("%s", inet_ntop(AF_INET6, &ipv6_hdr->src_addr,
abuf, sizeof(abuf)));
printf("\nDst");
- printf("%s", inet_ntop(AF_INET6, ipv6_hdr->dst_addr,
+ printf("%s", inet_ntop(AF_INET6, &ipv6_hdr->dst_addr,
abuf, sizeof(abuf)));
printf("\nSrc port:%hu,Dst port:%hu ",
@@ -988,8 +989,8 @@ dump_denied_pkt(const struct rte_mbuf *pkt, uint32_t res)
if ((res & ACL_DENY_SIGNATURE) != 0) {
if (RTE_ETH_IS_IPV4_HDR(pkt->packet_type))
dump_acl4_rule(pkt, res);
- else if (RTE_ETH_IS_IPV6_HDR(pkt[i]->packet_type))
- dump_acl6_rule(pkt[i], res[i]);
+ else if (RTE_ETH_IS_IPV6_HDR(pkt->packet_type))
+ dump_acl6_rule(pkt, res);
}
#else
RTE_SET_USED(pkt);
--
2.39.5
More information about the stable
mailing list