[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] [tor/master] Fix compilation on OpenSSLs with unusual state lists.



Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Thu, 24 Sep 2009 13:00:28 -0400
Subject: Fix compilation on OpenSSLs with unusual state lists.
Commit: a3f1da2ec067ada4231d0f1c0b6d597ff547d1d9

"Unusual" in this context means "not the same as nickm's."  We should grow a
better list later.

(Also, move TLS state table to a separate header.)
---
 src/common/Makefile.am     |    2 +-
 src/common/tortls.c        |  135 +---------------
 src/common/tortls_states.h |  393 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 395 insertions(+), 135 deletions(-)
 create mode 100644 src/common/tortls_states.h

diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index d57593d..eecfeb8 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -16,7 +16,7 @@ libor_a_SOURCES = address.c log.c util.c compat.c container.c mempool.c \
 libor_crypto_a_SOURCES = crypto.c aes.c tortls.c torgzip.c
 libor_event_a_SOURCES = compat_libevent.c
 
-noinst_HEADERS = address.h log.h crypto.h util.h compat.h aes.h torint.h tortls.h strlcpy.c strlcat.c torgzip.h container.h ht.h mempool.h memarea.h ciphers.inc compat_libevent.h
+noinst_HEADERS = address.h log.h crypto.h util.h compat.h aes.h torint.h tortls.h strlcpy.c strlcat.c torgzip.h container.h ht.h mempool.h memarea.h ciphers.inc compat_libevent.h tortls_states.h
 
 common_sha1.i: $(libor_SOURCES) $(libor_crypto_a_SOURCES) $(noinst_HEADERS)
 	if test "@SHA1SUM@" != none; then \
diff --git a/src/common/tortls.c b/src/common/tortls.c
index 4d673bf..6e09325 100644
--- a/src/common/tortls.c
+++ b/src/common/tortls.c
@@ -165,140 +165,7 @@ static int tls_library_is_initialized = 0;
 #define _TOR_TLS_SYSCALL    (_MIN_TOR_TLS_ERROR_VAL - 2)
 #define _TOR_TLS_ZERORETURN (_MIN_TOR_TLS_ERROR_VAL - 1)
 
