diff options
author | Janne Peltonen <janne.peltonen@nokia.com> | 2021-03-27 11:58:36 +0200 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2021-04-01 15:02:59 +0300 |
commit | 6fba5c596f501455fb9f3704bdb612e7c91ce384 (patch) | |
tree | 14b054759ddbcbbe8dfe2491ff85079a609eca68 /test/validation | |
parent | bef1a06087cb520bb55bd1073826716620a63780 (diff) |
validation: ipsec: move combined out+in test code away from the infra
Move ipsec_check_out_in_one() from the generic framework file to a
test case file where it better belongs.
Signed-off-by: Janne Peltonen <janne.peltonen@nokia.com>
Reviewed-by: Anoob Joseph <anoobj@marvell.com>
Diffstat (limited to 'test/validation')
-rw-r--r-- | test/validation/api/ipsec/ipsec.c | 65 | ||||
-rw-r--r-- | test/validation/api/ipsec/ipsec.h | 3 | ||||
-rw-r--r-- | test/validation/api/ipsec/ipsec_test_out.c | 68 |
3 files changed, 67 insertions, 69 deletions
diff --git a/test/validation/api/ipsec/ipsec.c b/test/validation/api/ipsec/ipsec.c index ab43dd03f..2caf90b32 100644 --- a/test/validation/api/ipsec/ipsec.c +++ b/test/validation/api/ipsec/ipsec.c @@ -796,35 +796,6 @@ static void ipsec_pkt_seq_num_check(odp_packet_t pkt, uint32_t seq_num) } } -static void ipsec_pkt_proto_err_set(odp_packet_t pkt) -{ - uint32_t l3_off = odp_packet_l3_offset(pkt); - odph_ipv4hdr_t ip; - - /* Simulate proto error by corrupting protocol field */ - - odp_packet_copy_to_mem(pkt, l3_off, sizeof(ip), &ip); - - if (ip.proto == ODPH_IPPROTO_ESP) - ip.proto = ODPH_IPPROTO_AH; - else - ip.proto = ODPH_IPPROTO_ESP; - - odp_packet_copy_from_mem(pkt, l3_off, sizeof(ip), &ip); -} - -static void ipsec_pkt_auth_err_set(odp_packet_t pkt) -{ - uint32_t data, len; - - /* Simulate auth error by corrupting ICV */ - - len = odp_packet_len(pkt); - odp_packet_copy_to_mem(pkt, len - sizeof(data), sizeof(data), &data); - data = ~data; - odp_packet_copy_from_mem(pkt, len - sizeof(data), sizeof(data), &data); -} - static void ipsec_pkt_v4_check_udp_encap(odp_packet_t pkt) { uint32_t l3_off = odp_packet_l3_offset(pkt); @@ -999,42 +970,6 @@ void ipsec_check_out_one(const ipsec_test_part *part, odp_ipsec_sa_t sa) odp_packet_free(pkto[i]); } -void ipsec_check_out_in_one(const ipsec_test_part *part, - odp_ipsec_sa_t sa, - odp_ipsec_sa_t sa_in) -{ - int num_out = part->num_pkt; - odp_packet_t pkto[num_out]; - int i; - - num_out = ipsec_check_out(part, sa, pkto); - - for (i = 0; i < num_out; i++) { - ipsec_test_part part_in = *part; - ipsec_test_packet pkt_in; - - CU_ASSERT_FATAL(odp_packet_len(pkto[i]) <= - sizeof(pkt_in.data)); - - if (part->flags.stats == IPSEC_TEST_STATS_PROTO_ERR) - ipsec_pkt_proto_err_set(pkto[i]); - - if (part->flags.stats == IPSEC_TEST_STATS_AUTH_ERR) - ipsec_pkt_auth_err_set(pkto[i]); - - pkt_in.len = odp_packet_len(pkto[i]); - pkt_in.l2_offset = odp_packet_l2_offset(pkto[i]); - pkt_in.l3_offset = odp_packet_l3_offset(pkto[i]); - pkt_in.l4_offset = odp_packet_l4_offset(pkto[i]); - odp_packet_copy_to_mem(pkto[i], 0, - pkt_in.len, - pkt_in.data); - part_in.pkt_in = &pkt_in; - ipsec_check_in_one(&part_in, sa_in); - odp_packet_free(pkto[i]); - } -} - int ipsec_suite_init(void) { int rc = 0; diff --git a/test/validation/api/ipsec/ipsec.h b/test/validation/api/ipsec/ipsec.h index f8739f8d6..eefdf4fe0 100644 --- a/test/validation/api/ipsec/ipsec.h +++ b/test/validation/api/ipsec/ipsec.h @@ -109,9 +109,6 @@ int ipsec_check_out(const ipsec_test_part *part, odp_ipsec_sa_t sa, odp_packet_t *pkto); void ipsec_check_out_one(const ipsec_test_part *part, odp_ipsec_sa_t sa); -void ipsec_check_out_in_one(const ipsec_test_part *part, - odp_ipsec_sa_t sa, - odp_ipsec_sa_t sa_in); int ipsec_test_sa_update_seq_num(odp_ipsec_sa_t sa, uint32_t seq_num); int ipsec_check(odp_bool_t ah, diff --git a/test/validation/api/ipsec/ipsec_test_out.c b/test/validation/api/ipsec/ipsec_test_out.c index 6969c3149..d3275e417 100644 --- a/test/validation/api/ipsec/ipsec_test_out.c +++ b/test/validation/api/ipsec/ipsec_test_out.c @@ -6,8 +6,9 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include "ipsec.h" +#include <odp/helper/odph_api.h> +#include "ipsec.h" #include "test_vectors.h" struct cipher_param { @@ -387,6 +388,71 @@ static void test_ipsec_stats_test_assert(odp_ipsec_stats_t *stats, CU_ASSERT_EQUAL(stats->hard_exp_pkts_err, 0); } +static void ipsec_pkt_proto_err_set(odp_packet_t pkt) +{ + uint32_t l3_off = odp_packet_l3_offset(pkt); + odph_ipv4hdr_t ip; + + /* Simulate proto error by corrupting protocol field */ + + odp_packet_copy_to_mem(pkt, l3_off, sizeof(ip), &ip); + + if (ip.proto == ODPH_IPPROTO_ESP) + ip.proto = ODPH_IPPROTO_AH; + else + ip.proto = ODPH_IPPROTO_ESP; + + odp_packet_copy_from_mem(pkt, l3_off, sizeof(ip), &ip); +} + +static void ipsec_pkt_auth_err_set(odp_packet_t pkt) +{ + uint32_t data, len; + + /* Simulate auth error by corrupting ICV */ + + len = odp_packet_len(pkt); + odp_packet_copy_to_mem(pkt, len - sizeof(data), sizeof(data), &data); + data = ~data; + odp_packet_copy_from_mem(pkt, len - sizeof(data), sizeof(data), &data); +} + +static void ipsec_check_out_in_one(const ipsec_test_part *part, + odp_ipsec_sa_t sa, + odp_ipsec_sa_t sa_in) +{ + int num_out = part->num_pkt; + odp_packet_t pkto[num_out]; + int i; + + num_out = ipsec_check_out(part, sa, pkto); + + for (i = 0; i < num_out; i++) { + ipsec_test_part part_in = *part; + ipsec_test_packet pkt_in; + + CU_ASSERT_FATAL(odp_packet_len(pkto[i]) <= + sizeof(pkt_in.data)); + + if (part->flags.stats == IPSEC_TEST_STATS_PROTO_ERR) + ipsec_pkt_proto_err_set(pkto[i]); + + if (part->flags.stats == IPSEC_TEST_STATS_AUTH_ERR) + ipsec_pkt_auth_err_set(pkto[i]); + + pkt_in.len = odp_packet_len(pkto[i]); + pkt_in.l2_offset = odp_packet_l2_offset(pkto[i]); + pkt_in.l3_offset = odp_packet_l3_offset(pkto[i]); + pkt_in.l4_offset = odp_packet_l4_offset(pkto[i]); + odp_packet_copy_to_mem(pkto[i], 0, + pkt_in.len, + pkt_in.data); + part_in.pkt_in = &pkt_in; + ipsec_check_in_one(&part_in, sa_in); + odp_packet_free(pkto[i]); + } +} + static void test_out_in_common(ipsec_test_flags *flags, odp_cipher_alg_t cipher, const odp_crypto_key_t *cipher_key, |