For consistency with the rest of the code base, update
rte_security_ipsec_tunnel_param to use rte_ipv6_addr structures instead
of in6_addr.

Signed-off-by: Robin Jarry <rja...@redhat.com>
---
 doc/guides/rel_notes/release_24_11.rst |  2 ++
 drivers/common/cnxk/cnxk_security.c    | 14 ++++++--------
 drivers/net/iavf/iavf_ipsec_crypto.c   |  3 +--
 drivers/net/nfp/nfp_ipsec.c            |  4 ++--
 examples/ipsec-secgw/ipsec.c           | 12 ++++++------
 lib/pipeline/rte_swx_ipsec.c           |  8 ++------
 lib/security/rte_security.h            |  5 +++--
 7 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/doc/guides/rel_notes/release_24_11.rst 
b/doc/guides/rel_notes/release_24_11.rst
index ca8b9441d430..05212a4cc2b3 100644
--- a/doc/guides/rel_notes/release_24_11.rst
+++ b/doc/guides/rel_notes/release_24_11.rst
@@ -312,6 +312,8 @@ API Changes
     - ``struct rte_swx_ipsec_sa_encap_params``
     - ``struct rte_table_action_ipv6_header``
     - ``struct rte_table_action_nat_params``
+  security
+    - ``struct rte_security_ipsec_tunnel_param``
   table
     - ``struct rte_table_lpm_ipv6_key``
   rib
diff --git a/drivers/common/cnxk/cnxk_security.c 
b/drivers/common/cnxk/cnxk_security.c
index e67c3f233187..c2871ad2bda5 100644
--- a/drivers/common/cnxk/cnxk_security.c
+++ b/drivers/common/cnxk/cnxk_security.c
@@ -271,9 +271,9 @@ ot_ipsec_inb_tunnel_hdr_fill(struct roc_ot_ipsec_inb_sa *sa,
        case RTE_SECURITY_IPSEC_TUNNEL_IPV6:
                sa->w2.s.outer_ip_ver = ROC_IE_SA_IP_VERSION_6;
                memcpy(&sa->outer_hdr.ipv6.src_addr, &tunnel->ipv6.src_addr,
-                      sizeof(struct in6_addr));
+                      sizeof(sa->outer_hdr.ipv6.src_addr));
                memcpy(&sa->outer_hdr.ipv6.dst_addr, &tunnel->ipv6.dst_addr,
-                      sizeof(struct in6_addr));
+                      sizeof(sa->outer_hdr.ipv6.dst_addr));
 
                /* IP Source and Dest are in LE/CPU endian */
                ot_ipsec_update_ipv6_addr_endianness((uint64_t 
*)&sa->outer_hdr.ipv6.src_addr);
@@ -472,9 +472,9 @@ cnxk_ot_ipsec_outb_sa_fill(struct roc_ot_ipsec_outb_sa *sa,
        case RTE_SECURITY_IPSEC_TUNNEL_IPV6:
                sa->w2.s.outer_ip_ver = ROC_IE_SA_IP_VERSION_6;
                memcpy(&sa->outer_hdr.ipv6.src_addr, &tunnel->ipv6.src_addr,
-                      sizeof(struct in6_addr));
+                      sizeof(sa->outer_hdr.ipv6.src_addr));
                memcpy(&sa->outer_hdr.ipv6.dst_addr, &tunnel->ipv6.dst_addr,
-                      sizeof(struct in6_addr));
+                      sizeof(sa->outer_hdr.ipv6.dst_addr));
 
                /* IP Source and Dest are in LE/CPU endian */
                ot_ipsec_update_ipv6_addr_endianness((uint64_t 
*)&sa->outer_hdr.ipv6.src_addr);
@@ -1087,10 +1087,8 @@ cnxk_on_ipsec_outb_sa_create(struct 
rte_security_ipsec_xform *ipsec,
                        ip6->hop_limits = ipsec->tunnel.ipv6.hlimit ?
                                                  ipsec->tunnel.ipv6.hlimit :
                                                  0x40;
-                       memcpy(&ip6->src_addr, &ipsec->tunnel.ipv6.src_addr,
-                              sizeof(struct in6_addr));
-                       memcpy(&ip6->dst_addr, &ipsec->tunnel.ipv6.dst_addr,
-                              sizeof(struct in6_addr));
+                       ip6->src_addr = ipsec->tunnel.ipv6.src_addr;
+                       ip6->dst_addr = ipsec->tunnel.ipv6.dst_addr;
                }
        } else
                ctx_len += sizeof(template->ip4);