-static const struct { int state; const char *name; } state_map[] = {
-#define S(state) { state, #state }
-  S(DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A),
-  S(DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B),
-  S(DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A),
-  S(DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B),
-  S(SSL23_ST_CR_SRVR_HELLO_A),
-  S(SSL23_ST_CR_SRVR_HELLO_B),
-  S(SSL23_ST_CW_CLNT_HELLO_A),
-  S(SSL23_ST_CW_CLNT_HELLO_B),
-  S(SSL23_ST_SR_CLNT_HELLO_A),
-  S(SSL23_ST_SR_CLNT_HELLO_B),
-  S(SSL2_ST_CLIENT_START_ENCRYPTION),
-  S(SSL2_ST_GET_CLIENT_FINISHED_A),
-  S(SSL2_ST_GET_CLIENT_FINISHED_B),
-  S(SSL2_ST_GET_CLIENT_HELLO_A),
-  S(SSL2_ST_GET_CLIENT_HELLO_B),
-  S(SSL2_ST_GET_CLIENT_HELLO_C),
-  S(SSL2_ST_GET_CLIENT_MASTER_KEY_A),
-  S(SSL2_ST_GET_CLIENT_MASTER_KEY_B),
-  S(SSL2_ST_GET_SERVER_FINISHED_A),
-  S(SSL2_ST_GET_SERVER_FINISHED_B),
-  S(SSL2_ST_GET_SERVER_HELLO_A),
-  S(SSL2_ST_GET_SERVER_HELLO_B),
-  S(SSL2_ST_GET_SERVER_VERIFY_A),
-  S(SSL2_ST_GET_SERVER_VERIFY_B),
-  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_A),
-  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_B),
-  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_C),
-  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_D),
-  S(SSL2_ST_SEND_CLIENT_FINISHED_A),
-  S(SSL2_ST_SEND_CLIENT_FINISHED_B),
-  S(SSL2_ST_SEND_CLIENT_HELLO_A),
-  S(SSL2_ST_SEND_CLIENT_HELLO_B),
-  S(SSL2_ST_SEND_CLIENT_MASTER_KEY_A),
-  S(SSL2_ST_SEND_CLIENT_MASTER_KEY_B),
-  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_A),
-  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_B),
-  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_C),
-  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_D),
-  S(SSL2_ST_SEND_SERVER_FINISHED_A),
-  S(SSL2_ST_SEND_SERVER_FINISHED_B),
-  S(SSL2_ST_SEND_SERVER_HELLO_A),
-  S(SSL2_ST_SEND_SERVER_HELLO_B),
-  S(SSL2_ST_SEND_SERVER_VERIFY_A),
-  S(SSL2_ST_SEND_SERVER_VERIFY_B),
-  S(SSL2_ST_SEND_SERVER_VERIFY_C),
-  S(SSL2_ST_SERVER_START_ENCRYPTION),
-  S(SSL2_ST_X509_GET_CLIENT_CERTIFICATE),
-  S(SSL2_ST_X509_GET_SERVER_CERTIFICATE),
-  S(SSL3_ST_CR_CERT_A),
-  S(SSL3_ST_CR_CERT_B),
-  S(SSL3_ST_CR_CERT_REQ_A),
-  S(SSL3_ST_CR_CERT_REQ_B),
-  S(SSL3_ST_CR_CERT_STATUS_A),
-  S(SSL3_ST_CR_CERT_STATUS_B),
-  S(SSL3_ST_CR_CHANGE_A),
-  S(SSL3_ST_CR_CHANGE_B),
-  S(SSL3_ST_CR_FINISHED_A),
-  S(SSL3_ST_CR_FINISHED_B),
-  S(SSL3_ST_CR_KEY_EXCH_A),
-  S(SSL3_ST_CR_KEY_EXCH_B),
-  S(SSL3_ST_CR_SESSION_TICKET_A),
-  S(SSL3_ST_CR_SESSION_TICKET_B),
-  S(SSL3_ST_CR_SRVR_DONE_A),
-  S(SSL3_ST_CR_SRVR_DONE_B),
-  S(SSL3_ST_CR_SRVR_HELLO_A),
-  S(SSL3_ST_CR_SRVR_HELLO_B),
-  S(SSL3_ST_CW_CERT_A),
-  S(SSL3_ST_CW_CERT_B),
-  S(SSL3_ST_CW_CERT_C),
-  S(SSL3_ST_CW_CERT_D),
-  S(SSL3_ST_CW_CERT_VRFY_A),
-  S(SSL3_ST_CW_CERT_VRFY_B),
-  S(SSL3_ST_CW_CHANGE_A),
-  S(SSL3_ST_CW_CHANGE_B),
-  S(SSL3_ST_CW_CLNT_HELLO_A),
-  S(SSL3_ST_CW_CLNT_HELLO_B),
-  S(SSL3_ST_CW_FINISHED_A),
-  S(SSL3_ST_CW_FINISHED_B),
-  S(SSL3_ST_CW_FLUSH),
-  S(SSL3_ST_CW_KEY_EXCH_A),
-  S(SSL3_ST_CW_KEY_EXCH_B),
-  S(SSL3_ST_SR_CERT_A),
-  S(SSL3_ST_SR_CERT_B),
-  S(SSL3_ST_SR_CERT_VRFY_A),
-  S(SSL3_ST_SR_CERT_VRFY_B),
-  S(SSL3_ST_SR_CHANGE_A),
-  S(SSL3_ST_SR_CHANGE_B),
-  S(SSL3_ST_SR_CLNT_HELLO_A),
-  S(SSL3_ST_SR_CLNT_HELLO_B),
-  S(SSL3_ST_SR_CLNT_HELLO_C),
-  S(SSL3_ST_SR_FINISHED_A),
-  S(SSL3_ST_SR_FINISHED_B),
-  S(SSL3_ST_SR_KEY_EXCH_A),
-  S(SSL3_ST_SR_KEY_EXCH_B),
-  S(SSL3_ST_SW_CERT_A),
-  S(SSL3_ST_SW_CERT_B),
-  S(SSL3_ST_SW_CERT_REQ_A),
-  S(SSL3_ST_SW_CERT_REQ_B),
-  S(SSL3_ST_SW_CERT_STATUS_A),
-  S(SSL3_ST_SW_CERT_STATUS_B),
-  S(SSL3_ST_SW_CHANGE_A),
-  S(SSL3_ST_SW_CHANGE_B),
-  S(SSL3_ST_SW_FINISHED_A),
-  S(SSL3_ST_SW_FINISHED_B),
-  S(SSL3_ST_SW_FLUSH),
-  S(SSL3_ST_SW_HELLO_REQ_A),
-  S(SSL3_ST_SW_HELLO_REQ_B),
-  S(SSL3_ST_SW_HELLO_REQ_C),
-  S(SSL3_ST_SW_KEY_EXCH_A),
-  S(SSL3_ST_SW_KEY_EXCH_B),
-  S(SSL3_ST_SW_SESSION_TICKET_A),
-  S(SSL3_ST_SW_SESSION_TICKET_B),
-  S(SSL3_ST_SW_SRVR_DONE_A),
-  S(SSL3_ST_SW_SRVR_DONE_B),
-  S(SSL3_ST_SW_SRVR_HELLO_A),
-  S(SSL3_ST_SW_SRVR_HELLO_B),
-  S(SSL_CB_ACCEPT_EXIT),
-  S(SSL_CB_ACCEPT_LOOP),
-  S(SSL_CB_CONNECT_EXIT),
-  S(SSL_CB_CONNECT_LOOP),
-  S(SSL_ST_ACCEPT),
-  S(SSL_ST_BEFORE),
-  S(SSL_ST_CONNECT),
-  S(SSL_ST_INIT),
-  S(SSL_ST_MASK),
-  S(SSL_ST_OK),
-  S(SSL_ST_READ_BODY),
-  S(SSL_ST_READ_DONE),
-  S(SSL_ST_READ_HEADER),
-  S(SSL_ST_RENEGOTIATE),
-  { 0, NULL }
-};
+#include "tortls_states.h"
 
 /** Return the symbolic name of an OpenSSL state. */
 static const char *
diff --git a/src/common/tortls_states.h b/src/common/tortls_states.h
new file mode 100644
index 0000000..d5efd08
--- /dev/null
+++ b/src/common/tortls_states.h
@@ -0,0 +1,393 @@
+/* Copyright (c) 2003, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2009, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#ifndef _TORTLS_STATES_H
+#define _TORTLS_STATES_H
+
+static const struct { int state; const char *name; } state_map[] = {
+#define S(state) { state, #state }
+#ifdef DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A
+  S(DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A),
+#endif
+#ifdef DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B
+  S(DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B),
+#endif
+#ifdef DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A
+  S(DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A),
+#endif
+#ifdef DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B
+  S(DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B),
+#endif
+#ifdef SSL23_ST_CR_SRVR_HELLO_A
+  S(SSL23_ST_CR_SRVR_HELLO_A),
+#endif
+#ifdef SSL23_ST_CR_SRVR_HELLO_B
+  S(SSL23_ST_CR_SRVR_HELLO_B),
+#endif
+#ifdef SSL23_ST_CW_CLNT_HELLO_A
+  S(SSL23_ST_CW_CLNT_HELLO_A),
+#endif
+#ifdef SSL23_ST_CW_CLNT_HELLO_B
+  S(SSL23_ST_CW_CLNT_HELLO_B),
+#endif
+#ifdef SSL23_ST_SR_CLNT_HELLO_A
+  S(SSL23_ST_SR_CLNT_HELLO_A),
+#endif
+#ifdef SSL23_ST_SR_CLNT_HELLO_B
+  S(SSL23_ST_SR_CLNT_HELLO_B),
+#endif
+#ifdef SSL2_ST_CLIENT_START_ENCRYPTION
+  S(SSL2_ST_CLIENT_START_ENCRYPTION),
+#endif
+#ifdef SSL2_ST_GET_CLIENT_FINISHED_A
+  S(SSL2_ST_GET_CLIENT_FINISHED_A),
+#endif
+#ifdef SSL2_ST_GET_CLIENT_FINISHED_B
+  S(SSL2_ST_GET_CLIENT_FINISHED_B),
+#endif
+#ifdef SSL2_ST_GET_CLIENT_HELLO_A
+  S(SSL2_ST_GET_CLIENT_HELLO_A),
+#endif
+#ifdef SSL2_ST_GET_CLIENT_HELLO_B
+  S(SSL2_ST_GET_CLIENT_HELLO_B),
+#endif
+#ifdef SSL2_ST_GET_CLIENT_HELLO_C
+  S(SSL2_ST_GET_CLIENT_HELLO_C),
+#endif
+#ifdef SSL2_ST_GET_CLIENT_MASTER_KEY_A
+  S(SSL2_ST_GET_CLIENT_MASTER_KEY_A),
+#endif
+#ifdef SSL2_ST_GET_CLIENT_MASTER_KEY_B
+  S(SSL2_ST_GET_CLIENT_MASTER_KEY_B),
+#endif
+#ifdef SSL2_ST_GET_SERVER_FINISHED_A
+  S(SSL2_ST_GET_SERVER_FINISHED_A),
+#endif
+#ifdef SSL2_ST_GET_SERVER_FINISHED_B
+  S(SSL2_ST_GET_SERVER_FINISHED_B),
+#endif
+#ifdef SSL2_ST_GET_SERVER_HELLO_A
+  S(SSL2_ST_GET_SERVER_HELLO_A),
+#endif
+#ifdef SSL2_ST_GET_SERVER_HELLO_B
+  S(SSL2_ST_GET_SERVER_HELLO_B),
+#endif
+#ifdef SSL2_ST_GET_SERVER_VERIFY_A
+  S(SSL2_ST_GET_SERVER_VERIFY_A),
+#endif
+#ifdef SSL2_ST_GET_SERVER_VERIFY_B
+  S(SSL2_ST_GET_SERVER_VERIFY_B),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_CERTIFICATE_A
+  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_A),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_CERTIFICATE_B
+  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_B),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_CERTIFICATE_C
+  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_C),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_CERTIFICATE_D
+  S(SSL2_ST_SEND_CLIENT_CERTIFICATE_D),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_FINISHED_A
+  S(SSL2_ST_SEND_CLIENT_FINISHED_A),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_FINISHED_B
+  S(SSL2_ST_SEND_CLIENT_FINISHED_B),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_HELLO_A
+  S(SSL2_ST_SEND_CLIENT_HELLO_A),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_HELLO_B
+  S(SSL2_ST_SEND_CLIENT_HELLO_B),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_MASTER_KEY_A
+  S(SSL2_ST_SEND_CLIENT_MASTER_KEY_A),
+#endif
+#ifdef SSL2_ST_SEND_CLIENT_MASTER_KEY_B
+  S(SSL2_ST_SEND_CLIENT_MASTER_KEY_B),
+#endif
+#ifdef SSL2_ST_SEND_REQUEST_CERTIFICATE_A
+  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_A),
+#endif
+#ifdef SSL2_ST_SEND_REQUEST_CERTIFICATE_B
+  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_B),
+#endif
+#ifdef SSL2_ST_SEND_REQUEST_CERTIFICATE_C
+  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_C),
+#endif
+#ifdef SSL2_ST_SEND_REQUEST_CERTIFICATE_D
+  S(SSL2_ST_SEND_REQUEST_CERTIFICATE_D),
+#endif
+#ifdef SSL2_ST_SEND_SERVER_FINISHED_A
+  S(SSL2_ST_SEND_SERVER_FINISHED_A),
+#endif
+#ifdef SSL2_ST_SEND_SERVER_FINISHED_B
+  S(SSL2_ST_SEND_SERVER_FINISHED_B),
+#endif
+#ifdef SSL2_ST_SEND_SERVER_HELLO_A
+  S(SSL2_ST_SEND_SERVER_HELLO_A),
+#endif
+#ifdef SSL2_ST_SEND_SERVER_HELLO_B
+  S(SSL2_ST_SEND_SERVER_HELLO_B),
+#endif
+#ifdef SSL2_ST_SEND_SERVER_VERIFY_A
+  S(SSL2_ST_SEND_SERVER_VERIFY_A),
+#endif
+#ifdef SSL2_ST_SEND_SERVER_VERIFY_B
+  S(SSL2_ST_SEND_SERVER_VERIFY_B),
+#endif
+#ifdef SSL2_ST_SEND_SERVER_VERIFY_C
+  S(SSL2_ST_SEND_SERVER_VERIFY_C),
+#endif
+#ifdef SSL2_ST_SERVER_START_ENCRYPTION
+  S(SSL2_ST_SERVER_START_ENCRYPTION),
+#endif
+#ifdef SSL2_ST_X509_GET_CLIENT_CERTIFICATE
+  S(SSL2_ST_X509_GET_CLIENT_CERTIFICATE),
+#endif
+#ifdef SSL2_ST_X509_GET_SERVER_CERTIFICATE
+  S(SSL2_ST_X509_GET_SERVER_CERTIFICATE),
+#endif
+#ifdef SSL3_ST_CR_CERT_A
+  S(SSL3_ST_CR_CERT_A),
+#endif
+#ifdef SSL3_ST_CR_CERT_B
+  S(SSL3_ST_CR_CERT_B),
+#endif
+#ifdef SSL3_ST_CR_CERT_REQ_A
+  S(SSL3_ST_CR_CERT_REQ_A),
+#endif
+#ifdef SSL3_ST_CR_CERT_REQ_B
+  S(SSL3_ST_CR_CERT_REQ_B),
+#endif
+#ifdef SSL3_ST_CR_CERT_STATUS_A
+  S(SSL3_ST_CR_CERT_STATUS_A),
+#endif
+#ifdef SSL3_ST_CR_CERT_STATUS_B
+  S(SSL3_ST_CR_CERT_STATUS_B),
+#endif
+#ifdef SSL3_ST_CR_CHANGE_A
+  S(SSL3_ST_CR_CHANGE_A),
+#endif
+#ifdef SSL3_ST_CR_CHANGE_B
+  S(SSL3_ST_CR_CHANGE_B),
+#endif
+#ifdef SSL3_ST_CR_FINISHED_A
+  S(SSL3_ST_CR_FINISHED_A),
+#endif
+#ifdef SSL3_ST_CR_FINISHED_B
+  S(SSL3_ST_CR_FINISHED_B),
+#endif
+#ifdef SSL3_ST_CR_KEY_EXCH_A
+  S(SSL3_ST_CR_KEY_EXCH_A),
+#endif
+#ifdef SSL3_ST_CR_KEY_EXCH_B
+  S(SSL3_ST_CR_KEY_EXCH_B),
+#endif
+#ifdef SSL3_ST_CR_SESSION_TICKET_A
+  S(SSL3_ST_CR_SESSION_TICKET_A),
+#endif
+#ifdef SSL3_ST_CR_SESSION_TICKET_B
+  S(SSL3_ST_CR_SESSION_TICKET_B),
+#endif
+#ifdef SSL3_ST_CR_SRVR_DONE_A
+  S(SSL3_ST_CR_SRVR_DONE_A),
+#endif
+#ifdef SSL3_ST_CR_SRVR_DONE_B
+  S(SSL3_ST_CR_SRVR_DONE_B),
+#endif
+#ifdef SSL3_ST_CR_SRVR_HELLO_A
+  S(SSL3_ST_CR_SRVR_HELLO_A),
+#endif
+#ifdef SSL3_ST_CR_SRVR_HELLO_B
+  S(SSL3_ST_CR_SRVR_HELLO_B),
+#endif
+#ifdef SSL3_ST_CW_CERT_A
+  S(SSL3_ST_CW_CERT_A),
+#endif
+#ifdef SSL3_ST_CW_CERT_B
+  S(SSL3_ST_CW_CERT_B),
+#endif
+#ifdef SSL3_ST_CW_CERT_C
+  S(SSL3_ST_CW_CERT_C),
+#endif
+#ifdef SSL3_ST_CW_CERT_D
+  S(SSL3_ST_CW_CERT_D),
+#endif
+#ifdef SSL3_ST_CW_CERT_VRFY_A
+  S(SSL3_ST_CW_CERT_VRFY_A),
+#endif
+#ifdef SSL3_ST_CW_CERT_VRFY_B
+  S(SSL3_ST_CW_CERT_VRFY_B),
+#endif
+#ifdef SSL3_ST_CW_CHANGE_A
+  S(SSL3_ST_CW_CHANGE_A),
+#endif
+#ifdef SSL3_ST_CW_CHANGE_B
+  S(SSL3_ST_CW_CHANGE_B),
+#endif
+#ifdef SSL3_ST_CW_CLNT_HELLO_A
+  S(SSL3_ST_CW_CLNT_HELLO_A),
+#endif
+#ifdef SSL3_ST_CW_CLNT_HELLO_B
+  S(SSL3_ST_CW_CLNT_HELLO_B),
+#endif
+#ifdef SSL3_ST_CW_FINISHED_A
+  S(SSL3_ST_CW_FINISHED_A),
+#endif
+#ifdef SSL3_ST_CW_FINISHED_B
+  S(SSL3_ST_CW_FINISHED_B),
+#endif
+#ifdef SSL3_ST_CW_FLUSH
+  S(SSL3_ST_CW_FLUSH),
+#endif
+#ifdef SSL3_ST_CW_KEY_EXCH_A
+  S(SSL3_ST_CW_KEY_EXCH_A),
+#endif
+#ifdef SSL3_ST_CW_KEY_EXCH_B
+  S(SSL3_ST_CW_KEY_EXCH_B),
+#endif
+#ifdef SSL3_ST_SR_CERT_A
+  S(SSL3_ST_SR_CERT_A),
+#endif
+#ifdef SSL3_ST_SR_CERT_B
+  S(SSL3_ST_SR_CERT_B),
+#endif
+#ifdef SSL3_ST_SR_CERT_VRFY_A
+  S(SSL3_ST_SR_CERT_VRFY_A),
+#endif
+#ifdef SSL3_ST_SR_CERT_VRFY_B
+  S(SSL3_ST_SR_CERT_VRFY_B),
+#endif
+#ifdef SSL3_ST_SR_CHANGE_A
+  S(SSL3_ST_SR_CHANGE_A),
+#endif
+#ifdef SSL3_ST_SR_CHANGE_B
+  S(SSL3_ST_SR_CHANGE_B),
+#endif
+#ifdef SSL3_ST_SR_CLNT_HELLO_A
+  S(SSL3_ST_SR_CLNT_HELLO_A),
+#endif
+#ifdef SSL3_ST_SR_CLNT_HELLO_B
+  S(SSL3_ST_SR_CLNT_HELLO_B),
+#endif
+#ifdef SSL3_ST_SR_CLNT_HELLO_C
+  S(SSL3_ST_SR_CLNT_HELLO_C),
+#endif
+#ifdef SSL3_ST_SR_FINISHED_A
+  S(SSL3_ST_SR_FINISHED_A),
+#endif
+#ifdef SSL3_ST_SR_FINISHED_B
+  S(SSL3_ST_SR_FINISHED_B),
+#endif
+#ifdef SSL3_ST_SR_KEY_EXCH_A
+  S(SSL3_ST_SR_KEY_EXCH_A),
+#endif
+#ifdef SSL3_ST_SR_KEY_EXCH_B
+  S(SSL3_ST_SR_KEY_EXCH_B),
+#endif
+#ifdef SSL3_ST_SW_CERT_A
+  S(SSL3_ST_SW_CERT_A),
+#endif
+#ifdef SSL3_ST_SW_CERT_B
+  S(SSL3_ST_SW_CERT_B),
+#endif
+#ifdef SSL3_ST_SW_CERT_REQ_A
+  S(SSL3_ST_SW_CERT_REQ_A),
+#endif
+#ifdef SSL3_ST_SW_CERT_REQ_B
+  S(SSL3_ST_SW_CERT_REQ_B),
+#endif
+#ifdef SSL3_ST_SW_CERT_STATUS_A
+  S(SSL3_ST_SW_CERT_STATUS_A),
+#endif
+#ifdef SSL3_ST_SW_CERT_STATUS_B
+  S(SSL3_ST_SW_CERT_STATUS_B),
+#endif
+#ifdef SSL3_ST_SW_CHANGE_A
+  S(SSL3_ST_SW_CHANGE_A),
+#endif
+#ifdef SSL3_ST_SW_CHANGE_B
+  S(SSL3_ST_SW_CHANGE_B),
+#endif
+#ifdef SSL3_ST_SW_FINISHED_A
+  S(SSL3_ST_SW_FINISHED_A),
+#endif
+#ifdef SSL3_ST_SW_FINISHED_B
+  S(SSL3_ST_SW_FINISHED_B),
+#endif
+#ifdef SSL3_ST_SW_FLUSH
+  S(SSL3_ST_SW_FLUSH),
+#endif
+#ifdef SSL3_ST_SW_HELLO_REQ_A
+  S(SSL3_ST_SW_HELLO_REQ_A),
+#endif
+#ifdef SSL3_ST_SW_HELLO_REQ_B
+  S(SSL3_ST_SW_HELLO_REQ_B),
+#endif
+#ifdef SSL3_ST_SW_HELLO_REQ_C
+  S(SSL3_ST_SW_HELLO_REQ_C),
+#endif
+#ifdef SSL3_ST_SW_KEY_EXCH_A
+  S(SSL3_ST_SW_KEY_EXCH_A),
+#endif
+#ifdef SSL3_ST_SW_KEY_EXCH_B
+  S(SSL3_ST_SW_KEY_EXCH_B),
+#endif
+#ifdef SSL3_ST_SW_SESSION_TICKET_A
+  S(SSL3_ST_SW_SESSION_TICKET_A),
+#endif
+#ifdef SSL3_ST_SW_SESSION_TICKET_B
+  S(SSL3_ST_SW_SESSION_TICKET_B),
+#endif
+#ifdef SSL3_ST_SW_SRVR_DONE_A
+  S(SSL3_ST_SW_SRVR_DONE_A),
+#endif
+#ifdef SSL3_ST_SW_SRVR_DONE_B
+  S(SSL3_ST_SW_SRVR_DONE_B),
+#endif
+#ifdef SSL3_ST_SW_SRVR_HELLO_A
+  S(SSL3_ST_SW_SRVR_HELLO_A),
+#endif
+#ifdef SSL3_ST_SW_SRVR_HELLO_B
+  S(SSL3_ST_SW_SRVR_HELLO_B),
+#endif
+#ifdef SSL_ST_ACCEPT
+  S(SSL_ST_ACCEPT),
+#endif
+#ifdef SSL_ST_BEFORE
+  S(SSL_ST_BEFORE),
+#endif
+#ifdef SSL_ST_CONNECT
+  S(SSL_ST_CONNECT),
+#endif
+#ifdef SSL_ST_INIT
+  S(SSL_ST_INIT),
+#endif
+#ifdef SSL_ST_MASK
+  S(SSL_ST_MASK),
+#endif
+#ifdef SSL_ST_OK
+  S(SSL_ST_OK),
+#endif
+#ifdef SSL_ST_READ_BODY
+  S(SSL_ST_READ_BODY),
+#endif
+#ifdef SSL_ST_READ_DONE
+  S(SSL_ST_READ_DONE),
+#endif
+#ifdef SSL_ST_READ_HEADER
+  S(SSL_ST_READ_HEADER),
+#endif
+#ifdef SSL_ST_RENEGOTIATE
+  S(SSL_ST_RENEGOTIATE),
+#endif
+  { 0, NULL }
+};
+
+#endif
+
-- 
1.5.6.5