Fix crash in dtls1_get_record whilst in the listen state where you get two
[openssl.git] / ssl / dtls1.h
index c6edbe39f9cc1e666db453ebfb67c086c2987dfb..96f733434a9bbf3007b56af3da7b3ba6b166f4af 100644 (file)
@@ -84,8 +84,11 @@ extern "C" {
 #endif
 
 #define DTLS1_VERSION                  0xFEFF
-#define DTLS1_BAD_VER                  0x0100
 #define DTLS1_2_VERSION                        0xFEFD
+#define DTLS_MAX_VERSION               DTLS1_2_VERSION
+
+#define DTLS1_BAD_VER                  0x0100
+
 /* Special value for method supporting multiple versions */
 #define DTLS_ANY_VERSION               0x1FFFF
 
@@ -118,6 +121,9 @@ extern "C" {
 #define DTLS1_SCTP_AUTH_LABEL  "EXPORTER_DTLS_OVER_SCTP"
 #endif
 
+/* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */
+#define DTLS1_MAX_MTU_OVERHEAD                   48
+
 typedef struct dtls1_bitmap_st
        {
        unsigned long map;              /* track 32 packets on 32-bit systems
@@ -232,6 +238,7 @@ typedef struct dtls1_state_st
        /* Is set when listening for new connections with dtls1_listen() */
        unsigned int listen;
 
+       unsigned int link_mtu; /* max on-the-wire DTLS packet size */
        unsigned int mtu; /* max DTLS packet size */
 
        struct hm_header_st w_msg_hdr;
@@ -253,6 +260,10 @@ typedef struct dtls1_state_st
        unsigned int handshake_fragment_len;
 
        unsigned int retransmitting;
+       /*
+        * Set when the handshake is ready to process peer's ChangeCipherSpec message.
+        * Cleared after the message has been processed.
+        */
        unsigned int change_cipher_spec_ok;
 
 #ifndef OPENSSL_NO_SCTP
@@ -287,4 +298,3 @@ typedef struct dtls1_record_data_st
 }
 #endif
 #endif
-