1 #ifndef __included_ipsecmb_h__
2 #define __included_ipsecmb_h__
4 #include <vppinfra/types.h>
5 #include <vppinfra/vec.h>
6 #include <vppinfra/clib.h>
7 #include <vppinfra/warnings.h>
8 #include <vnet/ipsec/ipsec.h>
10 WARN_OFF (attributes);
14 #define __need_redefine__
17 #include <intel-ipsec-mb.h>
19 #ifdef __need_redefine__
21 #define always_inline static inline
23 #define always_inline static inline __attribute__ ((__always_inline__))
25 #endif // __need_redefine__
31 JOB_CIPHER_MODE cipher_mode;
35 } ipsecmb_crypto_alg_t;
39 hash_one_block_t hash_one_block_fn;
41 JOB_HASH_ALG hash_alg;
42 u8 hash_output_length;
43 } ipsecmb_integ_alg_t;
47 u8 aes_enc_key_expanded[16 * 15] __attribute__ ((aligned (16)));
48 u8 aes_dec_key_expanded[16 * 15] __attribute__ ((aligned (16)));
49 u8 ipad_hash[256] __attribute__ ((aligned (16)));
50 u8 opad_hash[256] __attribute__ ((aligned (16)));
58 typedef u8 urandom_buffer_t[4096];
62 /** read buffer for random data from /dev/urandom */
63 urandom_buffer_t urandom_buffer;
64 /** pool of all the random_bytes_t objects ever allocated */
65 random_bytes_t *rb_pool;
66 /** vector of random_bytes_t objects containing random bytes */
67 u32 *rb_from_dev_urandom;
68 /** vector of used random_bytes_t objects */
70 /** vector of random bytes collected from encrypted data */
72 } ipsecmb_per_thread_data_t;
76 ipsecmb_crypto_alg_t *crypto_algs;
77 ipsecmb_integ_alg_t *integ_algs;
80 ipsecmb_per_thread_data_t *per_thread_data;
84 extern ipsecmb_main_t ipsecmb_main;
86 #define P(x,y) x ## _ ## y
88 #define IPSECMB_FUNC(f) E(f,CLIB_MARCH_VARIANT)
90 * fd.io coding-style-patch-verification: ON
93 * eval: (c-set-style "gnu")
97 #endif /* __included_ipsecmb_h__ */