From: Robin Jarry <rjarry@redhat.com>
To: dev@dpdk.org, Sunil Kumar Kori <skori@marvell.com>,
Rakesh Kudurumalla <rkudurumalla@marvell.com>,
Aman Singh <aman.deep.singh@intel.com>,
Ori Kam <orika@nvidia.com>
Subject: [PATCH dpdk v5 08/17] cmdline: use IPv6 address structure
Date: Fri, 18 Oct 2024 16:05:44 +0200 [thread overview]
Message-ID: <20241018140553.79789-9-rjarry@redhat.com> (raw)
In-Reply-To: <20241018140553.79789-1-rjarry@redhat.com>
The previous commits introduced a new rte_ipv6_addr structure without
any alignment requirements. It is not compatible with the in6_addr POSIX
type available in netinet/in.h.
The main issue is that in6_addr is not uniform on all platforms which
causes unaligned access warnings when compiling without
-Wno-address-of-packed-member (set in dpdk by default).
In order to have a consistent code base, replace in6_addr with
rte_ipv6_addr in the cmdline library. Update all code accordingly.
Signed-off-by: Robin Jarry <rjarry@redhat.com>
---
app/graph/ethdev.c | 4 +--
app/graph/ip6_route.c | 6 ++--
app/graph/neigh.c | 2 +-
app/test-pmd/cmdline.c | 4 +--
app/test-pmd/cmdline_flow.c | 14 +++-----
app/test-pmd/testpmd.h | 16 ++++-----
app/test/test_cmdline_ipaddr.c | 49 ++++----------------------
doc/guides/rel_notes/release_24_11.rst | 2 ++
examples/cmdline/commands.c | 30 +++-------------
lib/cmdline/cmdline_parse_ipaddr.h | 3 +-
10 files changed, 34 insertions(+), 96 deletions(-)
diff --git a/app/graph/ethdev.c b/app/graph/ethdev.c
index cfc1b1856910..13ed791412e1 100644
--- a/app/graph/ethdev.c
+++ b/app/graph/ethdev.c
@@ -627,10 +627,10 @@ cmd_ethdev_dev_ip6_addr_add_parsed(void *parsed_result, __rte_unused struct cmdl
int rc = -EINVAL, i;
for (i = 0; i < ETHDEV_IPV6_ADDR_LEN; i++)
- config.ip[i] = res->ip.addr.ipv6.s6_addr[i];
+ config.ip[i] = res->ip.addr.ipv6.a[i];
for (i = 0; i < ETHDEV_IPV6_ADDR_LEN; i++)
- config.mask[i] = res->mask.addr.ipv6.s6_addr[i];
+ config.mask[i] = res->mask.addr.ipv6.a[i];
rc = ethdev_ip6_addr_add(res->dev, &config);
if (rc < 0)
diff --git a/app/graph/ip6_route.c b/app/graph/ip6_route.c
index 834719ecaeb4..d91466cd78d6 100644
--- a/app/graph/ip6_route.c
+++ b/app/graph/ip6_route.c
@@ -157,13 +157,13 @@ cmd_ipv6_lookup_route_add_ipv6_parsed(void *parsed_result, __rte_unused struct c
int rc = -EINVAL, i;
for (i = 0; i < ETHDEV_IPV6_ADDR_LEN; i++)
- config.ip[i] = res->ip.addr.ipv6.s6_addr[i];
+ config.ip[i] = res->ip.addr.ipv6.a[i];
for (i = 0; i < ETHDEV_IPV6_ADDR_LEN; i++)
- config.mask[i] = res->mask.addr.ipv6.s6_addr[i];
+ config.mask[i] = res->mask.addr.ipv6.a[i];
for (i = 0; i < ETHDEV_IPV6_ADDR_LEN; i++)
- config.gateway[i] = res->via_ip.addr.ipv6.s6_addr[i];
+ config.gateway[i] = res->via_ip.addr.ipv6.a[i];
rc = route_ip6_add(&config);
if (rc)
diff --git a/app/graph/neigh.c b/app/graph/neigh.c
index 79fd542c8948..eb7a09f1f145 100644
--- a/app/graph/neigh.c
+++ b/app/graph/neigh.c
@@ -266,7 +266,7 @@ cmd_neigh_add_ipv6_parsed(void *parsed_result, __rte_unused struct cmdline *cl,
uint64_t mac;
for (i = 0; i < ETHDEV_IPV6_ADDR_LEN; i++)
- ip[i] = res->ip.addr.ipv6.s6_addr[i];
+ ip[i] = res->ip.addr.ipv6.a[i];
if (parser_mac_read(&mac, res->mac)) {
printf(MSG_ARG_INVALID, "mac");
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 76d906ee5a27..7e0666e9f634 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -8977,9 +8977,7 @@ do { \
#define IPV6_ADDR_TO_ARRAY(ip_addr, ip) \
do { \
if ((ip_addr).family == AF_INET6) \
- rte_memcpy(&(ip), \
- &((ip_addr).addr.ipv6), \
- sizeof(struct in6_addr)); \
+ ip = ip_addr.addr.ipv6; \
else { \
fprintf(stderr, "invalid parameter.\n"); \
return; \
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 5f71e5ba4440..1e4f2ebc556f 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -902,10 +902,8 @@ struct vxlan_encap_conf vxlan_encap_conf = {
.udp_dst = RTE_BE16(RTE_VXLAN_DEFAULT_PORT),
.ipv4_src = RTE_IPV4(127, 0, 0, 1),
.ipv4_dst = RTE_IPV4(255, 255, 255, 255),
- .ipv6_src = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
- .ipv6_dst = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11 },
+ .ipv6_src = RTE_IPV6_ADDR_LOOPBACK,
+ .ipv6_dst = RTE_IPV6(0, 0, 0, 0, 0, 0, 0, 0x1111),
.vlan_tci = 0,
.ip_tos = 0,
.ip_ttl = 255,
@@ -936,10 +934,8 @@ struct nvgre_encap_conf nvgre_encap_conf = {
.tni = { 0x00, 0x00, 0x00 },
.ipv4_src = RTE_IPV4(127, 0, 0, 1),
.ipv4_dst = RTE_IPV4(255, 255, 255, 255),
- .ipv6_src = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
- .ipv6_dst = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11 },
+ .ipv6_src = RTE_IPV6_ADDR_LOOPBACK,
+ .ipv6_dst = RTE_IPV6(0, 0, 0, 0, 0, 0, 0, 0x1111),
.vlan_tci = 0,
.eth_src = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
.eth_dst = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff },
@@ -11919,7 +11915,7 @@ parse_ipv6_addr(struct context *ctx, const struct token *token,
{
const struct arg *arg = pop_args(ctx);
char str2[len + 1];
- struct in6_addr tmp;
+ struct rte_ipv6_addr tmp;
int ret;
(void)token;
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 84517b0be78a..131ea53f84af 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -712,8 +712,8 @@ struct vxlan_encap_conf {
rte_be16_t udp_dst;
rte_be32_t ipv4_src;
rte_be32_t ipv4_dst;
- uint8_t ipv6_src[16];
- uint8_t ipv6_dst[16];
+ struct rte_ipv6_addr ipv6_src;
+ struct rte_ipv6_addr ipv6_dst;
rte_be16_t vlan_tci;
uint8_t ip_tos;
uint8_t ip_ttl;
@@ -730,8 +730,8 @@ struct nvgre_encap_conf {
uint8_t tni[3];
rte_be32_t ipv4_src;
rte_be32_t ipv4_dst;
- uint8_t ipv6_src[16];
- uint8_t ipv6_dst[16];
+ struct rte_ipv6_addr ipv6_src;
+ struct rte_ipv6_addr ipv6_dst;
rte_be16_t vlan_tci;
uint8_t eth_src[RTE_ETHER_ADDR_LEN];
uint8_t eth_dst[RTE_ETHER_ADDR_LEN];
@@ -762,8 +762,8 @@ struct mplsogre_encap_conf {
uint8_t label[3];
rte_be32_t ipv4_src;
rte_be32_t ipv4_dst;
- uint8_t ipv6_src[16];
- uint8_t ipv6_dst[16];
+ struct rte_ipv6_addr ipv6_src;
+ struct rte_ipv6_addr ipv6_dst;
rte_be16_t vlan_tci;
uint8_t eth_src[RTE_ETHER_ADDR_LEN];
uint8_t eth_dst[RTE_ETHER_ADDR_LEN];
@@ -786,8 +786,8 @@ struct mplsoudp_encap_conf {
rte_be16_t udp_dst;
rte_be32_t ipv4_src;
rte_be32_t ipv4_dst;
- uint8_t ipv6_src[16];
- uint8_t ipv6_dst[16];
+ struct rte_ipv6_addr ipv6_src;
+ struct rte_ipv6_addr ipv6_dst;
rte_be16_t vlan_tci;
uint8_t eth_src[RTE_ETHER_ADDR_LEN];
uint8_t eth_dst[RTE_ETHER_ADDR_LEN];
diff --git a/app/test/test_cmdline_ipaddr.c b/app/test/test_cmdline_ipaddr.c
index f540063508ae..dcd9c521eb5f 100644
--- a/app/test/test_cmdline_ipaddr.c
+++ b/app/test/test_cmdline_ipaddr.c
@@ -17,21 +17,7 @@
(((c) & 0xff) << 16) | \
((d) & 0xff) << 24)}
-#define U16_SWAP(x) \
- (((x & 0xFF) << 8) | ((x & 0xFF00) >> 8))
-
-/* create IPv6 address, swapping bytes where needed */
-#ifndef s6_addr16
-#ifdef RTE_EXEC_ENV_WINDOWS
-#define s6_addr16 u.Word
-#else
-#define s6_addr16 __u6_addr.__u6_addr16
-#endif
-#endif
-#define IP6(a,b,c,d,e,f,g,h) .ipv6 = \
- {.s6_addr16 = \
- {U16_SWAP(a),U16_SWAP(b),U16_SWAP(c),U16_SWAP(d),\
- U16_SWAP(e),U16_SWAP(f),U16_SWAP(g),U16_SWAP(h)}}
+#define IP6(a, b, c, d, e, f, g, h) .ipv6 = RTE_IPV6(a, b, c, d, e, f, g, h)
/** these are defined in netinet/in.h but not present in linux headers */
#ifndef NIPQUAD
@@ -42,30 +28,8 @@
(unsigned)((unsigned char *)&addr)[1], \
(unsigned)((unsigned char *)&addr)[2], \
(unsigned)((unsigned char *)&addr)[3]
-
-#define NIP6_FMT "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x"
-#define NIP6(addr) \
- (unsigned)((addr).s6_addr[0]), \
- (unsigned)((addr).s6_addr[1]), \
- (unsigned)((addr).s6_addr[2]), \
- (unsigned)((addr).s6_addr[3]), \
- (unsigned)((addr).s6_addr[4]), \
- (unsigned)((addr).s6_addr[5]), \
- (unsigned)((addr).s6_addr[6]), \
- (unsigned)((addr).s6_addr[7]), \
- (unsigned)((addr).s6_addr[8]), \
- (unsigned)((addr).s6_addr[9]), \
- (unsigned)((addr).s6_addr[10]), \
- (unsigned)((addr).s6_addr[11]), \
- (unsigned)((addr).s6_addr[12]), \
- (unsigned)((addr).s6_addr[13]), \
- (unsigned)((addr).s6_addr[14]), \
- (unsigned)((addr).s6_addr[15])
-
#endif
-
-
struct ipaddr_str {
const char * str;
cmdline_ipaddr_t addr;
@@ -273,8 +237,8 @@ dump_addr(cmdline_ipaddr_t addr)
}
case AF_INET6:
{
- printf(NIP6_FMT " prefixlen=%u\n",
- NIP6(addr.addr.ipv6), addr.prefixlen);
+ printf(RTE_IPV6_ADDR_FMT " prefixlen=%u\n",
+ RTE_IPV6_ADDR_SPLIT(&addr.addr.ipv6), addr.prefixlen);
break;
}
default:
@@ -303,8 +267,7 @@ is_addr_different(cmdline_ipaddr_t addr1, cmdline_ipaddr_t addr2)
/* IPv6 */
case AF_INET6:
{
- if (memcmp(&addr1.addr.ipv6, &addr2.addr.ipv6,
- sizeof(struct in6_addr)) != 0)
+ if (!rte_ipv6_addr_eq(&addr1.addr.ipv6, &addr2.addr.ipv6))
return 1;
break;
}
@@ -476,7 +439,7 @@ test_parse_ipaddr_valid(void)
return -1;
}
if (ret != -1 &&
- memcmp(&result.addr.ipv6, &tmp.addr.ipv6, sizeof(struct in6_addr))) {
+ !rte_ipv6_addr_eq(&result.addr.ipv6, &tmp.addr.ipv6)) {
printf("Error: result mismatch when parsing %s as %s!\n",
ipaddr_garbage_addr6_strs[i], buf);
return -1;
@@ -561,7 +524,7 @@ test_parse_ipaddr_valid(void)
return -1;
}
if (ret != -1 &&
- memcmp(&result.addr.ipv6, &tmp.addr.ipv6, sizeof(struct in6_addr))) {
+ !rte_ipv6_addr_eq(&result.addr.ipv6, &tmp.addr.ipv6)) {
printf("Error: result mismatch when parsing %s as %s!\n",
ipaddr_garbage_network6_strs[i], buf);
return -1;
diff --git a/doc/guides/rel_notes/release_24_11.rst b/doc/guides/rel_notes/release_24_11.rst
index 9fa63eb59a17..fea14610a1b2 100644
--- a/doc/guides/rel_notes/release_24_11.rst
+++ b/doc/guides/rel_notes/release_24_11.rst
@@ -289,6 +289,8 @@ API Changes
* net: A new IPv6 address structure was introduced to replace ad-hoc ``uint8_t[16]`` arrays.
The following libraries and symbols were modified:
+ cmdline
+ - ``cmdline_ipaddr_t``
fib
- ``rte_fib6_add()``
- ``rte_fib6_delete()``
diff --git a/examples/cmdline/commands.c b/examples/cmdline/commands.c
index aec151d08987..09a42a9917cb 100644
--- a/examples/cmdline/commands.c
+++ b/examples/cmdline/commands.c
@@ -33,28 +33,6 @@ struct object_list global_obj_list;
(unsigned)((unsigned char *)&addr)[3]
#endif
-#ifndef NIP6
-#define NIP6_FMT "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x"
-#define NIP6(addr) \
- (unsigned)((addr).s6_addr[0]), \
- (unsigned)((addr).s6_addr[1]), \
- (unsigned)((addr).s6_addr[2]), \
- (unsigned)((addr).s6_addr[3]), \
- (unsigned)((addr).s6_addr[4]), \
- (unsigned)((addr).s6_addr[5]), \
- (unsigned)((addr).s6_addr[6]), \
- (unsigned)((addr).s6_addr[7]), \
- (unsigned)((addr).s6_addr[8]), \
- (unsigned)((addr).s6_addr[9]), \
- (unsigned)((addr).s6_addr[10]), \
- (unsigned)((addr).s6_addr[11]), \
- (unsigned)((addr).s6_addr[12]), \
- (unsigned)((addr).s6_addr[13]), \
- (unsigned)((addr).s6_addr[14]), \
- (unsigned)((addr).s6_addr[15])
-#endif
-
-
/**********************************************************/
/* Show or delete tokens. 8< */
@@ -74,8 +52,8 @@ static void cmd_obj_del_show_parsed(void *parsed_result,
snprintf(ip_str, sizeof(ip_str), NIPQUAD_FMT,
NIPQUAD(res->obj->ip.addr.ipv4));
else
- snprintf(ip_str, sizeof(ip_str), NIP6_FMT,
- NIP6(res->obj->ip.addr.ipv6));
+ snprintf(ip_str, sizeof(ip_str), RTE_IPV6_ADDR_FMT,
+ RTE_IPV6_ADDR_SPLIT(&res->obj->ip.addr.ipv6));
if (strcmp(res->action, "del") == 0) {
SLIST_REMOVE(&global_obj_list, res->obj, object, next);
@@ -145,8 +123,8 @@ static void cmd_obj_add_parsed(void *parsed_result,
snprintf(ip_str, sizeof(ip_str), NIPQUAD_FMT,
NIPQUAD(o->ip.addr.ipv4));
else
- snprintf(ip_str, sizeof(ip_str), NIP6_FMT,
- NIP6(o->ip.addr.ipv6));
+ snprintf(ip_str, sizeof(ip_str), RTE_IPV6_ADDR_FMT,
+ RTE_IPV6_ADDR_SPLIT(&o->ip.addr.ipv6));
cmdline_printf(cl, "Object %s added, ip=%s\n",
o->name, ip_str);
diff --git a/lib/cmdline/cmdline_parse_ipaddr.h b/lib/cmdline/cmdline_parse_ipaddr.h
index 0118c31d4484..8653de8237fc 100644
--- a/lib/cmdline/cmdline_parse_ipaddr.h
+++ b/lib/cmdline/cmdline_parse_ipaddr.h
@@ -9,6 +9,7 @@
#include <cmdline_parse.h>
#include <rte_ip.h>
+#include <rte_ip6.h>
#ifdef __cplusplus
extern "C" {
@@ -22,7 +23,7 @@ struct cmdline_ipaddr {
uint8_t family;
union {
struct in_addr ipv4;
- struct in6_addr ipv6;
+ struct rte_ipv6_addr ipv6;
} addr;
unsigned int prefixlen; /* in case of network only */
};
--
2.47.0
next prev parent reply other threads:[~2024-10-18 14:07 UTC|newest]
Thread overview: 126+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-21 16:25 [PATCH dpdk v1 00/15] IPv6 APIs overhaul Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 01/15] net: split raw checksum functions in separate header Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 02/15] net: split ipv6 symbols " Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 03/15] net: add structure for ipv6 addresses Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 04/15] net: use ipv6 structure for header addresses Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 05/15] fib6,rib6,lpm6: use ipv6 addr struct Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 06/15] net: add ipv6 address utilities Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 07/15] fib6,rib6,lpm6: use ipv6 utils Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 08/15] graph,node: use ipv6 addr struct and utils Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 09/15] pipeline: use ipv6 addr struct Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 10/15] ipsec: " Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 11/15] thash: " Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 12/15] gro: " Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 13/15] rte_flow: " Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 14/15] rib6,fib6,lpm6: remove duplicate constants Robin Jarry
2024-08-21 16:25 ` [PATCH dpdk v1 15/15] net: add utilities for well known ipv6 address types Robin Jarry
2024-08-21 22:28 ` [PATCH dpdk v1 00/15] IPv6 APIs overhaul Morten Brørup
2024-08-22 14:13 ` Stephen Hemminger
2024-08-22 15:13 ` Morten Brørup
2024-08-22 15:27 ` Robin Jarry
2024-08-22 18:41 ` Morten Brørup
2024-08-22 15:14 ` Robin Jarry
2024-08-22 15:16 ` Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 00/16] " Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 01/16] net: split raw checksum functions in separate header Robin Jarry
2024-10-03 23:12 ` Stephen Hemminger
2024-10-01 8:17 ` [PATCH dpdk v2 02/16] net: split ipv6 symbols " Robin Jarry
2024-10-03 23:15 ` Stephen Hemminger
2024-10-01 8:17 ` [PATCH dpdk v2 03/16] net: add structure for ipv6 addresses Robin Jarry
2024-10-03 23:18 ` Stephen Hemminger
2024-10-04 11:59 ` Robin Jarry
2024-10-06 8:18 ` Morten Brørup
2024-10-10 20:08 ` Robin Jarry
2024-10-11 12:37 ` Morten Brørup
2024-10-11 17:02 ` Stephen Hemminger
2024-10-01 8:17 ` [PATCH dpdk v2 04/16] net: use ipv6 structure for header addresses Robin Jarry
2024-10-03 23:20 ` Stephen Hemminger
2024-10-04 18:01 ` Ferruh Yigit
2024-10-04 20:04 ` Robin Jarry
2024-10-06 21:03 ` Ferruh Yigit
2024-10-01 8:17 ` [PATCH dpdk v2 05/16] fib6,rib6,lpm6: use ipv6 addr struct Robin Jarry
2024-10-03 23:21 ` Stephen Hemminger
2024-10-01 8:17 ` [PATCH dpdk v2 06/16] net: add ipv6 address utilities Robin Jarry
2024-10-01 15:35 ` Stephen Hemminger
2024-10-03 23:22 ` Stephen Hemminger
2024-10-01 8:17 ` [PATCH dpdk v2 07/16] fib6,rib6,lpm6: use ipv6 utils Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 08/16] graph,node: use ipv6 addr struct and utils Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 09/16] pipeline: use ipv6 addr struct Robin Jarry
2024-10-03 23:23 ` Stephen Hemminger
2024-10-04 11:55 ` Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 10/16] ipsec: " Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 11/16] thash: " Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 12/16] gro: " Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 13/16] rte_flow: " Robin Jarry
2024-10-01 8:17 ` [PATCH dpdk v2 14/16] rib6,fib6,lpm6: remove duplicate constants Robin Jarry
2024-10-03 23:12 ` Stephen Hemminger
2024-10-04 11:54 ` Robin Jarry
2024-10-04 16:16 ` Stephen Hemminger
2024-10-01 8:17 ` [PATCH dpdk v2 15/16] net: add utilities for well known ipv6 address types Robin Jarry
2024-10-03 23:24 ` Stephen Hemminger
2024-10-01 8:17 ` [PATCH dpdk v2 16/16] ipv6: add function to check ipv6 version Robin Jarry
2024-10-06 9:02 ` Morten Brørup
2024-10-10 20:00 ` Robin Jarry
2024-10-11 12:05 ` Morten Brørup
2024-10-10 15:26 ` Konstantin Ananyev
2024-10-06 9:04 ` [PATCH dpdk v2 00/16] IPv6 APIs overhaul Morten Brørup
2024-10-10 15:27 ` Konstantin Ananyev
2024-10-10 19:41 ` [PATCH dpdk v3 00/17] " Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 01/17] net: split raw checksum functions in separate header Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 02/17] net: split ipv6 symbols " Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 03/17] net: add structure for ipv6 addresses Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 04/17] net: add ipv6 address utilities Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 05/17] net: use struct rte_ipv6_addr for header addresses Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 06/17] fib6,rib6,lpm6: use struct rte_ipv6_addr Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 07/17] fib6,rib6,lpm6: use ipv6 utils Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 08/17] rib6,fib6,lpm6: remove duplicate constants Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 09/17] cmdline: replace in6_addr with rte_ipv6_addr Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 10/17] graph,node: use struct rte_ipv6_addr and utils Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 11/17] pipeline: use struct rte_ipv6_addr Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 12/17] ipsec, security: use struct rte_ipv6_addr and utils Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 13/17] thash: use struct rte_ipv6_addr Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 14/17] gro: " Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 15/17] rte_flow: " Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 16/17] net: add utilities for well known ipv6 address types Robin Jarry
2024-10-10 19:41 ` [PATCH dpdk v3 17/17] ipv6: add function to check ipv6 version Robin Jarry
2024-10-15 17:12 ` Stephen Hemminger
2024-10-17 13:52 ` [PATCH dpdk v3 00/17] IPv6 APIs overhaul David Marchand
2024-10-17 18:03 ` Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 " Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 01/17] net: split raw checksum functions in separate header Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 02/17] net: split IPv4 and IPv6 symbols in separate headers Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 03/17] net: add IPv6 address structure and utils Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 04/17] net: use IPv6 structure for packet headers Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 05/17] lpm6: use IPv6 address structure and utils Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 06/17] fib6: " Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 07/17] rib6: " Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 08/17] cmdline: use IPv6 address structure Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 09/17] node: use IPv6 address structure and utils Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 10/17] pipeline: use IPv6 structures Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 11/17] ipsec: use IPv6 address structure Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 12/17] security: " Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 13/17] hash: " Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 14/17] gro: " Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 15/17] flow: " Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 16/17] net: add utilities for well known IPv6 address types Robin Jarry
2024-10-18 9:17 ` [PATCH dpdk v4 17/17] net: add function to check IPv6 version Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 00/17] IPv6 APIs overhaul Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 01/17] net: split raw checksum functions in separate header Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 02/17] net: split IPv4 and IPv6 symbols in separate headers Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 03/17] net: add IPv6 address structure and utils Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 04/17] net: use IPv6 structure for packet headers Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 05/17] lpm6: use IPv6 address structure and utils Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 06/17] fib6: " Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 07/17] rib6: " Robin Jarry
2024-10-18 14:05 ` Robin Jarry [this message]
2024-10-18 14:24 ` [PATCH dpdk v5 08/17] cmdline: use IPv6 address structure Bruce Richardson
2024-10-18 14:05 ` [PATCH dpdk v5 09/17] node: use IPv6 address structure and utils Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 10/17] pipeline: use IPv6 structures Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 11/17] ipsec: use IPv6 address structure Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 12/17] security: " Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 13/17] hash: " Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 14/17] gro: " Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 15/17] flow: " Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 16/17] net: add utilities for well known IPv6 address types Robin Jarry
2024-10-18 14:05 ` [PATCH dpdk v5 17/17] net: add function to check IPv6 version Robin Jarry
2024-10-18 16:06 ` [PATCH dpdk v5 00/17] IPv6 APIs overhaul David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241018140553.79789-9-rjarry@redhat.com \
--to=rjarry@redhat.com \
--cc=aman.deep.singh@intel.com \
--cc=dev@dpdk.org \
--cc=orika@nvidia.com \
--cc=rkudurumalla@marvell.com \
--cc=skori@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).