X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fipsec%2Fipsec_sa.h;h=e0d74e1309ee87cc517dcb51ee8f811a09d8bcdb;hb=7f6d145accc6e63b150ab4efc282f19cbe996b57;hp=86d76b3ac0ac7f6c632abaa39a8ebcbe8b64ffe1;hpb=6afaae156a9ab9de79474367d8873407f3b12a71;p=vpp.git diff --git a/src/vnet/ipsec/ipsec_sa.h b/src/vnet/ipsec/ipsec_sa.h index 86d76b3ac0a..e0d74e1309e 100644 --- a/src/vnet/ipsec/ipsec_sa.h +++ b/src/vnet/ipsec/ipsec_sa.h @@ -92,7 +92,7 @@ typedef struct ipsec_key_t_ _ (8, IS_TUNNEL_V6, "tunnel-v6") \ _ (16, UDP_ENCAP, "udp-encap") \ _ (32, IS_PROTECT, "Protect") \ - _ (64, IS_INBOUND, "inboud") \ + _ (64, IS_INBOUND, "inbound") \ _ (128, IS_AEAD, "aead") \ typedef enum ipsec_sad_flags_t_ @@ -114,6 +114,8 @@ typedef struct u8 crypto_iv_size; u8 crypto_block_size; u8 integ_icv_size; + u32 encrypt_thread_index; + u32 decrypt_thread_index; u32 spi; u32 seq; u32 seq_hi; @@ -211,6 +213,7 @@ extern int ipsec_sa_add_and_lock (u32 id, extern index_t ipsec_sa_find_and_lock (u32 id); extern int ipsec_sa_unlock_id (u32 id); extern void ipsec_sa_unlock (index_t sai); +extern void ipsec_sa_lock (index_t sai); extern void ipsec_sa_clear (index_t sai); extern void ipsec_sa_set_crypto_alg (ipsec_sa_t * sa, ipsec_crypto_alg_t crypto_alg); @@ -435,6 +438,18 @@ ipsec_sa_anti_replay_advance (ipsec_sa_t * sa, u32 seq) } } + +/* + * Makes choice for thread_id should be assigned. + * if input ~0, gets random worker_id based on unix_time_now_nsec +*/ +always_inline u32 +ipsec_sa_assign_thread (u32 thread_id) +{ + return ((thread_id) ? thread_id + : (unix_time_now_nsec () % vlib_num_workers ()) + 1); +} + #endif /* __IPSEC_SPD_SA_H__ */ /*