106 boolean_t ke_is_nxkey;
107 kssl_session_info_t *ke_sessinfo;
108
109 crypto_key_t *ke_private_key; /* instance's private key */
110 Certificate_t *ke_server_certificate;
111
112 Certificate_t **ke_cacert_chain;
113
114 kssl_proxy_t *ke_proxy_head; /* Proxies chain */
115 kssl_fallback_t *ke_fallback_head; /* Fall-back endpoints chain */
116
117 } kssl_entry_t;
118
119 typedef struct mech_to_cipher_s {
120 crypto_mech_type_t mech;
121 char *name;
122 uint16_t kssl_suites[CIPHER_SUITE_COUNT];
123 } mech_to_cipher_t;
124
125 #define KSSL_ENTRY_REFHOLD(kssl_entry) { \
126 atomic_add_32(&(kssl_entry)->ke_refcnt, 1); \
127 ASSERT((kssl_entry)->ke_refcnt != 0); \
128 }
129
130 #define KSSL_ENTRY_REFRELE(kssl_entry) { \
131 ASSERT((kssl_entry)->ke_refcnt != 0); \
132 membar_exit(); \
133 if (atomic_add_32_nv(&(kssl_entry)->ke_refcnt, -1) == 0) { \
134 kssl_free_entry((kssl_entry)); \
135 } \
136 }
137
138 #define CRYPTO_ERR(r) ((r) != CRYPTO_SUCCESS && (r) != CRYPTO_QUEUED)
139
140 /*
141 * Enqueue mblk into KSSL input queue. Watch for mblk b_cont chains
142 * returned by tcp_reass() and enqueue them properly. Caller should
143 * be aware that mp is modified by this macro.
144 */
145 #define KSSL_ENQUEUE_MP(ssl, mp) { \
146 DTRACE_PROBE1(kssl_mblk__enqueue_mp, mblk_t *, mp); \
147 if ((ssl)->rec_ass_tail == NULL) { \
148 (ssl)->rec_ass_head = (mp); \
149 while (mp->b_cont) \
150 mp = mp->b_cont; \
151 (ssl)->rec_ass_tail = (mp); \
152 } else { \
153 (ssl)->rec_ass_tail->b_cont = (mp); \
|
106 boolean_t ke_is_nxkey;
107 kssl_session_info_t *ke_sessinfo;
108
109 crypto_key_t *ke_private_key; /* instance's private key */
110 Certificate_t *ke_server_certificate;
111
112 Certificate_t **ke_cacert_chain;
113
114 kssl_proxy_t *ke_proxy_head; /* Proxies chain */
115 kssl_fallback_t *ke_fallback_head; /* Fall-back endpoints chain */
116
117 } kssl_entry_t;
118
119 typedef struct mech_to_cipher_s {
120 crypto_mech_type_t mech;
121 char *name;
122 uint16_t kssl_suites[CIPHER_SUITE_COUNT];
123 } mech_to_cipher_t;
124
125 #define KSSL_ENTRY_REFHOLD(kssl_entry) { \
126 atomic_inc_32(&(kssl_entry)->ke_refcnt); \
127 ASSERT((kssl_entry)->ke_refcnt != 0); \
128 }
129
130 #define KSSL_ENTRY_REFRELE(kssl_entry) { \
131 ASSERT((kssl_entry)->ke_refcnt != 0); \
132 membar_exit(); \
133 if (atomic_dec_32_nv(&(kssl_entry)->ke_refcnt) == 0) { \
134 kssl_free_entry((kssl_entry)); \
135 } \
136 }
137
138 #define CRYPTO_ERR(r) ((r) != CRYPTO_SUCCESS && (r) != CRYPTO_QUEUED)
139
140 /*
141 * Enqueue mblk into KSSL input queue. Watch for mblk b_cont chains
142 * returned by tcp_reass() and enqueue them properly. Caller should
143 * be aware that mp is modified by this macro.
144 */
145 #define KSSL_ENQUEUE_MP(ssl, mp) { \
146 DTRACE_PROBE1(kssl_mblk__enqueue_mp, mblk_t *, mp); \
147 if ((ssl)->rec_ass_tail == NULL) { \
148 (ssl)->rec_ass_head = (mp); \
149 while (mp->b_cont) \
150 mp = mp->b_cont; \
151 (ssl)->rec_ass_tail = (mp); \
152 } else { \
153 (ssl)->rec_ass_tail->b_cont = (mp); \
|