diff --git a/drivers/net/iavf/iavf_ipsec_crypto.c 
b/drivers/net/iavf/iavf_ipsec_crypto.c
index 89dd5af5500f..90421a66c309 100644
--- a/drivers/net/iavf/iavf_ipsec_crypto.c
+++ b/drivers/net/iavf/iavf_ipsec_crypto.c
@@ -510,8 +510,7 @@ iavf_ipsec_crypto_security_association_add(struct 
iavf_adapter *adapter,
                *((uint32_t *)sa_cfg->dst_addr) =
                        htonl(conf->ipsec.tunnel.ipv4.dst_ip.s_addr);
        } else {
-               uint32_t *v6_dst_addr =
-                       (uint32_t *)conf->ipsec.tunnel.ipv6.dst_addr.s6_addr;
+               uint32_t *v6_dst_addr = (uint32_t 
*)&conf->ipsec.tunnel.ipv6.dst_addr;
 
                sa_cfg->virtchnl_ip_type = VIRTCHNL_IPV6;
 
diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c
index 89116af1b22f..13f2b850e59d 100644
--- a/drivers/net/nfp/nfp_ipsec.c
+++ b/drivers/net/nfp/nfp_ipsec.c
@@ -1042,8 +1042,8 @@ nfp_ipsec_msg_build(struct rte_eth_dev *eth_dev,
                        cfg->dst_ip[0] = rte_be_to_cpu_32(dst_ip[0]);
                        cfg->ipv6 = 0;
                } else if (type == RTE_SECURITY_IPSEC_TUNNEL_IPV6) {
-                       src_ip = (rte_be32_t 
*)conf->ipsec.tunnel.ipv6.src_addr.s6_addr;
-                       dst_ip = (rte_be32_t 
*)conf->ipsec.tunnel.ipv6.dst_addr.s6_addr;
+                       src_ip = (rte_be32_t 
*)&conf->ipsec.tunnel.ipv6.src_addr;
+                       dst_ip = (rte_be32_t 
*)&conf->ipsec.tunnel.ipv6.dst_addr;
                        for (i = 0; i < 4; i++) {
                                cfg->src_ip[i] = rte_be_to_cpu_32(src_ip[i]);
                                cfg->dst_ip[i] = rte_be_to_cpu_32(dst_ip[i]);
diff --git a/examples/ipsec-secgw/ipsec.c b/examples/ipsec-secgw/ipsec.c
index 3b1e2a710971..c65efd1c166a 100644
--- a/examples/ipsec-secgw/ipsec.c
+++ b/examples/ipsec-secgw/ipsec.c
@@ -41,8 +41,8 @@ set_ipsec_conf(struct ipsec_sa *sa, struct 
rte_security_ipsec_xform *ipsec)
                        tunnel->ipv6.hlimit = IPDEFTTL;
                        tunnel->ipv6.dscp = 0;
                        tunnel->ipv6.flabel = 0;
-                       memcpy(&tunnel->ipv6.src_addr, &sa->src.ip.ip6, 16);
-                       memcpy(&tunnel->ipv6.dst_addr, &sa->dst.ip.ip6, 16);
+                       tunnel->ipv6.src_addr = sa->src.ip.ip6;
+                       tunnel->ipv6.dst_addr = sa->dst.ip.ip6;
                }
                /* TODO support for Transport */
        }
@@ -446,8 +446,8 @@ create_inline_session(struct socket_ctx *skt_ctx, struct 
ipsec_sa *sa,
                        sess_conf.ipsec.tunnel.type =
                                RTE_SECURITY_IPSEC_TUNNEL_IPV6;
 
-                       memcpy(&sess_conf.ipsec.tunnel.ipv6.src_addr, 
&sa->src.ip.ip6, 16);
-                       memcpy(&sess_conf.ipsec.tunnel.ipv6.dst_addr, 
&sa->dst.ip.ip6, 16);
+                       sess_conf.ipsec.tunnel.ipv6.src_addr = sa->src.ip.ip6;
+                       sess_conf.ipsec.tunnel.ipv6.dst_addr = sa->dst.ip.ip6;
                }
        } else if (IS_TUNNEL(sa->flags)) {
                sess_conf.ipsec.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL;
@@ -464,8 +464,8 @@ create_inline_session(struct socket_ctx *skt_ctx, struct 
ipsec_sa *sa,
                        sess_conf.ipsec.tunnel.type =
                                RTE_SECURITY_IPSEC_TUNNEL_IPV6;
 
-                       memcpy(&sess_conf.ipsec.tunnel.ipv6.src_addr, 
&sa->src.ip.ip6, 16);
-                       memcpy(&sess_conf.ipsec.tunnel.ipv6.dst_addr, 
&sa->dst.ip.ip6, 16);
+                       sess_conf.ipsec.tunnel.ipv6.src_addr = sa->src.ip.ip6;
+                       sess_conf.ipsec.tunnel.ipv6.dst_addr = sa->dst.ip.ip6;
                } else {
                        RTE_LOG(ERR, IPSEC, "invalid tunnel type\n");
                        return -1;
diff --git a/lib/pipeline/rte_swx_ipsec.c b/lib/pipeline/rte_swx_ipsec.c
index 6bc81145409b..17a9d2b98bc0 100644
--- a/lib/pipeline/rte_swx_ipsec.c
+++ b/lib/pipeline/rte_swx_ipsec.c
@@ -1579,12 +1579,8 @@ ipsec_xform_get(struct rte_swx_ipsec_sa_params *p,
                        ipsec_xform->tunnel.ipv4.df = 0;
                        ipsec_xform->tunnel.ipv4.ttl = 64;
                } else {
-                       memcpy(&ipsec_xform->tunnel.ipv6.src_addr,
-                               &p->encap.tunnel.ipv6.src_addr,
-                               sizeof(ipsec_xform->tunnel.ipv6.src_addr));
-                       memcpy(&ipsec_xform->tunnel.ipv6.dst_addr,
-                               &p->encap.tunnel.ipv6.dst_addr,
-                               sizeof(ipsec_xform->tunnel.ipv6.dst_addr));
+                       ipsec_xform->tunnel.ipv6.src_addr = 
p->encap.tunnel.ipv6.src_addr;
+                       ipsec_xform->tunnel.ipv6.dst_addr = 
p->encap.tunnel.ipv6.dst_addr;
                        ipsec_xform->tunnel.ipv6.dscp = 0;
                        ipsec_xform->tunnel.ipv6.flabel = 0;
                        ipsec_xform->tunnel.ipv6.hlimit = 64;
diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
index 7a9bafa0fa72..032bf9c5fbfa 100644
--- a/lib/security/rte_security.h
+++ b/lib/security/rte_security.h
@@ -18,6 +18,7 @@
 #include <rte_common.h>
 #include <rte_crypto.h>
 #include <rte_ip.h>
+#include <rte_ip6.h>
 #include <rte_mbuf_dyn.h>
 
 #ifdef __cplusplus
@@ -85,9 +86,9 @@ struct rte_security_ipsec_tunnel_param {
                } ipv4;
                /**< IPv4 header parameters */
                struct {
-                       struct in6_addr src_addr;
+                       struct rte_ipv6_addr src_addr;
                        /**< IPv6 source address */
-                       struct in6_addr dst_addr;
+                       struct rte_ipv6_addr dst_addr;
                        /**< IPv6 destination address */
                        uint8_t dscp;
                        /**< IPv6 Differentiated Services Code Point */
-- 
2.47.0

Reply via email to