aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/unittest/CMakeLists.txt
blob: 0a6602df079e9b6551c737fe1f41c05f148fcbc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Copyright (c) 2018-2019 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set(chacha20_poly1305)
if (OPENSSL_VERSION VERSION_GREATER_EQUAL 1.1.0)
    set(chacha20_poly1305 crypto/chacha20_poly1305.c)
endif()

add_vpp_plugin(unittest
  SOURCES
  api_fuzz_test.c
  bier_test.c
  bihash_test.c
  bitmap_test.c
  crypto/aes_cbc.c
  crypto/aes_ctr.c
  crypto/aes_gcm.c
  ${chacha20_poly1305}
  crypto/rfc2202_hmac_md5.c
  crypto/rfc2202_hmac_sha1.c
  crypto/rfc4231.c
  crypto/sha.c
  crypto_test.c
  fib_test.c
  hash_test.c
  interface_test.c
  ipsec_test.c
  ip_psh_cksum_test.c
  llist_test.c
  mactime_test.c
  mem_bulk_test.c
  mfib_test.c
  mpcap_node.c
  policer_test.c
  pool_test.c
  punt_test.c
  rbtree_test.c
  session_test.c
  sparse_vec_test.c
  string_test.c
  svm_fifo_test.c
  segment_manager_test.c
  tcp_test.c
  test_buffer.c
  unittest.c
  util_test.c
  vlib_test.c
  counter_test.c

  COMPONENT
  vpp-plugin-devtools
)
* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *------------------------------------------------------------------ */ #include <vlib/vlib.h> #include <vnet/plugin/plugin.h> #include <vnet/crypto/crypto.h> #include <crypto_native/crypto_native.h> crypto_native_main_t crypto_native_main; static void crypto_native_key_handler (vlib_main_t * vm, vnet_crypto_key_op_t kop, vnet_crypto_key_index_t idx) { vnet_crypto_key_t *key = vnet_crypto_get_key (idx); crypto_native_main_t *cm = &crypto_native_main; if (cm->key_fn[key->alg] == 0) return; if (kop == VNET_CRYPTO_KEY_OP_DEL) { if (idx >= vec_len (cm->key_data)) return; if (cm->key_data[idx] == 0) return; clib_mem_free_s (cm->key_data[idx]); cm->key_data[idx] = 0; return; } vec_validate_aligned (cm->key_data, idx, CLIB_CACHE_LINE_BYTES); if (kop == VNET_CRYPTO_KEY_OP_MODIFY && cm->key_data[idx]) { clib_mem_free_s (cm->key_data[idx]); } cm->key_data[idx] = cm->key_fn[key->alg] (key); } clib_error_t * crypto_native_init (vlib_main_t * vm) { crypto_native_main_t *cm = &crypto_native_main; vlib_thread_main_t *tm = vlib_get_thread_main (); clib_error_t *error = 0; if (clib_cpu_supports_x86_aes () == 0) return 0; vec_validate_aligned (cm->per_thread_data, tm->n_vlib_mains - 1, CLIB_CACHE_LINE_BYTES); cm->crypto_engine_index = vnet_crypto_register_engine (vm, "native", 100, "Native ISA Optimized Crypto"); if (clib_cpu_supports_vaes ()) error = crypto_native_aes_cbc_init_vaes (vm); else if (clib_cpu_supports_avx512f ()) error = crypto_native_aes_cbc_init_avx512 (vm); else if (clib_cpu_supports_avx2 ()) error = crypto_native_aes_cbc_init_avx2 (vm); else error = crypto_native_aes_cbc_init_sse42 (vm); if (error) goto error; if (clib_cpu_supports_pclmulqdq ()) { if (clib_cpu_supports_vaes ()) error = crypto_native_aes_gcm_init_vaes (vm); else if (clib_cpu_supports_avx512f ()) error = crypto_native_aes_gcm_init_avx512 (vm); else if (clib_cpu_supports_avx2 ()) error = crypto_native_aes_gcm_init_avx2 (vm); else error = crypto_native_aes_gcm_init_sse42 (vm); if (error) goto error; } vnet_crypto_register_key_handler (vm, cm->crypto_engine_index, crypto_native_key_handler); error: if (error) vec_free (cm->per_thread_data); return error; } /* *INDENT-OFF* */ VLIB_INIT_FUNCTION (crypto_native_init) = { .runs_after = VLIB_INITS ("vnet_crypto_init"), }; /* *INDENT-ON* */ #include <vpp/app/version.h> /* *INDENT-OFF* */ VLIB_PLUGIN_REGISTER () = { .version = VPP_BUILD_VER, .description = "Intel IA32 Software Crypto Engine", }; /* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */