summaryrefslogtreecommitdiffstats
path: root/src/vnet/lisp-gpe
AgeCommit message (Expand)AuthorFilesLines
2017-04-06Use thread local storage for thread indexDamjan Marion1-8/+8
2017-04-05LISP: fix crash when adding a negative forwarding entry, VPP-681Filip Tehlar1-15/+14
2017-04-03Adjacency layout change and move to vnet/adjNeale Ranns1-2/+2
2017-03-29LISP: fix IID in decapFilip Tehlar2-3/+4
2017-03-22LISP: improve DP speedFilip Tehlar3-4/+28
2017-03-21LISP statisticsFilip Tehlar5-22/+199
2017-03-08LISP: fix gpe sub-interface lookupFilip Tehlar1-8/+8
2017-03-02Fix LISP Coverity warningFlorin Coras1-1/+1
2017-03-02VPP-648: CLI Memory leak with invalid parameterBilly McFall1-1/+1
2017-03-01VPP-598: tcp stack initial commitDave Barach3-2/+6
2017-02-27Add GPE CLI/API for setting encap modeFilip Tehlar6-3/+202
2017-02-25Add NSH to GPE decap pathFlorin Coras5-20/+56
2017-02-22VPP-635: CLI Memory leak with invalid parameterBilly McFall2-13/+58
2017-02-21Rename LISP GPE API to GPEFilip Tehlar9-91/+86
2017-02-16Add NSH load-balance and drop DPOFlorin Coras1-4/+4
2017-02-16Fix NSH-LISP interface additionFlorin Coras1-15/+16
2017-02-14Fix coverity issues: ioamShwetha Bhandari1-5/+6
2017-02-13Basic support for LISP-GPE encapsulated NSH packetsFlorin Coras6-12/+543
2017-01-30LISP: add dump calls for GPE entries APIFilip Tehlar4-0/+248
2017-01-16Fix LISP coverity warningFlorin Coras1-0/+1
2017-01-13LISP: Fix gpe APIFilip Tehlar4-135/+79
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion20-0/+6410
se. *------------------------------------------------------------------ */ #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; /** TODO: add linked alg support **/ if (key->type == VNET_CRYPTO_KEY_TYPE_LINK) return; 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 && clib_cpu_supports_aarch64_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 (0); #if __x86_64__ else if (crypto_native_aes_cbc_init_icl && clib_cpu_supports_vaes ()) error = crypto_native_aes_cbc_init_icl (vm); else if (crypto_native_aes_cbc_init_skx && clib_cpu_supports_avx512f ()) error = crypto_native_aes_cbc_init_skx (vm); else if (crypto_native_aes_cbc_init_hsw && clib_cpu_supports_avx2 ()) error = crypto_native_aes_cbc_init_hsw (vm); else if (crypto_native_aes_cbc_init_slm) error = crypto_native_aes_cbc_init_slm (vm); #endif #if __aarch64__ else if (crypto_native_aes_cbc_init_neon) error = crypto_native_aes_cbc_init_neon (vm); #endif else error = clib_error_return (0, "No AES CBC implemenation available"); if (error) goto error; #if __x86_64__ if (clib_cpu_supports_pclmulqdq ()) { if (crypto_native_aes_gcm_init_icl && clib_cpu_supports_vaes ()) error = crypto_native_aes_gcm_init_icl (vm); else if (crypto_native_aes_gcm_init_skx && clib_cpu_supports_avx512f ()) error = crypto_native_aes_gcm_init_skx (vm); else if (crypto_native_aes_gcm_init_hsw && clib_cpu_supports_avx2 ()) error = crypto_native_aes_gcm_init_hsw (vm); else if (crypto_native_aes_gcm_init_slm) error = crypto_native_aes_gcm_init_slm (vm); else error = clib_error_return (0, "No AES GCM implemenation available"); if (error) goto error; } #endif #if __aarch64__ if (crypto_native_aes_gcm_init_neon) error = crypto_native_aes_gcm_init_neon (vm); else error = clib_error_return (0, "No AES GCM implemenation available"); if (error) goto error; #endif 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: */