@@ -248,8 +248,8 @@ get_random_rules(struct rule *tbl, uint32_t nb_rules, int rule_tbl)
(uint64_t)(edge + step));
if (config.ipv6) {
for (j = 0; j < 16; j++) {
- tbl[i].tuple.v6.dip[j] = rte_rand();
- tbl[i].tuple.v6.sip[j] = rte_rand();
+ tbl[i].tuple.v6.dip.a[j] = rte_rand();
+ tbl[i].tuple.v6.sip.a[j] = rte_rand();
}
} else {
tbl[i].tuple.v4.dip = rte_rand();
@@ -274,9 +274,9 @@ get_random_rules(struct rule *tbl, uint32_t nb_rules, int rule_tbl)
(uint64_t)(edge + step));
if (config.ipv6) {
for (j = 0; j < 16; j++) {
- tbl[i].tuple.v6.dip[j] =
+ tbl[i].tuple.v6.dip.a[j] =
rte_rand();
- tbl[i].tuple.v6.sip[j] =
+ tbl[i].tuple.v6.sip.a[j] =
rte_rand();
}
} else {
@@ -289,11 +289,11 @@ get_random_rules(struct rule *tbl, uint32_t nb_rules, int rule_tbl)
config.nb_rules].tuple.v4.spi;
if (config.ipv6) {
int r_idx = i % config.nb_rules;
- memcpy(tbl[i].tuple.v6.dip,
- rules_tbl[r_idx].tuple.v6.dip,
+ memcpy(&tbl[i].tuple.v6.dip,
+ &rules_tbl[r_idx].tuple.v6.dip,
sizeof(tbl[i].tuple.v6.dip));
- memcpy(tbl[i].tuple.v6.sip,
- rules_tbl[r_idx].tuple.v6.sip,
+ memcpy(&tbl[i].tuple.v6.sip,
+ &rules_tbl[r_idx].tuple.v6.sip,
sizeof(tbl[i].tuple.v6.sip));
} else {
tbl[i].tuple.v4.dip = rules_tbl[i %
@@ -472,8 +472,8 @@ print_result(const union rte_ipsec_sad_key *key, void *res)
v4 = &key->v4;
v6 = &key->v6;
spi = (config.ipv6 == 0) ? v4->spi : v6->spi;
- dip = (config.ipv6 == 0) ? &v4->dip : (const void *)v6->dip;
- sip = (config.ipv6 == 0) ? &v4->sip : (const void *)v6->sip;
+ dip = (config.ipv6 == 0) ? &v4->dip : (const void *)&v6->dip;
+ sip = (config.ipv6 == 0) ? &v4->sip : (const void *)&v6->sip;
if (res == NULL) {
printf("TUPLE: ");
@@ -500,8 +500,8 @@ print_result(const union rte_ipsec_sad_key *key, void *res)
v4 = &rule->tuple.v4;
v6 = &rule->tuple.v6;
spi = (config.ipv6 == 0) ? v4->spi : v6->spi;
- dip = (config.ipv6 == 0) ? &v4->dip : (const void *)v6->dip;
- sip = (config.ipv6 == 0) ? &v4->sip : (const void *)v6->sip;
+ dip = (config.ipv6 == 0) ? &v4->dip : (const void *)&v6->dip;
+ sip = (config.ipv6 == 0) ? &v4->sip : (const void *)&v6->sip;
printf("\n\tpoints to RULE ID %zu ",
RTE_PTR_DIFF(res, rules_tbl)/sizeof(struct rule));
print_tuple(af, spi, dip, sip);
@@ -212,7 +212,7 @@ test_add_invalid(void)
{
int status;
struct rte_ipsec_sadv4_key tuple_v4 = {10, 20, 30};
- struct rte_ipsec_sadv6_key tuple_v6 = {10, {20, }, {30, } };
+ struct rte_ipsec_sadv6_key tuple_v6 = {10, {.a = {20, }}, {.a = {30, }} };
status = __test_add_invalid(0, (union rte_ipsec_sad_key *)&tuple_v4);
if (status != TEST_SUCCESS)
@@ -271,8 +271,8 @@ test_delete_invalid(void)
{
int status;
struct rte_ipsec_sadv4_key tuple_v4 = {SPI, DIP, SIP};
- struct rte_ipsec_sadv6_key tuple_v6 = {SPI, {0xbe, 0xef, },
- {0xf0, 0x0d, } };
+ struct rte_ipsec_sadv6_key tuple_v6 = {
+ SPI, {.a = {0xbe, 0xef, }}, {.a = {0xf0, 0x0d, }} };
status = __test_delete_invalid(0, (union rte_ipsec_sad_key *)&tuple_v4);
if (status != TEST_SUCCESS)
@@ -329,7 +329,7 @@ test_lookup_invalid(void)
{
int status;
struct rte_ipsec_sadv4_key tuple_v4 = {10, 20, 30};
- struct rte_ipsec_sadv6_key tuple_v6 = {10, {20, }, {30, } };
+ struct rte_ipsec_sadv6_key tuple_v6 = {10, {.a = {20, }}, {.a = {30, }} };
status = __test_lookup_invalid(0,
(union rte_ipsec_sad_key *)&tuple_v4);
@@ -405,10 +405,10 @@ test_lookup_basic(void)
int status;
struct rte_ipsec_sadv4_key tuple_v4 = {SPI, DIP, SIP};
struct rte_ipsec_sadv4_key tuple_v4_1 = {SPI, BAD, BAD};
- struct rte_ipsec_sadv6_key tuple_v6 = {SPI, {0xbe, 0xef, },
- {0xf0, 0x0d, } };
- struct rte_ipsec_sadv6_key tuple_v6_1 = {SPI, {0x0b, 0xad, },
- {0x0b, 0xad, } };
+ struct rte_ipsec_sadv6_key tuple_v6 = {
+ SPI, {.a = {0xbe, 0xef, }}, {.a = {0xf0, 0x0d, }} };
+ struct rte_ipsec_sadv6_key tuple_v6_1 = {
+ SPI, {.a = {0x0b, 0xad, }}, {.a = {0x0b, 0xad, }} };
status = __test_lookup_basic(0, (union rte_ipsec_sad_key *)&tuple_v4,
(union rte_ipsec_sad_key *)&tuple_v4_1);
@@ -654,14 +654,14 @@ test_lookup_adv(void)
struct rte_ipsec_sadv4_key tuple_v4_3 = {BAD, DIP, SIP};
/* key to install*/
- struct rte_ipsec_sadv6_key tuple_v6 = {SPI, {0xbe, 0xef, },
- {0xf0, 0x0d, } };
- struct rte_ipsec_sadv6_key tuple_v6_1 = {SPI, {0xbe, 0xef, },
- {0x0b, 0xad, } };
- struct rte_ipsec_sadv6_key tuple_v6_2 = {SPI, {0x0b, 0xad, },
- {0xf0, 0x0d, } };
- struct rte_ipsec_sadv6_key tuple_v6_3 = {BAD, {0xbe, 0xef, },
- {0xf0, 0x0d, } };
+ struct rte_ipsec_sadv6_key tuple_v6 = {
+ SPI, {.a = {0xbe, 0xef, }}, {.a = {0xf0, 0x0d, }} };
+ struct rte_ipsec_sadv6_key tuple_v6_1 = {
+ SPI, {.a = {0xbe, 0xef, }}, {.a = {0x0b, 0xad, }} };
+ struct rte_ipsec_sadv6_key tuple_v6_2 = {
+ SPI, {.a = {0x0b, 0xad, }}, {.a = {0xf0, 0x0d, }} };
+ struct rte_ipsec_sadv6_key tuple_v6_3 = {
+ BAD, {.a = {0xbe, 0xef, }}, {.a = {0xf0, 0x0d, }} };
const union rte_ipsec_sad_key *key_arr[] = {
(union rte_ipsec_sad_key *)&tuple_v4,
@@ -852,12 +852,12 @@ test_lookup_order(void)
struct rte_ipsec_sadv4_key tuple_v4_1 = {SPI, DIP, BAD};
struct rte_ipsec_sadv4_key tuple_v4_2 = {SPI, BAD, SIP};
/* key to install*/
- struct rte_ipsec_sadv6_key tuple_v6 = {SPI, {0xbe, 0xef, },
- {0xf0, 0x0d, } };
- struct rte_ipsec_sadv6_key tuple_v6_1 = {SPI, {0xbe, 0xef, },
- {0x0b, 0xad, } };
- struct rte_ipsec_sadv6_key tuple_v6_2 = {SPI, {0x0b, 0xad, },
- {0xf0, 0x0d, } };
+ struct rte_ipsec_sadv6_key tuple_v6 = {
+ SPI, {.a = {0xbe, 0xef, }}, {.a = {0xf0, 0x0d, }} };
+ struct rte_ipsec_sadv6_key tuple_v6_1 = {
+ SPI, {.a = {0xbe, 0xef, }}, {.a = {0x0b, 0xad, }} };
+ struct rte_ipsec_sadv6_key tuple_v6_2 = {
+ SPI, {.a = {0x0b, 0xad, }}, {.a = {0xf0, 0x0d, }} };
status = __test_lookup_order(0, (union rte_ipsec_sad_key *)&tuple_v4,
(union rte_ipsec_sad_key *)&tuple_v4_1,
@@ -74,8 +74,6 @@ Deprecation Notices
- ``struct tcp6_flow_key``
hash
- ``struct rte_ipv6_tuple``
- ipsec
- - ``struct rte_ipsec_sadv6_key``
* net, ethdev: The flow item ``RTE_FLOW_ITEM_TYPE_VXLAN_GPE``
is replaced with ``RTE_FLOW_ITEM_TYPE_VXLAN``.
@@ -93,6 +93,8 @@ API Changes
``uint8_t[16]`` parameter.
* pipeline: ``rte_table_action_ipv6_header`` and ``rte_table_action_nat_params`` were modified to
use ``rte_ipv6_addr`` structures instead of ``uint8_t[16]`` fields.
+* ipsec: ``rte_ipsec_sadv6_key`` was modified to use ``rte_ipv6_addr`` structures instead of
+ ``uint8_t[16]`` fields.
ABI Changes
-----------
@@ -9,6 +9,8 @@
#include <rte_ip6.h>
#include <rte_ipsec_sad.h>
+#include "ipsec.h"
+
#define SA_CACHE_SZ 128
#define SPI2IDX(spi, mask) ((spi) & (mask))
@@ -39,8 +41,8 @@ cmp_sa_key(struct ipsec_sa *sa, int is_v4, struct rte_ipv4_hdr *ipv4,
(sa->dst.ip.ip4 == ipv4->dst_addr)) ||
/* IPv6 check */
(!is_v4 && (sa_type == IP6_TUNNEL) &&
- (!memcmp(sa->src.ip.ip6.ip6, &ipv6->src_addr, 16)) &&
- (!memcmp(sa->dst.ip.ip6.ip6, &ipv6->dst_addr, 16))))
+ (!memcmp(&sa->src.ip.ip6.ip6, &ipv6->src_addr, 16)) &&
+ (!memcmp(&sa->dst.ip.ip6.ip6, &ipv6->dst_addr, 16))))
return 1;
return 0;
@@ -130,9 +132,9 @@ sad_lookup(struct ipsec_sad *sad, struct rte_mbuf *pkts[],
}
}
v6[nb_v6].spi = esp->spi;
- memcpy(v6[nb_v6].dip, &ipv6->dst_addr,
+ memcpy(&v6[nb_v6].dip, &ipv6->dst_addr,
sizeof(ipv6->dst_addr));
- memcpy(v6[nb_v6].sip, &ipv6->src_addr,
+ memcpy(&v6[nb_v6].sip, &ipv6->src_addr,
sizeof(ipv6->src_addr));
keys_v6[nb_v6] = (const union rte_ipsec_sad_key *)
&v6[nb_v6];
@@ -6,8 +6,9 @@
#ifndef _RTE_IPSEC_SAD_H_
#define _RTE_IPSEC_SAD_H_
-#include <stdint.h>
+#include <rte_ip6.h>
+#include <stdint.h>
/**
* @file rte_ipsec_sad.h
@@ -38,8 +39,8 @@ struct rte_ipsec_sadv4_key {
struct rte_ipsec_sadv6_key {
uint32_t spi;
- uint8_t dip[16];
- uint8_t sip[16];
+ struct rte_ipv6_addr dip;
+ struct rte_ipv6_addr sip;
};
union rte_ipsec_sad_key {