1f08c3bdfSopenharmony_ci#!/bin/sh
2f08c3bdfSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later
3f08c3bdfSopenharmony_ci# Copyright (c) 2018-2022 Petr Vorel <pvorel@suse.cz>
4f08c3bdfSopenharmony_ci# Copyright (c) 2014-2017 Oracle and/or its affiliates. All Rights Reserved.
5f08c3bdfSopenharmony_ci# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
6f08c3bdfSopenharmony_ci
7f08c3bdfSopenharmony_civirt_type="macsec"
8f08c3bdfSopenharmony_ciVIRT_PERF_THRESHOLD_MIN=100
9f08c3bdfSopenharmony_ciIPSEC_MODE="transport"
10f08c3bdfSopenharmony_ci
11f08c3bdfSopenharmony_ciTST_NEEDS_TMPDIR=1
12f08c3bdfSopenharmony_ciTST_TESTFUNC=virt_netperf_msg_sizes
13f08c3bdfSopenharmony_ciTST_SETUP="${TST_SETUP:-macsec_lib_setup}"
14f08c3bdfSopenharmony_ciTST_CLEANUP="${TST_CLEANUP:-macsec_lib_cleanup}"
15f08c3bdfSopenharmony_ciTST_NEEDS_DRIVERS="macsec"
16f08c3bdfSopenharmony_ci
17f08c3bdfSopenharmony_ci# MACSEC_LIB_SETUP:
18f08c3bdfSopenharmony_ci# [ cipher { default | gcm-aes-128 } ] [ encrypt { on | off } ]
19f08c3bdfSopenharmony_ci# [ protect { on | off } ] [ replay { on | off } ] [ window WINDOW ]
20f08c3bdfSopenharmony_ci# [ validate { strict | check | disabled } ]
21f08c3bdfSopenharmony_cimacsec_lib_setup()
22f08c3bdfSopenharmony_ci{
23f08c3bdfSopenharmony_ci	local keyid0="01"
24f08c3bdfSopenharmony_ci	local keyid1="02"
25f08c3bdfSopenharmony_ci	local sa=0
26f08c3bdfSopenharmony_ci	local h0=$(tst_hwaddr)
27f08c3bdfSopenharmony_ci	local h1=$(tst_hwaddr rhost)
28f08c3bdfSopenharmony_ci	local cmd="ip macsec add ltp_v0"
29f08c3bdfSopenharmony_ci	local key0="01234567890123456789012345678901"
30f08c3bdfSopenharmony_ci	local key1="98765432109876543210987612343434"
31f08c3bdfSopenharmony_ci
32f08c3bdfSopenharmony_ci	ipsec_lib_setup
33f08c3bdfSopenharmony_ci
34f08c3bdfSopenharmony_ci	tst_res TINFO "setup IPsec $IPSEC_MODE/$IPSEC_PROTO $EALGO"
35f08c3bdfSopenharmony_ci	tst_ipsec lhost $(tst_ipaddr) $(tst_ipaddr rhost)
36f08c3bdfSopenharmony_ci	tst_ipsec rhost $(tst_ipaddr rhost) $(tst_ipaddr)
37f08c3bdfSopenharmony_ci
38f08c3bdfSopenharmony_ci	virt_setup "icvlen 16 encodingsa $sa $MACSEC_LIB_SETUP"
39f08c3bdfSopenharmony_ci
40f08c3bdfSopenharmony_ci	ROD $cmd tx sa $sa pn 100 on key $keyid0 $key0
41f08c3bdfSopenharmony_ci	ROD $cmd rx address $h1 port 1
42f08c3bdfSopenharmony_ci	ROD $cmd rx address $h1 port 1 sa $sa pn 100 on key $keyid1 $key1
43f08c3bdfSopenharmony_ci
44f08c3bdfSopenharmony_ci	tst_rhost_run -s -c "$cmd tx sa $sa pn 100 on key $keyid1 $key1"
45f08c3bdfSopenharmony_ci	tst_rhost_run -s -c "$cmd rx address $h0 port 1"
46f08c3bdfSopenharmony_ci	tst_rhost_run -s -c \
47f08c3bdfSopenharmony_ci		"$cmd rx address $h0 port 1 sa $sa pn 100 on key $keyid0 $key0"
48f08c3bdfSopenharmony_ci}
49f08c3bdfSopenharmony_ci
50f08c3bdfSopenharmony_cimacsec_lib_cleanup()
51f08c3bdfSopenharmony_ci{
52f08c3bdfSopenharmony_ci	virt_cleanup
53f08c3bdfSopenharmony_ci	tst_ipsec_cleanup
54f08c3bdfSopenharmony_ci}
55f08c3bdfSopenharmony_ci
56f08c3bdfSopenharmony_ci. ipsec_lib.sh
57f08c3bdfSopenharmony_ci. virt_lib.sh
58