]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Some small optimizations in heartbeat handling and regeneration of src/ args files.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 30 Aug 2012 20:19:52 +0000 (22:19 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 30 Aug 2012 20:23:25 +0000 (22:23 +0200)
14 files changed:
lib/ext/heartbeat.c
lib/ext/heartbeat.h
lib/gnutls_int.h
lib/gnutls_record.c
lib/gnutls_state.c
lib/includes/gnutls/gnutls.h.in
lib/libgnutls.map
src/cli-args.c
src/cli-args.h
src/cli.c
src/serv-args.c
src/serv-args.h
src/serv.c
src/tests.c

index 558cf1a9c743dbf5f4e33a3f6cbec2b075c026a7..677a91dc7767c21c9ead7b85f239ea88b294ce8d 100644 (file)
 #include <random.h>
 
 /**
- * gnutls_heartbeat_policy_set:
- * @session: is a #gnutls_session_t structure.
- * @policy: the policy to set.
- *
- * This function will allow you to set the policy to be followed during the
- * session regarding Heartbeat messages reception.
- *
- * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned,
- *   otherwise an error code is returned.
- **/
-int
-_gnutls_heartbeat_policy_set (gnutls_session_t session, unsigned policy)
+  * gnutls_heartbeat_enable:
+  * @session: is a #gnutls_session_t structure.
+  * @type: one of %GNUTLS_HB_*
+  *
+  * This function will allow heartbeat messages to be
+  * received.
+  **/
+void
+gnutls_heartbeat_enable (gnutls_session_t session, unsigned int type)
 {
   extension_priv_data_t epriv;
-  heartbeat_policy_t pol;
-  _gnutls_debug_log ("HB: setting policy %s\n", _gnutls_heartbeat (policy));
-  if (_gnutls_ext_get_session_data
-      (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0)
-    {
-      _gnutls_debug_log ("HB: failed to get session data\n");
-    }
-  else
-    {
-      pol.num = epriv.num;
-    }
 
-  switch (policy)
-    {
-    case PEER_ALLOWED_TO_SEND:
-      pol.set.local = 1;
-      break;
-    case PEER_NOT_ALLOWED_TO_SEND:
-      pol.set.local = 0;
-      break;
-    default:
-      return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER;
-    }
-
-  epriv.num = pol.num;
-  _gnutls_ext_set_session_data (session, GNUTLS_EXTENSION_HEARTBEAT, epriv);
-  session->internals.heartbeat_policy_set = 1;
-  _gnutls_debug_log ("HB: parameter set to %s\n", _gnutls_heartbeat (policy));
-  _gnutls_debug_log ("HB: enabled at local:%d, remote:%d\n",
-                     gnutls_heartbeat_enabled_local (session),
-                     gnutls_heartbeat_enabled_remote (session));
-  return GNUTLS_E_SUCCESS;
-}
-
-inline int
-gnutls_heartbeat_allow (gnutls_session_t session)
-{
-  return _gnutls_heartbeat_policy_set (session, PEER_ALLOWED_TO_SEND);
-}
-
-inline int
-gnutls_heartbeat_deny (gnutls_session_t session)
-{
-  return _gnutls_heartbeat_policy_set (session, PEER_NOT_ALLOWED_TO_SEND);
+  epriv.num = type;
+  _gnutls_ext_set_session_data (session, GNUTLS_EXTENSION_HEARTBEAT,
+                                epriv);
 }
 
-/**
- * gnutls_heartbeat_policy_get:
- * @session: is a #gnutls_session_t structure.
- *
- * This function will allow you to get the policy regarding Heartbeat messages.
- *
- * Returns: policy or error codes:
- * 0 - both local and remote policies are set to false
- * 1 - local == false, remote == true
- * 2 - remote == false, local == true
- * 3 - both local and remote policies are set to true
- * 4 - policy was not set for this session
- **/
-inline unsigned
-_gnutls_heartbeat_policy_get (gnutls_session_t session)
-{
-  extension_priv_data_t epriv;
-  heartbeat_policy_t pol;
-  if (!session->internals.heartbeat_policy_set)
-    return 4;
-  if (_gnutls_ext_get_session_data
-      (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0)
-    return GNUTLS_E_INTERNAL_ERROR;
-  pol.num = epriv.num;
-
-  if (pol.set.local)
-    {
-      if (pol.set.remote)
-        return 3;
-      return 2;
-    }
-  else
-    {
-      if (pol.set.remote)
-        return 1;
-      return 0;
-    }
-  return GNUTLS_E_INTERNAL_ERROR;
-}
-
-/**
+/*-
  * Convenience helper:
  *
  * Returns:
  * textual policy description or NULL.
**/
-inline const char *
-_gnutls_heartbeat (int policy)
-*/
+static inline const char *
+_gnutls_heartbeat (unsigned policy)
 {
-  switch (policy)
-    {
-    case PEER_ALLOWED_TO_SEND:
-      return "PEER_ALLOWED_TO_SEND";
-    case PEER_NOT_ALLOWED_TO_SEND:
-      return "PEER_NOT_ALLOWED_TO_SEND";
-    default:
-      return NULL;
-    }
+  if (policy & GNUTLS_HB_PEER_ALLOWED_TO_SEND)
+    return "PEER ALLOWED TO SEND";
+  else if (policy & GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND)
+    return "PEER NOT ALLOWED TO SEND";
+  return "Unknown policy";
 }
 
 /**
- * Convenience helpers:
- *
- * Returns:
- * local policy if @local is true, remote policy otherwise.
- **/
-inline int
-_gnutls_heartbeat_enabled (gnutls_session_t session, int local)
+  * gnutls_heartbeat_allowed:
+  * @session: is a #gnutls_session_t structure.
+  * @type: non zero is for sending, and zero for receiving
+  *
+  * This function will check whether heartbeats are allowed
+  * in this session.
+  *
+  * Returns: Non zero if heartbeats are allowed.
+  *
+  **/
+int
+gnutls_heartbeat_allowed (gnutls_session_t session, unsigned int type)
 {
-  unsigned policy = _gnutls_heartbeat_policy_get (session);
+  extension_priv_data_t epriv;
 
-  if (policy == 3)
-    return 1;
-  if (local)
-    {
-      if (policy == 2)
-        return 1;
-    }
-  else
+  if (_gnutls_ext_get_session_data
+      (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0)
+    return 0;                   /* Not enabled */
+
+  if (type != 0)
     {
-      if (policy == 1)
+      if (epriv.num & LOCAL_ALLOWED_TO_SEND)
         return 1;
     }
+  else if (epriv.num & GNUTLS_HB_PEER_ALLOWED_TO_SEND)
+    return 1;
+    
   return 0;
 }
 
-int
-gnutls_heartbeat_enabled_local (gnutls_session_t session)
+static int
+heartbeat_allow_recv (gnutls_session_t session)
 {
-  return _gnutls_heartbeat_enabled (session, 1);
+  return gnutls_heartbeat_allowed(session, 0);
 }
 
-int
-gnutls_heartbeat_enabled_remote (gnutls_session_t session)
+static int
+heartbeat_allow_send (gnutls_session_t session)
 {
-  return _gnutls_heartbeat_enabled (session, 0);
+  return gnutls_heartbeat_allowed(session, 1);
 }
 
 /**
@@ -214,30 +132,36 @@ _gnutls_heartbeat_send_data (gnutls_session_t session, const void *data,
   char pr[128];
   gnutls_buffer_st response;
   uint8_t payload[16];
-  payload[0] = request ? HEARTBEAT_REQUEST : HEARTBEAT_RESPONSE;
+  uint8_t type = request ? HEARTBEAT_REQUEST : HEARTBEAT_RESPONSE;
   _gnutls_buffer_init (&response);
 
-  BUFFER_APPEND (&response, payload, 1)
-    BUFFER_APPEND_PFX2 (&response, data, data_size)
-    gnutls_rnd (GNUTLS_RND_RANDOM, payload, 16);
-  BUFFER_APPEND (&response, payload, 16)
-    ret = _gnutls_send_int (session, GNUTLS_HEARTBEAT, -1,
-                            EPOCH_WRITE_CURRENT, response.data,
-                            response.length, MBUFFER_FLUSH);
+  ret = gnutls_rnd (GNUTLS_RND_RANDOM, payload, 16);
+  if (ret < 0)
+    return gnutls_assert_val(ret);
+
+  BUFFER_APPEND (&response, &type, 1);
+  BUFFER_APPEND_PFX2 (&response, data, data_size);
+
+  BUFFER_APPEND (&response, payload, 16);
+  ret = _gnutls_send_int (session, GNUTLS_HEARTBEAT, -1,
+                          EPOCH_WRITE_CURRENT, response.data,
+                          response.length, MBUFFER_FLUSH);
   if (request)
     {
       if (ret >= 0)
         {
           _gnutls_record_log
-            ("REC[%p]: HB %zu bytes sent OK [%d in packet], saved for response verification:%s\n",
-             session, data_size, ret, _gnutls_bin2hex ((uint8_t *) data,
-                                                       data_size, pr,
-                                                       sizeof (pr), NULL));
+              ("REC[%p]: HB %zu bytes sent OK [%d in packet], saved for response verification:%s\n",
+               session, data_size, ret, _gnutls_bin2hex ((uint8_t *) data,
+                                                         data_size, pr,
+                                                         sizeof (pr),
+                                                         NULL));
           session->internals.dtls.heartbeat_timeout = HEARTBEAT_TIMEOUT;
           gettime (&session->internals.dtls.heartbeat_sent);
           _gnutls_buffer_reset (&session->internals.heartbeat_payload);
-        BUFFER_APPEND (&session->internals.heartbeat_payload, data,
-                         data_size)}
+          BUFFER_APPEND (&session->internals.heartbeat_payload, data,
+                         data_size);
+        }
     }
   _gnutls_record_log ("REC[%p]: HB sent: %d\n", session, ret);
 
@@ -269,13 +193,16 @@ ssize_t
 gnutls_heartbeat_ping (gnutls_session_t session, size_t data_size)
 {
   int ret = GNUTLS_E_HEARTBEAT_FLIGHT;
+
   if (data_size > MAX_HEARTBEAT_LENGTH)
     return gnutls_assert_val (GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
-  if (!gnutls_heartbeat_enabled_remote (session))
-    return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+
+  if (!heartbeat_allow_send (session))
+    return GNUTLS_E_INVALID_REQUEST;
+
   _gnutls_record_log
-    ("REC[%p]: sending HB_REQUEST with length: %zu to peer %d\n", session,
-     data_size, gnutls_heartbeat_enabled_remote (session));
+      ("REC[%p]: sending HB_REQUEST with length: %zu to peer\n",
+       session, data_size);
 
   if (gnutls_heartbeat_timeout (session, 1) == GNUTLS_E_ILLEGAL_PARAMETER)
     {
@@ -286,8 +213,8 @@ gnutls_heartbeat_ping (gnutls_session_t session, size_t data_size)
     }
   else
     _gnutls_record_log
-      ("REC[%p]: HB_REQUEST with length %zu already in-flight: %d\n", session,
-       data_size, gnutls_heartbeat_timeout (session, 1));
+        ("REC[%p]: HB_REQUEST with length %zu already in-flight: %d\n",
+         session, data_size, gnutls_heartbeat_timeout (session, 1));
 
   return ret;
 }
@@ -295,11 +222,16 @@ gnutls_heartbeat_ping (gnutls_session_t session, size_t data_size)
 /**
  * simple wrapper for ping with random length
  **/
-inline ssize_t
+ssize_t
 gnutls_heartbeat_ping_rnd (gnutls_session_t session)
 {
   uint8_t rnd;
-  gnutls_rnd (GNUTLS_RND_NONCE, &rnd, 1);
+  int ret;
+  
+  ret = gnutls_rnd (GNUTLS_RND_NONCE, &rnd, 1);
+  if (ret < 0)
+    return gnutls_assert_val(ret);
+  
   return gnutls_heartbeat_ping (session, rnd + 1);
 }
 
@@ -319,10 +251,13 @@ _gnutls_heartbeat_handle (gnutls_session_t session, mbuffer_st * bufel)
   char pr[128];
   uint8_t *msg = _mbuffer_get_udata_ptr (bufel);
   size_t hb_len, len = _mbuffer_get_udata_size (bufel);
-  if (!gnutls_heartbeat_enabled_local (session))
+
+  if (!heartbeat_allow_recv (session))
     return gnutls_assert_val (GNUTLS_E_UNEXPECTED_PACKET);
+
   if (len < 4)
     return gnutls_assert_val (GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
+
   hb_len = _gnutls_read_uint16 (msg + 1);
   if (hb_len > len - 3)
     return gnutls_assert_val (GNUTLS_E_UNEXPECTED_PACKET);
@@ -331,40 +266,46 @@ _gnutls_heartbeat_handle (gnutls_session_t session, mbuffer_st * bufel)
     {
     case HEARTBEAT_REQUEST:
       _gnutls_record_log
-        ("REC[%p]: received HEARTBEAT_REQUEST, responding...\n", session);
+          ("REC[%p]: received HEARTBEAT_REQUEST, responding...\n",
+           session);
       if (_gnutls_heartbeat_send_data (session, msg + 3, hb_len, 0) >= 0)
-        return GNUTLS_E_AGAIN;  /* HB responded, no APP_DATA so needs to be called again*/
+        return GNUTLS_E_AGAIN;  /* HB responded, no APP_DATA so needs to be called again */
       else
-        {                       /* immediate response failed, TBD: save received data somewhere and let upper layers handle it, loosing single ping is non-critical for HB*/
+        {                       /* immediate response failed, TBD: save received data somewhere and let upper layers handle it, loosing single ping is non-critical for HB */
           return GNUTLS_E_HEARTBEAT_PONG_FAILED;
         }
       break;
 
     case HEARTBEAT_RESPONSE:
+
       if (session->internals.heartbeat_payload.length != hb_len)
         return gnutls_assert_val (GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
-      if (0 !=
-          memcmp (msg + 3, session->internals.heartbeat_payload.data, hb_len))
+
+      if (memcmp (msg + 3, session->internals.heartbeat_payload.data,
+                  hb_len) != 0)
         {
           _gnutls_record_log ("REC[%p]: HB: %s - received\n", session,
                               _gnutls_bin2hex (msg + 3, hb_len, pr,
                                                sizeof (pr), NULL));
           _gnutls_record_log ("REC[%p]: HB: %s - expected\n", session,
                               _gnutls_bin2hex (session->internals.
-                                               heartbeat_payload.data, hb_len,
-                                               pr, sizeof (pr), NULL));
+                                               heartbeat_payload.data,
+                                               hb_len, pr, sizeof (pr),
+                                               NULL));
           return gnutls_assert_val (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
         }
       _gnutls_record_log
-        ("REC[%p]: HB: %zu response bytes received OK (%d msec. left before timeout)\n",
-         session, hb_len, gnutls_heartbeat_timeout (session, 1));
+          ("REC[%p]: HB: %zu response bytes received OK (%d msec. left before timeout)\n",
+           session, hb_len, gnutls_heartbeat_timeout (session, 1));
 
       session->internals.dtls.heartbeat_timeout = HEARTBEAT_TIMEOUT;
       _gnutls_buffer_reset (&session->internals.heartbeat_payload);
       return GNUTLS_E_AGAIN;
-      break;
 
     default:
+      _gnutls_record_log
+          ("REC[%p]: HB: received unknown type %u\n",
+           session, msg[0]);
       return gnutls_assert_val (GNUTLS_E_UNEXPECTED_PACKET);
     }
 
@@ -389,12 +330,12 @@ gnutls_heartbeat_timeout (gnutls_session_t session, int check_only)
   if (session->internals.heartbeat_payload.length)
     {
       _gnutls_debug_log
-        ("HB: %zu bytes are in-flight already: %u msec timeout.\n",
-         session->internals.heartbeat_payload.length,
-         (unsigned int) session->internals.dtls.heartbeat_timeout);
+          ("HB: %zu bytes are in-flight already: %u msec timeout.\n",
+           session->internals.heartbeat_payload.length,
+           (unsigned int) session->internals.dtls.heartbeat_timeout);
       gettime (&now);
-      ms =
-        _dtls_timespec_sub_ms (&now, &session->internals.dtls.heartbeat_sent);
+      ms = _dtls_timespec_sub_ms (&now,
+                                  &session->internals.dtls.heartbeat_sent);
       if (ms > session->internals.dtls.heartbeat_timeout)
         {
           if (check_only)
@@ -403,8 +344,9 @@ gnutls_heartbeat_timeout (gnutls_session_t session, int check_only)
 
           if (session->internals.dtls.heartbeat_timeout * 2 >
               MAX_HEARTBEAT_TIMEOUT)
-            { /* update impossible */
-              session->internals.dtls.heartbeat_timeout = HEARTBEAT_TIMEOUT;
+            {                   /* update impossible */
+              session->internals.dtls.heartbeat_timeout =
+                  HEARTBEAT_TIMEOUT;
               return GNUTLS_E_TIMEDOUT;
             }
           else
@@ -422,132 +364,69 @@ gnutls_heartbeat_timeout (gnutls_session_t session, int check_only)
   return GNUTLS_E_ILLEGAL_PARAMETER;
 }
 
-/**
- * _gnutls_heartbeat_policy_force:
- * @session: is a #gnutls_session_t structure.
- * @epriv: pointer to work on
- * @enforce: whether default policy should be enforced
- *
- * This function will try to obtain session data.
- * It might try to enforce default policy.
- *
- * Returns: GNUTLS_E_SUCCESS or error code
- **/
-inline static int
-_gnutls_heartbeat_policy_force (gnutls_session_t session,
-                                extension_priv_data_t * epriv, int enforce)
-{
-  if (_gnutls_ext_get_session_data
-      (session, GNUTLS_EXTENSION_HEARTBEAT, epriv) < 0)
-    {
-      if (enforce)
-        {
-          _gnutls_debug_log
-            ("HB: failed to get session data, policy forced to %s\n",
-             _gnutls_heartbeat (HEARTBEAT_DEFAULT_POLICY));
-          _gnutls_heartbeat_policy_set (session, HEARTBEAT_DEFAULT_POLICY);
-          if (_gnutls_ext_get_session_data
-              (session, GNUTLS_EXTENSION_HEARTBEAT, epriv) < 0)
-            return gnutls_assert_val (GNUTLS_E_INTERNAL_ERROR);
-          else
-            {
-              return GNUTLS_E_SUCCESS;
-            }
-        }
-      else
-        {
-          return gnutls_assert_val (GNUTLS_E_INTERNAL_ERROR);
-        }
-    }
-  else
-    {
-      return GNUTLS_E_SUCCESS;
-    }
-}
-
 static int
-_gnutls_heartbeat_recv_params (gnutls_session_t session, const uint8_t * data,
-                               size_t _data_size)
+_gnutls_heartbeat_recv_params (gnutls_session_t session,
+                               const uint8_t * data, size_t _data_size)
 {
   heartbeat_policy_t pol;
   extension_priv_data_t epriv;
-  int enforce;
+
+  if (_gnutls_ext_get_session_data
+      (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0)
+    {
+      if (session->security_parameters.entity == GNUTLS_CLIENT)
+        return gnutls_assert_val (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
+      return 0; /* Not enabled */
+    }
 
   if (_data_size == 0)
     return GNUTLS_E_UNEXPECTED_PACKET_LENGTH;
-  _gnutls_debug_log ("HB: received parameter %s (%zu bytes)\n",
-                     _gnutls_heartbeat (data[0]), _data_size);
-
-  if (session->security_parameters.entity == GNUTLS_SERVER)
-    enforce = 1;
-  else
-    enforce = 0;
 
-  if (GNUTLS_E_SUCCESS !=
-      _gnutls_heartbeat_policy_force (session, &epriv, enforce))
-    return gnutls_assert_val (GNUTLS_E_INTERNAL_ERROR);
+  _gnutls_debug_log ("HB: received parameter %u (%zu bytes)\n",
+                     (unsigned)data[0], _data_size);
 
-  _gnutls_debug_log ("HB: enabled at local:%d, remote:%d\n",
-                     gnutls_heartbeat_enabled_local (session),
-                     gnutls_heartbeat_enabled_remote (session));
+  pol = epriv.num;
 
-  pol.num = epriv.num;
   switch (data[0])
     {
-    case PEER_ALLOWED_TO_SEND:
-      pol.set.remote = 1;
+    case 1:
+      pol |= LOCAL_ALLOWED_TO_SEND;
       break;
-    case PEER_NOT_ALLOWED_TO_SEND:
-      pol.set.remote = 0;
+    case 2:
+      pol |= LOCAL_NOT_ALLOWED_TO_SEND;
       break;
     default:
-      return gnutls_assert_val (GNUTLS_E_INVALID_REQUEST);
+      return gnutls_assert_val (GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
     }
-  epriv.num = pol.num;
-  _gnutls_ext_set_session_data (session, GNUTLS_EXTENSION_HEARTBEAT, epriv);
-  _gnutls_debug_log ("HB: set enabled local:%d, remote:%d\n",
-                     gnutls_heartbeat_enabled_local (session),
-                     gnutls_heartbeat_enabled_remote (session));
 
-  return GNUTLS_E_SUCCESS;
+  epriv.num = pol;
+  _gnutls_ext_set_session_data (session, GNUTLS_EXTENSION_HEARTBEAT,
+                                epriv);
+
+  return 0;
 }
 
 static int
 _gnutls_heartbeat_send_params (gnutls_session_t session,
                                gnutls_buffer_st * extdata)
 {
-  heartbeat_policy_t pol;
   extension_priv_data_t epriv;
   uint8_t p;
-  int enforce;
-
-  if (session->internals.heartbeat_policy_set)
-    {
-
-      if (session->security_parameters.entity == GNUTLS_CLIENT)
-        enforce = 1;
-      else
-        enforce = 0;
 
-      if (GNUTLS_E_SUCCESS !=
-          _gnutls_heartbeat_policy_force (session, &epriv, enforce))
-        return gnutls_assert_val (GNUTLS_E_INTERNAL_ERROR);
+  if (_gnutls_ext_get_session_data
+      (session, GNUTLS_EXTENSION_HEARTBEAT, &epriv) < 0)
+    return 0; /* nothing to send - not enabled */
 
-      pol.num = epriv.num;
-      _gnutls_debug_log ("HB: local set %d\n", pol.set.local);
-      p = pol.set.local ? PEER_ALLOWED_TO_SEND : PEER_NOT_ALLOWED_TO_SEND;
-    }
-  else
-    {
-      p = HEARTBEAT_DEFAULT_POLICY;
-      _gnutls_heartbeat_policy_set (session, HEARTBEAT_DEFAULT_POLICY);
-    }
+  if (epriv.num & GNUTLS_HB_PEER_ALLOWED_TO_SEND)
+    p = 1;
+  else if (epriv.num & GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND)
+    p = 2;
 
-  _gnutls_debug_log ("HB: sending parameter %s\n", _gnutls_heartbeat (p));
+  _gnutls_debug_log ("HB: sending parameter %u\n", (unsigned)p);
   if (_gnutls_buffer_append_data (extdata, &p, 1) < 0)
     return gnutls_assert_val (GNUTLS_E_MEMORY_ERROR);
 
-  return 1;                     /* number of bytes added for sending */
+  return 1; /* number of bytes added for sending */
 }
 
 static int
index b1bb09e13e9ac9fb148ecd8157fdb105fe685ff3..7c4b2991d7b65bb1c075ac9c5437123df0161329 100644 (file)
 #define HEARTBEAT_TIMEOUT 1000
 #define MAX_HEARTBEAT_TIMEOUT 60000
 
-#define PEER_ALLOWED_TO_SEND 1
-#define PEER_NOT_ALLOWED_TO_SEND 2
+#define LOCAL_ALLOWED_TO_SEND (1<<2)
+#define LOCAL_NOT_ALLOWED_TO_SEND (1<<3)
 
 #define HEARTBEAT_DEFAULT_POLICY PEER_NOT_ALLOWED_TO_SEND
 
 extern extension_entry_st ext_mod_heartbeat;
 
-typedef union
-{
-  uint32_t num;
-  struct
-  {
-    uint8_t local:1;
-    uint8_t remote:1;
-  } set;
-} heartbeat_policy_t;
+typedef uint8_t heartbeat_policy_t;
 
-int _gnutls_heartbeat_policy_set (gnutls_session_t session, unsigned policy);
-int gnutls_heartbeat_allow (gnutls_session_t session);
-int gnutls_heartbeat_deny (gnutls_session_t session);
-unsigned _gnutls_heartbeat_policy_get (gnutls_session_t session);
 int _gnutls_heartbeat_handle (gnutls_session_t session, mbuffer_st * bufel);
 ssize_t _gnutls_heartbeat_send_data (gnutls_session_t session,
                                      const void *data, size_t data_size,
@@ -60,8 +48,5 @@ ssize_t _gnutls_heartbeat_send_data (gnutls_session_t session,
 ssize_t gnutls_heartbeat_ping (gnutls_session_t session, size_t data_size);
 ssize_t gnutls_heartbeat_ping_rnd (gnutls_session_t session);
 int _gnutls_heartbeat_enabled (gnutls_session_t session, int local);
-int gnutls_heartbeat_enabled_local (gnutls_session_t session);
-int gnutls_heartbeat_enabled_remote (gnutls_session_t session);
 int gnutls_heartbeat_timeout (gnutls_session_t session, int check_only);
-const char * _gnutls_heartbeat (int policy);
 #endif
index bf901e0e73c80b67570f4ebb537f939c44ad5378..8e1a8113ec7af34c558876f4cabbeba6affcd413 100644 (file)
@@ -889,7 +889,6 @@ typedef struct
   unsigned int handshake_timeout_ms; /* timeout in milliseconds */
 
   gnutls_buffer_st heartbeat_payload; /* store in-flight payload for heartbeat extension*/
-  int heartbeat_policy_set;
 
   /* If you add anything here, check _gnutls_handshake_internal_state_clear().
    */
index de634dcc92f58deb9d2137acc21d5ee2b5d58a48..2a616338e0023fde07b1decc4382b3b7f29349b8 100644 (file)
@@ -659,7 +659,6 @@ record_add_to_buffers (gnutls_session_t session,
         case GNUTLS_HEARTBEAT:
            ret = _gnutls_heartbeat_handle (session, bufel);
            goto cleanup;
-           break;
 
         case GNUTLS_APPLICATION_DATA:
           if (session->internals.initial_negotiation_completed == 0)
index 70d54c87ed4cce7a162da554b797729cd8ecb366..1009a8cae2f107c15c126a6aeccb36119ba01b43 100644 (file)
@@ -322,8 +322,6 @@ gnutls_init (gnutls_session_t * session, unsigned int flags)
   /* the default certificate type for TLS */
   (*session)->security_parameters.cert_type = DEFAULT_CERT_TYPE;
 
-  (*session)->internals.heartbeat_policy_set = 0;
-
   /* Initialize buffers */
   _gnutls_buffer_init (&(*session)->internals.handshake_hash_buffer);
   _gnutls_buffer_init (&(*session)->internals.heartbeat_payload);
index cb3c8ff13221f78b84243564cc3edfe435961492..53cdfa9181aaf96b7d3ba8cf17d185925db1a611 100644 (file)
@@ -908,11 +908,12 @@ gnutls_ecc_curve_t gnutls_ecc_curve_get(gnutls_session_t session);
                               void *data, size_t * data_length,
                               unsigned int *type, unsigned int indx);
 
+#define GNUTLS_HB_PEER_ALLOWED_TO_SEND (1)
+#define GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND (1<<1)
+
     /* Heartbeat */
-    int gnutls_heartbeat_allow (gnutls_session_t session);
-    int gnutls_heartbeat_deny (gnutls_session_t session);
-    int gnutls_heartbeat_enabled_local (gnutls_session_t session);
-    int gnutls_heartbeat_enabled_remote (gnutls_session_t session);
+    void gnutls_heartbeat_enable (gnutls_session_t session, unsigned int type);
+    int gnutls_heartbeat_allowed (gnutls_session_t session, unsigned int type);
     int gnutls_heartbeat_timeout (gnutls_session_t session, int check_only);
 
   /* Safe renegotiation */
index 86e3fb46bf30bfe0e84145d571638fd55793c5e4..0bac5774f2aed3fa1da800aa7f381a5b414678f2 100644 (file)
@@ -335,10 +335,8 @@ GNUTLS_1_4
     gnutls_sign_get_id;
     gnutls_sign_get_name;
     gnutls_sign_list;
-    gnutls_heartbeat_allow;
-    gnutls_heartbeat_deny;
-    gnutls_heartbeat_enabled_local;
-    gnutls_heartbeat_enabled_remote;
+    gnutls_heartbeat_enable;
+    gnutls_heartbeat_allowed;
     gnutls_heartbeat_timeout;
     gnutls_srp_1024_group_generator;
     gnutls_srp_1024_group_prime;
index 09e65e55b1354678f4ccba3e55641e006d98a7d9..b4f05015da94ee2f7839d94cd5ebf71bc3d1cabd 100644 (file)
@@ -2,7 +2,7 @@
  *  
  *  DO NOT EDIT THIS FILE   (cli-args.c)
  *  
- *  It has been AutoGen-ed  June  6, 2012 at 09:09:25 PM by AutoGen 5.16
+ *  It has been AutoGen-ed  August 30, 2012 at 09:58:04 PM by AutoGen 5.16
  *  From the definitions    cli-args.def
  *  and the template file   options
  *
@@ -67,7 +67,7 @@ extern FILE * option_usage_fp;
 /*
  *  gnutls-cli option static const strings
  */
-static char const gnutls_cli_opt_strs[3491] =
+static char const gnutls_cli_opt_strs[3538] =
 /*     0 */ "gnutls-cli @VERSION@\n"
             "Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
@@ -100,119 +100,122 @@ static char const gnutls_cli_opt_strs[3491] =
 /*  1063 */ "Establish a session and resume\0"
 /*  1094 */ "RESUME\0"
 /*  1101 */ "resume\0"
-/*  1108 */ "Establish a session and rehandshake\0"
-/*  1144 */ "REHANDSHAKE\0"
-/*  1156 */ "rehandshake\0"
-/*  1168 */ "Don't accept session tickets\0"
-/*  1197 */ "NOTICKET\0"
-/*  1206 */ "noticket\0"
-/*  1215 */ "Connect, establish a plain session and start TLS.\0"
-/*  1265 */ "STARTTLS\0"
-/*  1274 */ "starttls\0"
-/*  1283 */ "Use DTLS (datagram TLS) over UDP\0"
-/*  1316 */ "UDP\0"
-/*  1320 */ "udp\0"
-/*  1324 */ "Set MTU for datagram TLS\0"
-/*  1349 */ "MTU\0"
-/*  1353 */ "mtu\0"
-/*  1357 */ "Send CR LF instead of LF\0"
-/*  1382 */ "CRLF\0"
-/*  1387 */ "crlf\0"
-/*  1392 */ "Use DER format for certificates to read from\0"
-/*  1437 */ "X509FMTDER\0"
-/*  1448 */ "x509fmtder\0"
-/*  1459 */ "Send the openpgp fingerprint, instead of the key\0"
-/*  1508 */ "FINGERPRINT\0"
-/*  1520 */ "fingerprint\0"
-/*  1532 */ "Disable all the TLS extensions\0"
-/*  1563 */ "DISABLE_EXTENSIONS\0"
-/*  1582 */ "disable-extensions\0"
-/*  1601 */ "Print peer's certificate in PEM format\0"
-/*  1640 */ "PRINT_CERT\0"
-/*  1651 */ "print-cert\0"
-/*  1662 */ "The maximum record size to advertize\0"
-/*  1699 */ "RECORDSIZE\0"
-/*  1710 */ "recordsize\0"
-/*  1721 */ "The minimum number of bits allowed for DH\0"
-/*  1763 */ "DH_BITS\0"
-/*  1771 */ "dh-bits\0"
-/*  1779 */ "Priorities string\0"
-/*  1797 */ "PRIORITY\0"
-/*  1806 */ "priority\0"
-/*  1815 */ "Certificate file or PKCS #11 URL to use\0"
-/*  1855 */ "X509CAFILE\0"
-/*  1866 */ "x509cafile\0"
-/*  1877 */ "CRL file to use\0"
-/*  1893 */ "X509CRLFILE\0"
-/*  1905 */ "x509crlfile\0"
-/*  1917 */ "PGP Key file to use\0"
-/*  1937 */ "PGPKEYFILE\0"
-/*  1948 */ "pgpkeyfile\0"
-/*  1959 */ "PGP Key ring file to use\0"
-/*  1984 */ "PGPKEYRING\0"
-/*  1995 */ "pgpkeyring\0"
-/*  2006 */ "PGP Public Key (certificate) file to use\0"
-/*  2047 */ "PGPCERTFILE\0"
-/*  2059 */ "pgpcertfile\0"
-/*  2071 */ "X.509 key file or PKCS #11 URL to use\0"
-/*  2109 */ "X509KEYFILE\0"
-/*  2121 */ "x509keyfile\0"
-/*  2133 */ "X.509 Certificate file or PKCS #11 URL to use\0"
-/*  2179 */ "X509CERTFILE\0"
-/*  2192 */ "x509certfile\0"
-/*  2205 */ "PGP subkey to use (hex or auto)\0"
-/*  2237 */ "PGPSUBKEY\0"
-/*  2247 */ "pgpsubkey\0"
-/*  2257 */ "SRP username to use\0"
-/*  2277 */ "SRPUSERNAME\0"
-/*  2289 */ "srpusername\0"
-/*  2301 */ "SRP password to use\0"
-/*  2321 */ "SRPPASSWD\0"
-/*  2331 */ "srppasswd\0"
-/*  2341 */ "PSK username to use\0"
-/*  2361 */ "PSKUSERNAME\0"
-/*  2373 */ "pskusername\0"
-/*  2385 */ "PSK key (in hex) to use\0"
-/*  2409 */ "PSKKEY\0"
-/*  2416 */ "pskkey\0"
-/*  2423 */ "The port or service to connect to\0"
-/*  2457 */ "PORT\0"
-/*  2462 */ "port\0"
-/*  2467 */ "Don't abort program if server certificate can't be validated\0"
-/*  2528 */ "INSECURE\0"
-/*  2537 */ "insecure\0"
-/*  2546 */ "Benchmark individual ciphers\0"
-/*  2575 */ "BENCHMARK_CIPHERS\0"
-/*  2593 */ "benchmark-ciphers\0"
-/*  2611 */ "Benchmark individual software ciphers (no hw acceleration)\0"
-/*  2670 */ "BENCHMARK_SOFT_CIPHERS\0"
-/*  2693 */ "benchmark-soft-ciphers\0"
-/*  2716 */ "Benchmark TLS key exchange methods\0"
-/*  2751 */ "BENCHMARK_TLS_KX\0"
-/*  2768 */ "benchmark-tls-kx\0"
-/*  2785 */ "Benchmark TLS ciphers\0"
-/*  2807 */ "BENCHMARK_TLS_CIPHERS\0"
-/*  2829 */ "benchmark-tls-ciphers\0"
-/*  2851 */ "Print a list of the supported algorithms and modes\0"
-/*  2902 */ "LIST\0"
-/*  2907 */ "list\0"
-/*  2912 */ "Display extended usage information and exit\0"
-/*  2956 */ "help\0"
-/*  2961 */ "Extended usage information passed thru pager\0"
-/*  3006 */ "more-help\0"
-/*  3016 */ "Output version information and exit\0"
-/*  3052 */ "version\0"
-/*  3060 */ "GNUTLS_CLI\0"
-/*  3071 */ "gnutls-cli - GnuTLS client - Ver. @VERSION@\n"
+/*  1108 */ "Activate heartbeat support\0"
+/*  1135 */ "HEARTBEAT\0"
+/*  1145 */ "heartbeat\0"
+/*  1155 */ "Establish a session and rehandshake\0"
+/*  1191 */ "REHANDSHAKE\0"
+/*  1203 */ "rehandshake\0"
+/*  1215 */ "Don't accept session tickets\0"
+/*  1244 */ "NOTICKET\0"
+/*  1253 */ "noticket\0"
+/*  1262 */ "Connect, establish a plain session and start TLS.\0"
+/*  1312 */ "STARTTLS\0"
+/*  1321 */ "starttls\0"
+/*  1330 */ "Use DTLS (datagram TLS) over UDP\0"
+/*  1363 */ "UDP\0"
+/*  1367 */ "udp\0"
+/*  1371 */ "Set MTU for datagram TLS\0"
+/*  1396 */ "MTU\0"
+/*  1400 */ "mtu\0"
+/*  1404 */ "Send CR LF instead of LF\0"
+/*  1429 */ "CRLF\0"
+/*  1434 */ "crlf\0"
+/*  1439 */ "Use DER format for certificates to read from\0"
+/*  1484 */ "X509FMTDER\0"
+/*  1495 */ "x509fmtder\0"
+/*  1506 */ "Send the openpgp fingerprint, instead of the key\0"
+/*  1555 */ "FINGERPRINT\0"
+/*  1567 */ "fingerprint\0"
+/*  1579 */ "Disable all the TLS extensions\0"
+/*  1610 */ "DISABLE_EXTENSIONS\0"
+/*  1629 */ "disable-extensions\0"
+/*  1648 */ "Print peer's certificate in PEM format\0"
+/*  1687 */ "PRINT_CERT\0"
+/*  1698 */ "print-cert\0"
+/*  1709 */ "The maximum record size to advertize\0"
+/*  1746 */ "RECORDSIZE\0"
+/*  1757 */ "recordsize\0"
+/*  1768 */ "The minimum number of bits allowed for DH\0"
+/*  1810 */ "DH_BITS\0"
+/*  1818 */ "dh-bits\0"
+/*  1826 */ "Priorities string\0"
+/*  1844 */ "PRIORITY\0"
+/*  1853 */ "priority\0"
+/*  1862 */ "Certificate file or PKCS #11 URL to use\0"
+/*  1902 */ "X509CAFILE\0"
+/*  1913 */ "x509cafile\0"
+/*  1924 */ "CRL file to use\0"
+/*  1940 */ "X509CRLFILE\0"
+/*  1952 */ "x509crlfile\0"
+/*  1964 */ "PGP Key file to use\0"
+/*  1984 */ "PGPKEYFILE\0"
+/*  1995 */ "pgpkeyfile\0"
+/*  2006 */ "PGP Key ring file to use\0"
+/*  2031 */ "PGPKEYRING\0"
+/*  2042 */ "pgpkeyring\0"
+/*  2053 */ "PGP Public Key (certificate) file to use\0"
+/*  2094 */ "PGPCERTFILE\0"
+/*  2106 */ "pgpcertfile\0"
+/*  2118 */ "X.509 key file or PKCS #11 URL to use\0"
+/*  2156 */ "X509KEYFILE\0"
+/*  2168 */ "x509keyfile\0"
+/*  2180 */ "X.509 Certificate file or PKCS #11 URL to use\0"
+/*  2226 */ "X509CERTFILE\0"
+/*  2239 */ "x509certfile\0"
+/*  2252 */ "PGP subkey to use (hex or auto)\0"
+/*  2284 */ "PGPSUBKEY\0"
+/*  2294 */ "pgpsubkey\0"
+/*  2304 */ "SRP username to use\0"
+/*  2324 */ "SRPUSERNAME\0"
+/*  2336 */ "srpusername\0"
+/*  2348 */ "SRP password to use\0"
+/*  2368 */ "SRPPASSWD\0"
+/*  2378 */ "srppasswd\0"
+/*  2388 */ "PSK username to use\0"
+/*  2408 */ "PSKUSERNAME\0"
+/*  2420 */ "pskusername\0"
+/*  2432 */ "PSK key (in hex) to use\0"
+/*  2456 */ "PSKKEY\0"
+/*  2463 */ "pskkey\0"
+/*  2470 */ "The port or service to connect to\0"
+/*  2504 */ "PORT\0"
+/*  2509 */ "port\0"
+/*  2514 */ "Don't abort program if server certificate can't be validated\0"
+/*  2575 */ "INSECURE\0"
+/*  2584 */ "insecure\0"
+/*  2593 */ "Benchmark individual ciphers\0"
+/*  2622 */ "BENCHMARK_CIPHERS\0"
+/*  2640 */ "benchmark-ciphers\0"
+/*  2658 */ "Benchmark individual software ciphers (no hw acceleration)\0"
+/*  2717 */ "BENCHMARK_SOFT_CIPHERS\0"
+/*  2740 */ "benchmark-soft-ciphers\0"
+/*  2763 */ "Benchmark TLS key exchange methods\0"
+/*  2798 */ "BENCHMARK_TLS_KX\0"
+/*  2815 */ "benchmark-tls-kx\0"
+/*  2832 */ "Benchmark TLS ciphers\0"
+/*  2854 */ "BENCHMARK_TLS_CIPHERS\0"
+/*  2876 */ "benchmark-tls-ciphers\0"
+/*  2898 */ "Print a list of the supported algorithms and modes\0"
+/*  2949 */ "LIST\0"
+/*  2954 */ "list\0"
+/*  2959 */ "Display extended usage information and exit\0"
+/*  3003 */ "help\0"
+/*  3008 */ "Extended usage information passed thru pager\0"
+/*  3053 */ "more-help\0"
+/*  3063 */ "Output version information and exit\0"
+/*  3099 */ "version\0"
+/*  3107 */ "GNUTLS_CLI\0"
+/*  3118 */ "gnutls-cli - GnuTLS client - Ver. @VERSION@\n"
             "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [hostname]\n\0"
-/*  3184 */ "bug-gnutls@gnu.org\0"
-/*  3203 */ "\n\n\0"
-/*  3206 */ "\n"
+/*  3231 */ "bug-gnutls@gnu.org\0"
+/*  3250 */ "\n\n\0"
+/*  3253 */ "\n"
             "Simple client program to set up a TLS connection to some other computer.  It\n"
             "sets up a TLS connection and forwards data from the standard input to the\n"
             "secured socket and vice versa.\n\0"
-/*  3390 */ "gnutls-cli @VERSION@\0"
-/*  3411 */ "Usage: gnutls-cli [options] hostname\n"
+/*  3437 */ "gnutls-cli @VERSION@\0"
+/*  3458 */ "Usage: gnutls-cli [options] hostname\n"
             "gnutls-cli --help for usage instructions.\n";
 
 /*
@@ -260,287 +263,295 @@ static char const gnutls_cli_opt_strs[3491] =
 #define RESUME_name      (gnutls_cli_opt_strs+1101)
 #define RESUME_FLAGS     (OPTST_DISABLED)
 
+/*
+ *  heartbeat option description:
+ */
+#define HEARTBEAT_DESC      (gnutls_cli_opt_strs+1108)
+#define HEARTBEAT_NAME      (gnutls_cli_opt_strs+1135)
+#define HEARTBEAT_name      (gnutls_cli_opt_strs+1145)
+#define HEARTBEAT_FLAGS     (OPTST_DISABLED)
+
 /*
  *  rehandshake option description:
  */
-#define REHANDSHAKE_DESC      (gnutls_cli_opt_strs+1108)
-#define REHANDSHAKE_NAME      (gnutls_cli_opt_strs+1144)
-#define REHANDSHAKE_name      (gnutls_cli_opt_strs+1156)
+#define REHANDSHAKE_DESC      (gnutls_cli_opt_strs+1155)
+#define REHANDSHAKE_NAME      (gnutls_cli_opt_strs+1191)
+#define REHANDSHAKE_name      (gnutls_cli_opt_strs+1203)
 #define REHANDSHAKE_FLAGS     (OPTST_DISABLED)
 
 /*
  *  noticket option description:
  */
-#define NOTICKET_DESC      (gnutls_cli_opt_strs+1168)
-#define NOTICKET_NAME      (gnutls_cli_opt_strs+1197)
-#define NOTICKET_name      (gnutls_cli_opt_strs+1206)
+#define NOTICKET_DESC      (gnutls_cli_opt_strs+1215)
+#define NOTICKET_NAME      (gnutls_cli_opt_strs+1244)
+#define NOTICKET_name      (gnutls_cli_opt_strs+1253)
 #define NOTICKET_FLAGS     (OPTST_DISABLED)
 
 /*
  *  starttls option description:
  */
-#define STARTTLS_DESC      (gnutls_cli_opt_strs+1215)
-#define STARTTLS_NAME      (gnutls_cli_opt_strs+1265)
-#define STARTTLS_name      (gnutls_cli_opt_strs+1274)
+#define STARTTLS_DESC      (gnutls_cli_opt_strs+1262)
+#define STARTTLS_NAME      (gnutls_cli_opt_strs+1312)
+#define STARTTLS_name      (gnutls_cli_opt_strs+1321)
 #define STARTTLS_FLAGS     (OPTST_DISABLED)
 
 /*
  *  udp option description:
  */
-#define UDP_DESC      (gnutls_cli_opt_strs+1283)
-#define UDP_NAME      (gnutls_cli_opt_strs+1316)
-#define UDP_name      (gnutls_cli_opt_strs+1320)
+#define UDP_DESC      (gnutls_cli_opt_strs+1330)
+#define UDP_NAME      (gnutls_cli_opt_strs+1363)
+#define UDP_name      (gnutls_cli_opt_strs+1367)
 #define UDP_FLAGS     (OPTST_DISABLED)
 
 /*
  *  mtu option description:
  */
-#define MTU_DESC      (gnutls_cli_opt_strs+1324)
-#define MTU_NAME      (gnutls_cli_opt_strs+1349)
-#define MTU_name      (gnutls_cli_opt_strs+1353)
+#define MTU_DESC      (gnutls_cli_opt_strs+1371)
+#define MTU_NAME      (gnutls_cli_opt_strs+1396)
+#define MTU_name      (gnutls_cli_opt_strs+1400)
 #define MTU_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 
 /*
  *  crlf option description:
  */
-#define CRLF_DESC      (gnutls_cli_opt_strs+1357)
-#define CRLF_NAME      (gnutls_cli_opt_strs+1382)
-#define CRLF_name      (gnutls_cli_opt_strs+1387)
+#define CRLF_DESC      (gnutls_cli_opt_strs+1404)
+#define CRLF_NAME      (gnutls_cli_opt_strs+1429)
+#define CRLF_name      (gnutls_cli_opt_strs+1434)
 #define CRLF_FLAGS     (OPTST_DISABLED)
 
 /*
  *  x509fmtder option description:
  */
-#define X509FMTDER_DESC      (gnutls_cli_opt_strs+1392)
-#define X509FMTDER_NAME      (gnutls_cli_opt_strs+1437)
-#define X509FMTDER_name      (gnutls_cli_opt_strs+1448)
+#define X509FMTDER_DESC      (gnutls_cli_opt_strs+1439)
+#define X509FMTDER_NAME      (gnutls_cli_opt_strs+1484)
+#define X509FMTDER_name      (gnutls_cli_opt_strs+1495)
 #define X509FMTDER_FLAGS     (OPTST_DISABLED)
 
 /*
  *  fingerprint option description:
  */
-#define FINGERPRINT_DESC      (gnutls_cli_opt_strs+1459)
-#define FINGERPRINT_NAME      (gnutls_cli_opt_strs+1508)
-#define FINGERPRINT_name      (gnutls_cli_opt_strs+1520)
+#define FINGERPRINT_DESC      (gnutls_cli_opt_strs+1506)
+#define FINGERPRINT_NAME      (gnutls_cli_opt_strs+1555)
+#define FINGERPRINT_name      (gnutls_cli_opt_strs+1567)
 #define FINGERPRINT_FLAGS     (OPTST_DISABLED)
 
 /*
  *  disable-extensions option description:
  */
-#define DISABLE_EXTENSIONS_DESC      (gnutls_cli_opt_strs+1532)
-#define DISABLE_EXTENSIONS_NAME      (gnutls_cli_opt_strs+1563)
-#define DISABLE_EXTENSIONS_name      (gnutls_cli_opt_strs+1582)
+#define DISABLE_EXTENSIONS_DESC      (gnutls_cli_opt_strs+1579)
+#define DISABLE_EXTENSIONS_NAME      (gnutls_cli_opt_strs+1610)
+#define DISABLE_EXTENSIONS_name      (gnutls_cli_opt_strs+1629)
 #define DISABLE_EXTENSIONS_FLAGS     (OPTST_DISABLED)
 
 /*
  *  print-cert option description:
  */
-#define PRINT_CERT_DESC      (gnutls_cli_opt_strs+1601)
-#define PRINT_CERT_NAME      (gnutls_cli_opt_strs+1640)
-#define PRINT_CERT_name      (gnutls_cli_opt_strs+1651)
+#define PRINT_CERT_DESC      (gnutls_cli_opt_strs+1648)
+#define PRINT_CERT_NAME      (gnutls_cli_opt_strs+1687)
+#define PRINT_CERT_name      (gnutls_cli_opt_strs+1698)
 #define PRINT_CERT_FLAGS     (OPTST_DISABLED)
 
 /*
  *  recordsize option description:
  */
-#define RECORDSIZE_DESC      (gnutls_cli_opt_strs+1662)
-#define RECORDSIZE_NAME      (gnutls_cli_opt_strs+1699)
-#define RECORDSIZE_name      (gnutls_cli_opt_strs+1710)
+#define RECORDSIZE_DESC      (gnutls_cli_opt_strs+1709)
+#define RECORDSIZE_NAME      (gnutls_cli_opt_strs+1746)
+#define RECORDSIZE_name      (gnutls_cli_opt_strs+1757)
 #define RECORDSIZE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 
 /*
  *  dh-bits option description:
  */
-#define DH_BITS_DESC      (gnutls_cli_opt_strs+1721)
-#define DH_BITS_NAME      (gnutls_cli_opt_strs+1763)
-#define DH_BITS_name      (gnutls_cli_opt_strs+1771)
+#define DH_BITS_DESC      (gnutls_cli_opt_strs+1768)
+#define DH_BITS_NAME      (gnutls_cli_opt_strs+1810)
+#define DH_BITS_name      (gnutls_cli_opt_strs+1818)
 #define DH_BITS_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 
 /*
  *  priority option description:
  */
-#define PRIORITY_DESC      (gnutls_cli_opt_strs+1779)
-#define PRIORITY_NAME      (gnutls_cli_opt_strs+1797)
-#define PRIORITY_name      (gnutls_cli_opt_strs+1806)
+#define PRIORITY_DESC      (gnutls_cli_opt_strs+1826)
+#define PRIORITY_NAME      (gnutls_cli_opt_strs+1844)
+#define PRIORITY_name      (gnutls_cli_opt_strs+1853)
 #define PRIORITY_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509cafile option description:
  */
-#define X509CAFILE_DESC      (gnutls_cli_opt_strs+1815)
-#define X509CAFILE_NAME      (gnutls_cli_opt_strs+1855)
-#define X509CAFILE_name      (gnutls_cli_opt_strs+1866)
+#define X509CAFILE_DESC      (gnutls_cli_opt_strs+1862)
+#define X509CAFILE_NAME      (gnutls_cli_opt_strs+1902)
+#define X509CAFILE_name      (gnutls_cli_opt_strs+1913)
 #define X509CAFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509crlfile option description:
  */
-#define X509CRLFILE_DESC      (gnutls_cli_opt_strs+1877)
-#define X509CRLFILE_NAME      (gnutls_cli_opt_strs+1893)
-#define X509CRLFILE_name      (gnutls_cli_opt_strs+1905)
+#define X509CRLFILE_DESC      (gnutls_cli_opt_strs+1924)
+#define X509CRLFILE_NAME      (gnutls_cli_opt_strs+1940)
+#define X509CRLFILE_name      (gnutls_cli_opt_strs+1952)
 #define X509CRLFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pgpkeyfile option description:
  */
-#define PGPKEYFILE_DESC      (gnutls_cli_opt_strs+1917)
-#define PGPKEYFILE_NAME      (gnutls_cli_opt_strs+1937)
-#define PGPKEYFILE_name      (gnutls_cli_opt_strs+1948)
+#define PGPKEYFILE_DESC      (gnutls_cli_opt_strs+1964)
+#define PGPKEYFILE_NAME      (gnutls_cli_opt_strs+1984)
+#define PGPKEYFILE_name      (gnutls_cli_opt_strs+1995)
 #define PGPKEYFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pgpkeyring option description:
  */
-#define PGPKEYRING_DESC      (gnutls_cli_opt_strs+1959)
-#define PGPKEYRING_NAME      (gnutls_cli_opt_strs+1984)
-#define PGPKEYRING_name      (gnutls_cli_opt_strs+1995)
+#define PGPKEYRING_DESC      (gnutls_cli_opt_strs+2006)
+#define PGPKEYRING_NAME      (gnutls_cli_opt_strs+2031)
+#define PGPKEYRING_name      (gnutls_cli_opt_strs+2042)
 #define PGPKEYRING_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pgpcertfile option description:
  */
-#define PGPCERTFILE_DESC      (gnutls_cli_opt_strs+2006)
-#define PGPCERTFILE_NAME      (gnutls_cli_opt_strs+2047)
-#define PGPCERTFILE_name      (gnutls_cli_opt_strs+2059)
+#define PGPCERTFILE_DESC      (gnutls_cli_opt_strs+2053)
+#define PGPCERTFILE_NAME      (gnutls_cli_opt_strs+2094)
+#define PGPCERTFILE_name      (gnutls_cli_opt_strs+2106)
 #define PGPCERTFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  x509keyfile option description:
  */
-#define X509KEYFILE_DESC      (gnutls_cli_opt_strs+2071)
-#define X509KEYFILE_NAME      (gnutls_cli_opt_strs+2109)
-#define X509KEYFILE_name      (gnutls_cli_opt_strs+2121)
+#define X509KEYFILE_DESC      (gnutls_cli_opt_strs+2118)
+#define X509KEYFILE_NAME      (gnutls_cli_opt_strs+2156)
+#define X509KEYFILE_name      (gnutls_cli_opt_strs+2168)
 #define X509KEYFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509certfile option description:
  */
-#define X509CERTFILE_DESC      (gnutls_cli_opt_strs+2133)
-#define X509CERTFILE_NAME      (gnutls_cli_opt_strs+2179)
-#define X509CERTFILE_name      (gnutls_cli_opt_strs+2192)
+#define X509CERTFILE_DESC      (gnutls_cli_opt_strs+2180)
+#define X509CERTFILE_NAME      (gnutls_cli_opt_strs+2226)
+#define X509CERTFILE_name      (gnutls_cli_opt_strs+2239)
 #define X509CERTFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  pgpsubkey option description:
  */
-#define PGPSUBKEY_DESC      (gnutls_cli_opt_strs+2205)
-#define PGPSUBKEY_NAME      (gnutls_cli_opt_strs+2237)
-#define PGPSUBKEY_name      (gnutls_cli_opt_strs+2247)
+#define PGPSUBKEY_DESC      (gnutls_cli_opt_strs+2252)
+#define PGPSUBKEY_NAME      (gnutls_cli_opt_strs+2284)
+#define PGPSUBKEY_name      (gnutls_cli_opt_strs+2294)
 #define PGPSUBKEY_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  srpusername option description:
  */
-#define SRPUSERNAME_DESC      (gnutls_cli_opt_strs+2257)
-#define SRPUSERNAME_NAME      (gnutls_cli_opt_strs+2277)
-#define SRPUSERNAME_name      (gnutls_cli_opt_strs+2289)
+#define SRPUSERNAME_DESC      (gnutls_cli_opt_strs+2304)
+#define SRPUSERNAME_NAME      (gnutls_cli_opt_strs+2324)
+#define SRPUSERNAME_name      (gnutls_cli_opt_strs+2336)
 #define SRPUSERNAME_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  srppasswd option description:
  */
-#define SRPPASSWD_DESC      (gnutls_cli_opt_strs+2301)
-#define SRPPASSWD_NAME      (gnutls_cli_opt_strs+2321)
-#define SRPPASSWD_name      (gnutls_cli_opt_strs+2331)
+#define SRPPASSWD_DESC      (gnutls_cli_opt_strs+2348)
+#define SRPPASSWD_NAME      (gnutls_cli_opt_strs+2368)
+#define SRPPASSWD_name      (gnutls_cli_opt_strs+2378)
 #define SRPPASSWD_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  pskusername option description:
  */
-#define PSKUSERNAME_DESC      (gnutls_cli_opt_strs+2341)
-#define PSKUSERNAME_NAME      (gnutls_cli_opt_strs+2361)
-#define PSKUSERNAME_name      (gnutls_cli_opt_strs+2373)
+#define PSKUSERNAME_DESC      (gnutls_cli_opt_strs+2388)
+#define PSKUSERNAME_NAME      (gnutls_cli_opt_strs+2408)
+#define PSKUSERNAME_name      (gnutls_cli_opt_strs+2420)
 #define PSKUSERNAME_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  pskkey option description:
  */
-#define PSKKEY_DESC      (gnutls_cli_opt_strs+2385)
-#define PSKKEY_NAME      (gnutls_cli_opt_strs+2409)
-#define PSKKEY_name      (gnutls_cli_opt_strs+2416)
+#define PSKKEY_DESC      (gnutls_cli_opt_strs+2432)
+#define PSKKEY_NAME      (gnutls_cli_opt_strs+2456)
+#define PSKKEY_name      (gnutls_cli_opt_strs+2463)
 #define PSKKEY_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  port option description:
  */
-#define PORT_DESC      (gnutls_cli_opt_strs+2423)
-#define PORT_NAME      (gnutls_cli_opt_strs+2457)
-#define PORT_name      (gnutls_cli_opt_strs+2462)
+#define PORT_DESC      (gnutls_cli_opt_strs+2470)
+#define PORT_NAME      (gnutls_cli_opt_strs+2504)
+#define PORT_name      (gnutls_cli_opt_strs+2509)
 #define PORT_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  insecure option description:
  */
-#define INSECURE_DESC      (gnutls_cli_opt_strs+2467)
-#define INSECURE_NAME      (gnutls_cli_opt_strs+2528)
-#define INSECURE_name      (gnutls_cli_opt_strs+2537)
+#define INSECURE_DESC      (gnutls_cli_opt_strs+2514)
+#define INSECURE_NAME      (gnutls_cli_opt_strs+2575)
+#define INSECURE_name      (gnutls_cli_opt_strs+2584)
 #define INSECURE_FLAGS     (OPTST_DISABLED)
 
 /*
  *  benchmark-ciphers option description:
  */
-#define BENCHMARK_CIPHERS_DESC      (gnutls_cli_opt_strs+2546)
-#define BENCHMARK_CIPHERS_NAME      (gnutls_cli_opt_strs+2575)
-#define BENCHMARK_CIPHERS_name      (gnutls_cli_opt_strs+2593)
+#define BENCHMARK_CIPHERS_DESC      (gnutls_cli_opt_strs+2593)
+#define BENCHMARK_CIPHERS_NAME      (gnutls_cli_opt_strs+2622)
+#define BENCHMARK_CIPHERS_name      (gnutls_cli_opt_strs+2640)
 #define BENCHMARK_CIPHERS_FLAGS     (OPTST_DISABLED)
 
 /*
  *  benchmark-soft-ciphers option description:
  */
-#define BENCHMARK_SOFT_CIPHERS_DESC      (gnutls_cli_opt_strs+2611)
-#define BENCHMARK_SOFT_CIPHERS_NAME      (gnutls_cli_opt_strs+2670)
-#define BENCHMARK_SOFT_CIPHERS_name      (gnutls_cli_opt_strs+2693)
+#define BENCHMARK_SOFT_CIPHERS_DESC      (gnutls_cli_opt_strs+2658)
+#define BENCHMARK_SOFT_CIPHERS_NAME      (gnutls_cli_opt_strs+2717)
+#define BENCHMARK_SOFT_CIPHERS_name      (gnutls_cli_opt_strs+2740)
 #define BENCHMARK_SOFT_CIPHERS_FLAGS     (OPTST_DISABLED)
 
 /*
  *  benchmark-tls-kx option description:
  */
-#define BENCHMARK_TLS_KX_DESC      (gnutls_cli_opt_strs+2716)
-#define BENCHMARK_TLS_KX_NAME      (gnutls_cli_opt_strs+2751)
-#define BENCHMARK_TLS_KX_name      (gnutls_cli_opt_strs+2768)
+#define BENCHMARK_TLS_KX_DESC      (gnutls_cli_opt_strs+2763)
+#define BENCHMARK_TLS_KX_NAME      (gnutls_cli_opt_strs+2798)
+#define BENCHMARK_TLS_KX_name      (gnutls_cli_opt_strs+2815)
 #define BENCHMARK_TLS_KX_FLAGS     (OPTST_DISABLED)
 
 /*
  *  benchmark-tls-ciphers option description:
  */
-#define BENCHMARK_TLS_CIPHERS_DESC      (gnutls_cli_opt_strs+2785)
-#define BENCHMARK_TLS_CIPHERS_NAME      (gnutls_cli_opt_strs+2807)
-#define BENCHMARK_TLS_CIPHERS_name      (gnutls_cli_opt_strs+2829)
+#define BENCHMARK_TLS_CIPHERS_DESC      (gnutls_cli_opt_strs+2832)
+#define BENCHMARK_TLS_CIPHERS_NAME      (gnutls_cli_opt_strs+2854)
+#define BENCHMARK_TLS_CIPHERS_name      (gnutls_cli_opt_strs+2876)
 #define BENCHMARK_TLS_CIPHERS_FLAGS     (OPTST_DISABLED)
 
 /*
  *  list option description:
  */
-#define LIST_DESC      (gnutls_cli_opt_strs+2851)
-#define LIST_NAME      (gnutls_cli_opt_strs+2902)
-#define LIST_name      (gnutls_cli_opt_strs+2907)
+#define LIST_DESC      (gnutls_cli_opt_strs+2898)
+#define LIST_NAME      (gnutls_cli_opt_strs+2949)
+#define LIST_name      (gnutls_cli_opt_strs+2954)
 #define LIST_FLAGS     (OPTST_DISABLED)
 
 /*
  *  Help/More_Help/Version option descriptions:
  */
-#define HELP_DESC       (gnutls_cli_opt_strs+2912)
-#define HELP_name       (gnutls_cli_opt_strs+2956)
+#define HELP_DESC       (gnutls_cli_opt_strs+2959)
+#define HELP_name       (gnutls_cli_opt_strs+3003)
 #ifdef HAVE_WORKING_FORK
-#define MORE_HELP_DESC  (gnutls_cli_opt_strs+2961)
-#define MORE_HELP_name  (gnutls_cli_opt_strs+3006)
+#define MORE_HELP_DESC  (gnutls_cli_opt_strs+3008)
+#define MORE_HELP_name  (gnutls_cli_opt_strs+3053)
 #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
 #else
 #define MORE_HELP_DESC  NULL
@@ -553,8 +564,8 @@ static char const gnutls_cli_opt_strs[3491] =
 #  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
                          OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
 #endif
-#define VER_DESC        (gnutls_cli_opt_strs+3016)
-#define VER_name        (gnutls_cli_opt_strs+3052)
+#define VER_DESC        (gnutls_cli_opt_strs+3063)
+#define VER_name        (gnutls_cli_opt_strs+3099)
 /*
  *  Declare option callback procedures
  */
@@ -635,8 +646,20 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ RESUME_DESC, RESUME_NAME, RESUME_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 5, VALUE_OPT_REHANDSHAKE,
-     /* equiv idx, value */ 5, VALUE_OPT_REHANDSHAKE,
+  {  /* entry idx, value */ 5, VALUE_OPT_HEARTBEAT,
+     /* equiv idx, value */ 5, VALUE_OPT_HEARTBEAT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ HEARTBEAT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --heartbeat */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ HEARTBEAT_DESC, HEARTBEAT_NAME, HEARTBEAT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 6, VALUE_OPT_REHANDSHAKE,
+     /* equiv idx, value */ 6, VALUE_OPT_REHANDSHAKE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ REHANDSHAKE_FLAGS, 0,
@@ -647,8 +670,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ REHANDSHAKE_DESC, REHANDSHAKE_NAME, REHANDSHAKE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 6, VALUE_OPT_NOTICKET,
-     /* equiv idx, value */ 6, VALUE_OPT_NOTICKET,
+  {  /* entry idx, value */ 7, VALUE_OPT_NOTICKET,
+     /* equiv idx, value */ 7, VALUE_OPT_NOTICKET,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ NOTICKET_FLAGS, 0,
@@ -659,8 +682,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ NOTICKET_DESC, NOTICKET_NAME, NOTICKET_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 7, VALUE_OPT_STARTTLS,
-     /* equiv idx, value */ 7, VALUE_OPT_STARTTLS,
+  {  /* entry idx, value */ 8, VALUE_OPT_STARTTLS,
+     /* equiv idx, value */ 8, VALUE_OPT_STARTTLS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ STARTTLS_FLAGS, 0,
@@ -671,8 +694,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ STARTTLS_DESC, STARTTLS_NAME, STARTTLS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 8, VALUE_OPT_UDP,
-     /* equiv idx, value */ 8, VALUE_OPT_UDP,
+  {  /* entry idx, value */ 9, VALUE_OPT_UDP,
+     /* equiv idx, value */ 9, VALUE_OPT_UDP,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ UDP_FLAGS, 0,
@@ -683,8 +706,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ UDP_DESC, UDP_NAME, UDP_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 9, VALUE_OPT_MTU,
-     /* equiv idx, value */ 9, VALUE_OPT_MTU,
+  {  /* entry idx, value */ 10, VALUE_OPT_MTU,
+     /* equiv idx, value */ 10, VALUE_OPT_MTU,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ MTU_FLAGS, 0,
@@ -695,8 +718,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ MTU_DESC, MTU_NAME, MTU_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 10, VALUE_OPT_CRLF,
-     /* equiv idx, value */ 10, VALUE_OPT_CRLF,
+  {  /* entry idx, value */ 11, VALUE_OPT_CRLF,
+     /* equiv idx, value */ 11, VALUE_OPT_CRLF,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ CRLF_FLAGS, 0,
@@ -707,8 +730,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ CRLF_DESC, CRLF_NAME, CRLF_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 11, VALUE_OPT_X509FMTDER,
-     /* equiv idx, value */ 11, VALUE_OPT_X509FMTDER,
+  {  /* entry idx, value */ 12, VALUE_OPT_X509FMTDER,
+     /* equiv idx, value */ 12, VALUE_OPT_X509FMTDER,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509FMTDER_FLAGS, 0,
@@ -719,8 +742,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509FMTDER_DESC, X509FMTDER_NAME, X509FMTDER_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 12, VALUE_OPT_FINGERPRINT,
-     /* equiv idx, value */ 12, VALUE_OPT_FINGERPRINT,
+  {  /* entry idx, value */ 13, VALUE_OPT_FINGERPRINT,
+     /* equiv idx, value */ 13, VALUE_OPT_FINGERPRINT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ FINGERPRINT_FLAGS, 0,
@@ -731,8 +754,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ FINGERPRINT_DESC, FINGERPRINT_NAME, FINGERPRINT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 13, VALUE_OPT_DISABLE_EXTENSIONS,
-     /* equiv idx, value */ 13, VALUE_OPT_DISABLE_EXTENSIONS,
+  {  /* entry idx, value */ 14, VALUE_OPT_DISABLE_EXTENSIONS,
+     /* equiv idx, value */ 14, VALUE_OPT_DISABLE_EXTENSIONS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ DISABLE_EXTENSIONS_FLAGS, 0,
@@ -743,8 +766,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ DISABLE_EXTENSIONS_DESC, DISABLE_EXTENSIONS_NAME, DISABLE_EXTENSIONS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 14, VALUE_OPT_PRINT_CERT,
-     /* equiv idx, value */ 14, VALUE_OPT_PRINT_CERT,
+  {  /* entry idx, value */ 15, VALUE_OPT_PRINT_CERT,
+     /* equiv idx, value */ 15, VALUE_OPT_PRINT_CERT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PRINT_CERT_FLAGS, 0,
@@ -755,8 +778,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PRINT_CERT_DESC, PRINT_CERT_NAME, PRINT_CERT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 15, VALUE_OPT_RECORDSIZE,
-     /* equiv idx, value */ 15, VALUE_OPT_RECORDSIZE,
+  {  /* entry idx, value */ 16, VALUE_OPT_RECORDSIZE,
+     /* equiv idx, value */ 16, VALUE_OPT_RECORDSIZE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ RECORDSIZE_FLAGS, 0,
@@ -767,8 +790,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ RECORDSIZE_DESC, RECORDSIZE_NAME, RECORDSIZE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 16, VALUE_OPT_DH_BITS,
-     /* equiv idx, value */ 16, VALUE_OPT_DH_BITS,
+  {  /* entry idx, value */ 17, VALUE_OPT_DH_BITS,
+     /* equiv idx, value */ 17, VALUE_OPT_DH_BITS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ DH_BITS_FLAGS, 0,
@@ -779,8 +802,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ DH_BITS_DESC, DH_BITS_NAME, DH_BITS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 17, VALUE_OPT_PRIORITY,
-     /* equiv idx, value */ 17, VALUE_OPT_PRIORITY,
+  {  /* entry idx, value */ 18, VALUE_OPT_PRIORITY,
+     /* equiv idx, value */ 18, VALUE_OPT_PRIORITY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PRIORITY_FLAGS, 0,
@@ -791,8 +814,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PRIORITY_DESC, PRIORITY_NAME, PRIORITY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 18, VALUE_OPT_X509CAFILE,
-     /* equiv idx, value */ 18, VALUE_OPT_X509CAFILE,
+  {  /* entry idx, value */ 19, VALUE_OPT_X509CAFILE,
+     /* equiv idx, value */ 19, VALUE_OPT_X509CAFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509CAFILE_FLAGS, 0,
@@ -803,8 +826,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509CAFILE_DESC, X509CAFILE_NAME, X509CAFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 19, VALUE_OPT_X509CRLFILE,
-     /* equiv idx, value */ 19, VALUE_OPT_X509CRLFILE,
+  {  /* entry idx, value */ 20, VALUE_OPT_X509CRLFILE,
+     /* equiv idx, value */ 20, VALUE_OPT_X509CRLFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509CRLFILE_FLAGS, 0,
@@ -815,8 +838,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509CRLFILE_DESC, X509CRLFILE_NAME, X509CRLFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 20, VALUE_OPT_PGPKEYFILE,
-     /* equiv idx, value */ 20, VALUE_OPT_PGPKEYFILE,
+  {  /* entry idx, value */ 21, VALUE_OPT_PGPKEYFILE,
+     /* equiv idx, value */ 21, VALUE_OPT_PGPKEYFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPKEYFILE_FLAGS, 0,
@@ -827,8 +850,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPKEYFILE_DESC, PGPKEYFILE_NAME, PGPKEYFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 21, VALUE_OPT_PGPKEYRING,
-     /* equiv idx, value */ 21, VALUE_OPT_PGPKEYRING,
+  {  /* entry idx, value */ 22, VALUE_OPT_PGPKEYRING,
+     /* equiv idx, value */ 22, VALUE_OPT_PGPKEYRING,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPKEYRING_FLAGS, 0,
@@ -839,8 +862,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPKEYRING_DESC, PGPKEYRING_NAME, PGPKEYRING_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 22, VALUE_OPT_PGPCERTFILE,
-     /* equiv idx, value */ 22, VALUE_OPT_PGPCERTFILE,
+  {  /* entry idx, value */ 23, VALUE_OPT_PGPCERTFILE,
+     /* equiv idx, value */ 23, VALUE_OPT_PGPCERTFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPCERTFILE_FLAGS, 0,
@@ -851,8 +874,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPCERTFILE_DESC, PGPCERTFILE_NAME, PGPCERTFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 23, VALUE_OPT_X509KEYFILE,
-     /* equiv idx, value */ 23, VALUE_OPT_X509KEYFILE,
+  {  /* entry idx, value */ 24, VALUE_OPT_X509KEYFILE,
+     /* equiv idx, value */ 24, VALUE_OPT_X509KEYFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509KEYFILE_FLAGS, 0,
@@ -863,8 +886,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509KEYFILE_DESC, X509KEYFILE_NAME, X509KEYFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 24, VALUE_OPT_X509CERTFILE,
-     /* equiv idx, value */ 24, VALUE_OPT_X509CERTFILE,
+  {  /* entry idx, value */ 25, VALUE_OPT_X509CERTFILE,
+     /* equiv idx, value */ 25, VALUE_OPT_X509CERTFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509CERTFILE_FLAGS, 0,
@@ -875,8 +898,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509CERTFILE_DESC, X509CERTFILE_NAME, X509CERTFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 25, VALUE_OPT_PGPSUBKEY,
-     /* equiv idx, value */ 25, VALUE_OPT_PGPSUBKEY,
+  {  /* entry idx, value */ 26, VALUE_OPT_PGPSUBKEY,
+     /* equiv idx, value */ 26, VALUE_OPT_PGPSUBKEY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPSUBKEY_FLAGS, 0,
@@ -887,8 +910,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPSUBKEY_DESC, PGPSUBKEY_NAME, PGPSUBKEY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 26, VALUE_OPT_SRPUSERNAME,
-     /* equiv idx, value */ 26, VALUE_OPT_SRPUSERNAME,
+  {  /* entry idx, value */ 27, VALUE_OPT_SRPUSERNAME,
+     /* equiv idx, value */ 27, VALUE_OPT_SRPUSERNAME,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ SRPUSERNAME_FLAGS, 0,
@@ -899,8 +922,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ SRPUSERNAME_DESC, SRPUSERNAME_NAME, SRPUSERNAME_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 27, VALUE_OPT_SRPPASSWD,
-     /* equiv idx, value */ 27, VALUE_OPT_SRPPASSWD,
+  {  /* entry idx, value */ 28, VALUE_OPT_SRPPASSWD,
+     /* equiv idx, value */ 28, VALUE_OPT_SRPPASSWD,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ SRPPASSWD_FLAGS, 0,
@@ -911,8 +934,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ SRPPASSWD_DESC, SRPPASSWD_NAME, SRPPASSWD_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 28, VALUE_OPT_PSKUSERNAME,
-     /* equiv idx, value */ 28, VALUE_OPT_PSKUSERNAME,
+  {  /* entry idx, value */ 29, VALUE_OPT_PSKUSERNAME,
+     /* equiv idx, value */ 29, VALUE_OPT_PSKUSERNAME,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PSKUSERNAME_FLAGS, 0,
@@ -923,8 +946,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PSKUSERNAME_DESC, PSKUSERNAME_NAME, PSKUSERNAME_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 29, VALUE_OPT_PSKKEY,
-     /* equiv idx, value */ 29, VALUE_OPT_PSKKEY,
+  {  /* entry idx, value */ 30, VALUE_OPT_PSKKEY,
+     /* equiv idx, value */ 30, VALUE_OPT_PSKKEY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PSKKEY_FLAGS, 0,
@@ -935,8 +958,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PSKKEY_DESC, PSKKEY_NAME, PSKKEY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 30, VALUE_OPT_PORT,
-     /* equiv idx, value */ 30, VALUE_OPT_PORT,
+  {  /* entry idx, value */ 31, VALUE_OPT_PORT,
+     /* equiv idx, value */ 31, VALUE_OPT_PORT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PORT_FLAGS, 0,
@@ -947,8 +970,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PORT_DESC, PORT_NAME, PORT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 31, VALUE_OPT_INSECURE,
-     /* equiv idx, value */ 31, VALUE_OPT_INSECURE,
+  {  /* entry idx, value */ 32, VALUE_OPT_INSECURE,
+     /* equiv idx, value */ 32, VALUE_OPT_INSECURE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ INSECURE_FLAGS, 0,
@@ -959,8 +982,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ INSECURE_DESC, INSECURE_NAME, INSECURE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 32, VALUE_OPT_BENCHMARK_CIPHERS,
-     /* equiv idx, value */ 32, VALUE_OPT_BENCHMARK_CIPHERS,
+  {  /* entry idx, value */ 33, VALUE_OPT_BENCHMARK_CIPHERS,
+     /* equiv idx, value */ 33, VALUE_OPT_BENCHMARK_CIPHERS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ BENCHMARK_CIPHERS_FLAGS, 0,
@@ -971,8 +994,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ BENCHMARK_CIPHERS_DESC, BENCHMARK_CIPHERS_NAME, BENCHMARK_CIPHERS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 33, VALUE_OPT_BENCHMARK_SOFT_CIPHERS,
-     /* equiv idx, value */ 33, VALUE_OPT_BENCHMARK_SOFT_CIPHERS,
+  {  /* entry idx, value */ 34, VALUE_OPT_BENCHMARK_SOFT_CIPHERS,
+     /* equiv idx, value */ 34, VALUE_OPT_BENCHMARK_SOFT_CIPHERS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ BENCHMARK_SOFT_CIPHERS_FLAGS, 0,
@@ -983,8 +1006,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ BENCHMARK_SOFT_CIPHERS_DESC, BENCHMARK_SOFT_CIPHERS_NAME, BENCHMARK_SOFT_CIPHERS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 34, VALUE_OPT_BENCHMARK_TLS_KX,
-     /* equiv idx, value */ 34, VALUE_OPT_BENCHMARK_TLS_KX,
+  {  /* entry idx, value */ 35, VALUE_OPT_BENCHMARK_TLS_KX,
+     /* equiv idx, value */ 35, VALUE_OPT_BENCHMARK_TLS_KX,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ BENCHMARK_TLS_KX_FLAGS, 0,
@@ -995,8 +1018,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ BENCHMARK_TLS_KX_DESC, BENCHMARK_TLS_KX_NAME, BENCHMARK_TLS_KX_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 35, VALUE_OPT_BENCHMARK_TLS_CIPHERS,
-     /* equiv idx, value */ 35, VALUE_OPT_BENCHMARK_TLS_CIPHERS,
+  {  /* entry idx, value */ 36, VALUE_OPT_BENCHMARK_TLS_CIPHERS,
+     /* equiv idx, value */ 36, VALUE_OPT_BENCHMARK_TLS_CIPHERS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ BENCHMARK_TLS_CIPHERS_FLAGS, 0,
@@ -1007,8 +1030,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ BENCHMARK_TLS_CIPHERS_DESC, BENCHMARK_TLS_CIPHERS_NAME, BENCHMARK_TLS_CIPHERS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 36, VALUE_OPT_LIST,
-     /* equiv idx, value */ 36, VALUE_OPT_LIST,
+  {  /* entry idx, value */ 37, VALUE_OPT_LIST,
+     /* equiv idx, value */ 37, VALUE_OPT_LIST,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ LIST_FLAGS, 0,
@@ -1063,14 +1086,14 @@ static tOptDesc optDesc[OPTION_CT] = {
  *
  *  Define the gnutls-cli Option Environment
  */
-#define zPROGNAME       (gnutls_cli_opt_strs+3060)
-#define zUsageTitle     (gnutls_cli_opt_strs+3071)
+#define zPROGNAME       (gnutls_cli_opt_strs+3107)
+#define zUsageTitle     (gnutls_cli_opt_strs+3118)
 #define zRcName         NULL
 #define apzHomeList     NULL
-#define zBugsAddr       (gnutls_cli_opt_strs+3184)
-#define zExplain        (gnutls_cli_opt_strs+3203)
-#define zDetail         (gnutls_cli_opt_strs+3206)
-#define zFullVersion    (gnutls_cli_opt_strs+3390)
+#define zBugsAddr       (gnutls_cli_opt_strs+3231)
+#define zExplain        (gnutls_cli_opt_strs+3250)
+#define zDetail         (gnutls_cli_opt_strs+3253)
+#define zFullVersion    (gnutls_cli_opt_strs+3437)
 /* extracted from optcode.tlib near line 350 */
 
 #if defined(ENABLE_NLS)
@@ -1084,7 +1107,7 @@ static tOptDesc optDesc[OPTION_CT] = {
 
 #define gnutls_cli_full_usage (NULL)
 
-#define gnutls_cli_short_usage (gnutls_cli_opt_strs+3411)
+#define gnutls_cli_short_usage (gnutls_cli_opt_strs+3458)
 
 #endif /* not defined __doxygen__ */
 
@@ -1362,7 +1385,7 @@ tOptions gnutls_cliOptions = {
       NO_EQUIVALENT, /* '-#' option index */
       NO_EQUIVALENT /* index of default opt */
     },
-    40 /* full option count */, 37 /* user option count */,
+    41 /* full option count */, 38 /* user option count */,
     gnutls_cli_full_usage, gnutls_cli_short_usage,
     NULL, NULL,
     PKGDATADIR, gnutls_cli_packager_info
index e8c9dacd5bcb60cc79ee42b87037c50604d14e6d..b738248b2f8cc9dc013b7cdbd9861914c7b78473 100644 (file)
@@ -2,7 +2,7 @@
  *  
  *  DO NOT EDIT THIS FILE   (cli-args.h)
  *  
- *  It has been AutoGen-ed  June  6, 2012 at 09:09:25 PM by AutoGen 5.16
+ *  It has been AutoGen-ed  August 30, 2012 at 09:58:04 PM by AutoGen 5.16
  *  From the definitions    cli-args.def
  *  and the template file   options
  *
@@ -72,44 +72,45 @@ typedef enum {
     INDEX_OPT_TOFU                    =  2,
     INDEX_OPT_OCSP                    =  3,
     INDEX_OPT_RESUME                  =  4,
-    INDEX_OPT_REHANDSHAKE             =  5,
-    INDEX_OPT_NOTICKET                =  6,
-    INDEX_OPT_STARTTLS                =  7,
-    INDEX_OPT_UDP                     =  8,
-    INDEX_OPT_MTU                     =  9,
-    INDEX_OPT_CRLF                    = 10,
-    INDEX_OPT_X509FMTDER              = 11,
-    INDEX_OPT_FINGERPRINT             = 12,
-    INDEX_OPT_DISABLE_EXTENSIONS      = 13,
-    INDEX_OPT_PRINT_CERT              = 14,
-    INDEX_OPT_RECORDSIZE              = 15,
-    INDEX_OPT_DH_BITS                 = 16,
-    INDEX_OPT_PRIORITY                = 17,
-    INDEX_OPT_X509CAFILE              = 18,
-    INDEX_OPT_X509CRLFILE             = 19,
-    INDEX_OPT_PGPKEYFILE              = 20,
-    INDEX_OPT_PGPKEYRING              = 21,
-    INDEX_OPT_PGPCERTFILE             = 22,
-    INDEX_OPT_X509KEYFILE             = 23,
-    INDEX_OPT_X509CERTFILE            = 24,
-    INDEX_OPT_PGPSUBKEY               = 25,
-    INDEX_OPT_SRPUSERNAME             = 26,
-    INDEX_OPT_SRPPASSWD               = 27,
-    INDEX_OPT_PSKUSERNAME             = 28,
-    INDEX_OPT_PSKKEY                  = 29,
-    INDEX_OPT_PORT                    = 30,
-    INDEX_OPT_INSECURE                = 31,
-    INDEX_OPT_BENCHMARK_CIPHERS       = 32,
-    INDEX_OPT_BENCHMARK_SOFT_CIPHERS  = 33,
-    INDEX_OPT_BENCHMARK_TLS_KX        = 34,
-    INDEX_OPT_BENCHMARK_TLS_CIPHERS   = 35,
-    INDEX_OPT_LIST                    = 36,
-    INDEX_OPT_VERSION                 = 37,
-    INDEX_OPT_HELP                    = 38,
-    INDEX_OPT_MORE_HELP               = 39
+    INDEX_OPT_HEARTBEAT               =  5,
+    INDEX_OPT_REHANDSHAKE             =  6,
+    INDEX_OPT_NOTICKET                =  7,
+    INDEX_OPT_STARTTLS                =  8,
+    INDEX_OPT_UDP                     =  9,
+    INDEX_OPT_MTU                     = 10,
+    INDEX_OPT_CRLF                    = 11,
+    INDEX_OPT_X509FMTDER              = 12,
+    INDEX_OPT_FINGERPRINT             = 13,
+    INDEX_OPT_DISABLE_EXTENSIONS      = 14,
+    INDEX_OPT_PRINT_CERT              = 15,
+    INDEX_OPT_RECORDSIZE              = 16,
+    INDEX_OPT_DH_BITS                 = 17,
+    INDEX_OPT_PRIORITY                = 18,
+    INDEX_OPT_X509CAFILE              = 19,
+    INDEX_OPT_X509CRLFILE             = 20,
+    INDEX_OPT_PGPKEYFILE              = 21,
+    INDEX_OPT_PGPKEYRING              = 22,
+    INDEX_OPT_PGPCERTFILE             = 23,
+    INDEX_OPT_X509KEYFILE             = 24,
+    INDEX_OPT_X509CERTFILE            = 25,
+    INDEX_OPT_PGPSUBKEY               = 26,
+    INDEX_OPT_SRPUSERNAME             = 27,
+    INDEX_OPT_SRPPASSWD               = 28,
+    INDEX_OPT_PSKUSERNAME             = 29,
+    INDEX_OPT_PSKKEY                  = 30,
+    INDEX_OPT_PORT                    = 31,
+    INDEX_OPT_INSECURE                = 32,
+    INDEX_OPT_BENCHMARK_CIPHERS       = 33,
+    INDEX_OPT_BENCHMARK_SOFT_CIPHERS  = 34,
+    INDEX_OPT_BENCHMARK_TLS_KX        = 35,
+    INDEX_OPT_BENCHMARK_TLS_CIPHERS   = 36,
+    INDEX_OPT_LIST                    = 37,
+    INDEX_OPT_VERSION                 = 38,
+    INDEX_OPT_HELP                    = 39,
+    INDEX_OPT_MORE_HELP               = 40
 } teOptIndex;
 
-#define OPTION_CT    40
+#define OPTION_CT    41
 #define GNUTLS_CLI_VERSION       "@VERSION@"
 #define GNUTLS_CLI_FULL_VERSION  "gnutls-cli @VERSION@"
 
@@ -154,43 +155,44 @@ typedef enum {
 #define VALUE_OPT_TOFU           2
 #define VALUE_OPT_OCSP           3
 #define VALUE_OPT_RESUME         'r'
+#define VALUE_OPT_HEARTBEAT      'b'
 #define VALUE_OPT_REHANDSHAKE    'e'
-#define VALUE_OPT_NOTICKET       6
+#define VALUE_OPT_NOTICKET       7
 #define VALUE_OPT_STARTTLS       's'
 #define VALUE_OPT_UDP            'u'
-#define VALUE_OPT_MTU            9
+#define VALUE_OPT_MTU            10
 
 #define OPT_VALUE_MTU            (DESC(MTU).optArg.argInt)
-#define VALUE_OPT_CRLF           10
-#define VALUE_OPT_X509FMTDER     11
+#define VALUE_OPT_CRLF           11
+#define VALUE_OPT_X509FMTDER     12
 #define VALUE_OPT_FINGERPRINT    'f'
-#define VALUE_OPT_DISABLE_EXTENSIONS 13
-#define VALUE_OPT_PRINT_CERT     14
-#define VALUE_OPT_RECORDSIZE     15
+#define VALUE_OPT_DISABLE_EXTENSIONS 14
+#define VALUE_OPT_PRINT_CERT     15
+#define VALUE_OPT_RECORDSIZE     16
 
 #define OPT_VALUE_RECORDSIZE     (DESC(RECORDSIZE).optArg.argInt)
-#define VALUE_OPT_DH_BITS        16
+#define VALUE_OPT_DH_BITS        17
 
 #define OPT_VALUE_DH_BITS        (DESC(DH_BITS).optArg.argInt)
-#define VALUE_OPT_PRIORITY       17
-#define VALUE_OPT_X509CAFILE     18
-#define VALUE_OPT_X509CRLFILE    19
-#define VALUE_OPT_PGPKEYFILE     20
-#define VALUE_OPT_PGPKEYRING     21
-#define VALUE_OPT_PGPCERTFILE    22
-#define VALUE_OPT_X509KEYFILE    23
-#define VALUE_OPT_X509CERTFILE   24
-#define VALUE_OPT_PGPSUBKEY      25
-#define VALUE_OPT_SRPUSERNAME    26
-#define VALUE_OPT_SRPPASSWD      27
-#define VALUE_OPT_PSKUSERNAME    28
-#define VALUE_OPT_PSKKEY         29
+#define VALUE_OPT_PRIORITY       18
+#define VALUE_OPT_X509CAFILE     19
+#define VALUE_OPT_X509CRLFILE    20
+#define VALUE_OPT_PGPKEYFILE     21
+#define VALUE_OPT_PGPKEYRING     22
+#define VALUE_OPT_PGPCERTFILE    23
+#define VALUE_OPT_X509KEYFILE    24
+#define VALUE_OPT_X509CERTFILE   25
+#define VALUE_OPT_PGPSUBKEY      26
+#define VALUE_OPT_SRPUSERNAME    27
+#define VALUE_OPT_SRPPASSWD      28
+#define VALUE_OPT_PSKUSERNAME    29
+#define VALUE_OPT_PSKKEY         30
 #define VALUE_OPT_PORT           'p'
-#define VALUE_OPT_INSECURE       31
-#define VALUE_OPT_BENCHMARK_CIPHERS 32
-#define VALUE_OPT_BENCHMARK_SOFT_CIPHERS 129
-#define VALUE_OPT_BENCHMARK_TLS_KX 130
-#define VALUE_OPT_BENCHMARK_TLS_CIPHERS 131
+#define VALUE_OPT_INSECURE       32
+#define VALUE_OPT_BENCHMARK_CIPHERS 129
+#define VALUE_OPT_BENCHMARK_SOFT_CIPHERS 130
+#define VALUE_OPT_BENCHMARK_TLS_KX 131
+#define VALUE_OPT_BENCHMARK_TLS_CIPHERS 132
 #define VALUE_OPT_LIST           'l'
 #define VALUE_OPT_HELP          'h'
 #define VALUE_OPT_MORE_HELP     '!'
index e2a1deb2878a4e2282601b0eeca1e98ccd36bfe8..95180b7ba6ec7ca8d9a5ca5aaf31e035141c03f5 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -626,7 +626,7 @@ init_tls_session (const char *hostname)
     }
 
   if (HAVE_OPT(HEARTBEAT))
-    fprintf (stderr, "Set HeartBeat policy: %d.\n", gnutls_heartbeat_allow (session));
+    gnutls_heartbeat_enable (session, GNUTLS_HB_PEER_ALLOWED_TO_SEND);
 
 #ifdef ENABLE_SESSION_TICKET
   if (disable_extensions == 0 && !HAVE_OPT(NOTICKET)t)
@@ -946,7 +946,6 @@ after_handshake:
 
       if (inp == IN_KEYBOARD)
       {
-         if (HAVE_OPT(HEARTBEAT)) fprintf (stderr, "*** HeartBeat: %zu\n", gnutls_heartbeat_ping_rnd (hd.session));
           if ((bytes = read (fileno (stdin), buffer, MAX_BUF - 1)) <= 0)
             {
               if (hd.secure == 0)
index 1d6bd62f396a126021ad9bbe17a7cb0355d22cb7..f27ed0893b412b11a8fb17d966b76c59fc23e2a2 100644 (file)
@@ -2,7 +2,7 @@
  *  
  *  DO NOT EDIT THIS FILE   (serv-args.c)
  *  
- *  It has been AutoGen-ed  May  9, 2012 at 08:04:45 PM by AutoGen 5.16
+ *  It has been AutoGen-ed  August 30, 2012 at 09:58:05 PM by AutoGen 5.16
  *  From the definitions    serv-args.def
  *  and the template file   options
  *
@@ -67,7 +67,7 @@ extern FILE * option_usage_fp;
 /*
  *  gnutls-serv option static const strings
  */
-static char const gnutls_serv_opt_strs[2947] =
+static char const gnutls_serv_opt_strs[2994] =
 /*     0 */ "gnutls-serv @VERSION@\n"
             "Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.\n"
             "This is free software. It is licensed for use, modification and\n"
@@ -117,82 +117,85 @@ static char const gnutls_serv_opt_strs[2947] =
 /*  1330 */ "Require a client certificate\0"
 /*  1359 */ "REQUIRE_CLIENT_CERT\0"
 /*  1379 */ "require-client-cert\0"
-/*  1399 */ "Use DER format for certificates to read from\0"
-/*  1444 */ "X509FMTDER\0"
-/*  1455 */ "x509fmtder\0"
-/*  1466 */ "Priorities string\0"
-/*  1484 */ "PRIORITY\0"
-/*  1493 */ "priority\0"
-/*  1502 */ "DH params file to use\0"
-/*  1524 */ "DHPARAMS\0"
-/*  1533 */ "dhparams\0"
-/*  1542 */ "Certificate file or PKCS #11 URL to use\0"
-/*  1582 */ "X509CAFILE\0"
-/*  1593 */ "x509cafile\0"
-/*  1604 */ "CRL file to use\0"
-/*  1620 */ "X509CRLFILE\0"
-/*  1632 */ "x509crlfile\0"
-/*  1644 */ "PGP Key file to use\0"
-/*  1664 */ "PGPKEYFILE\0"
-/*  1675 */ "pgpkeyfile\0"
-/*  1686 */ "PGP Key ring file to use\0"
-/*  1711 */ "PGPKEYRING\0"
-/*  1722 */ "pgpkeyring\0"
-/*  1733 */ "PGP Public Key (certificate) file to use\0"
-/*  1774 */ "PGPCERTFILE\0"
-/*  1786 */ "pgpcertfile\0"
-/*  1798 */ "X.509 key file or PKCS #11 URL to use\0"
-/*  1836 */ "X509KEYFILE\0"
-/*  1848 */ "x509keyfile\0"
-/*  1860 */ "X.509 Certificate file or PKCS #11 URL to use\0"
-/*  1906 */ "X509CERTFILE\0"
-/*  1919 */ "x509certfile\0"
-/*  1932 */ "Alternative X.509 key file or PKCS #11 URL to use\0"
-/*  1982 */ "X509DSAKEYFILE\0"
-/*  1997 */ "x509dsakeyfile\0"
-/*  2012 */ "Alternative X.509 Certificate file or PKCS #11 URL to use\0"
-/*  2070 */ "X509DSACERTFILE\0"
-/*  2086 */ "x509dsacertfile\0"
-/*  2102 */ "X509ECCKEYFILE\0"
-/*  2117 */ "x509ecckeyfile\0"
-/*  2132 */ "X509ECCCERTFILE\0"
-/*  2148 */ "x509ecccertfile\0"
-/*  2164 */ "PGP subkey to use (hex or auto)\0"
-/*  2196 */ "PGPSUBKEY\0"
-/*  2206 */ "pgpsubkey\0"
-/*  2216 */ "SRP password file to use\0"
-/*  2241 */ "SRPPASSWD\0"
-/*  2251 */ "srppasswd\0"
-/*  2261 */ "SRP password configuration file to use\0"
-/*  2300 */ "SRPPASSWDCONF\0"
-/*  2314 */ "srppasswdconf\0"
-/*  2328 */ "PSK password file to use\0"
-/*  2353 */ "PSKPASSWD\0"
-/*  2363 */ "pskpasswd\0"
-/*  2373 */ "PSK identity hint to use\0"
-/*  2398 */ "PSKHINT\0"
-/*  2406 */ "pskhint\0"
-/*  2414 */ "The port to connect to\0"
-/*  2437 */ "PORT\0"
-/*  2442 */ "port\0"
-/*  2447 */ "Print a list of the supported algorithms and modes\0"
-/*  2498 */ "LIST\0"
-/*  2503 */ "list\0"
-/*  2508 */ "Display extended usage information and exit\0"
-/*  2552 */ "help\0"
-/*  2557 */ "Extended usage information passed thru pager\0"
-/*  2602 */ "more-help\0"
-/*  2612 */ "Output version information and exit\0"
-/*  2648 */ "version\0"
-/*  2656 */ "GNUTLS_SERV\0"
-/*  2668 */ "gnutls-serv - GnuTLS server - Ver. @VERSION@\n"
+/*  1399 */ "Activate heartbeat support\0"
+/*  1426 */ "HEARTBEAT\0"
+/*  1436 */ "heartbeat\0"
+/*  1446 */ "Use DER format for certificates to read from\0"
+/*  1491 */ "X509FMTDER\0"
+/*  1502 */ "x509fmtder\0"
+/*  1513 */ "Priorities string\0"
+/*  1531 */ "PRIORITY\0"
+/*  1540 */ "priority\0"
+/*  1549 */ "DH params file to use\0"
+/*  1571 */ "DHPARAMS\0"
+/*  1580 */ "dhparams\0"
+/*  1589 */ "Certificate file or PKCS #11 URL to use\0"
+/*  1629 */ "X509CAFILE\0"
+/*  1640 */ "x509cafile\0"
+/*  1651 */ "CRL file to use\0"
+/*  1667 */ "X509CRLFILE\0"
+/*  1679 */ "x509crlfile\0"
+/*  1691 */ "PGP Key file to use\0"
+/*  1711 */ "PGPKEYFILE\0"
+/*  1722 */ "pgpkeyfile\0"
+/*  1733 */ "PGP Key ring file to use\0"
+/*  1758 */ "PGPKEYRING\0"
+/*  1769 */ "pgpkeyring\0"
+/*  1780 */ "PGP Public Key (certificate) file to use\0"
+/*  1821 */ "PGPCERTFILE\0"
+/*  1833 */ "pgpcertfile\0"
+/*  1845 */ "X.509 key file or PKCS #11 URL to use\0"
+/*  1883 */ "X509KEYFILE\0"
+/*  1895 */ "x509keyfile\0"
+/*  1907 */ "X.509 Certificate file or PKCS #11 URL to use\0"
+/*  1953 */ "X509CERTFILE\0"
+/*  1966 */ "x509certfile\0"
+/*  1979 */ "Alternative X.509 key file or PKCS #11 URL to use\0"
+/*  2029 */ "X509DSAKEYFILE\0"
+/*  2044 */ "x509dsakeyfile\0"
+/*  2059 */ "Alternative X.509 Certificate file or PKCS #11 URL to use\0"
+/*  2117 */ "X509DSACERTFILE\0"
+/*  2133 */ "x509dsacertfile\0"
+/*  2149 */ "X509ECCKEYFILE\0"
+/*  2164 */ "x509ecckeyfile\0"
+/*  2179 */ "X509ECCCERTFILE\0"
+/*  2195 */ "x509ecccertfile\0"
+/*  2211 */ "PGP subkey to use (hex or auto)\0"
+/*  2243 */ "PGPSUBKEY\0"
+/*  2253 */ "pgpsubkey\0"
+/*  2263 */ "SRP password file to use\0"
+/*  2288 */ "SRPPASSWD\0"
+/*  2298 */ "srppasswd\0"
+/*  2308 */ "SRP password configuration file to use\0"
+/*  2347 */ "SRPPASSWDCONF\0"
+/*  2361 */ "srppasswdconf\0"
+/*  2375 */ "PSK password file to use\0"
+/*  2400 */ "PSKPASSWD\0"
+/*  2410 */ "pskpasswd\0"
+/*  2420 */ "PSK identity hint to use\0"
+/*  2445 */ "PSKHINT\0"
+/*  2453 */ "pskhint\0"
+/*  2461 */ "The port to connect to\0"
+/*  2484 */ "PORT\0"
+/*  2489 */ "port\0"
+/*  2494 */ "Print a list of the supported algorithms and modes\0"
+/*  2545 */ "LIST\0"
+/*  2550 */ "list\0"
+/*  2555 */ "Display extended usage information and exit\0"
+/*  2599 */ "help\0"
+/*  2604 */ "Extended usage information passed thru pager\0"
+/*  2649 */ "more-help\0"
+/*  2659 */ "Output version information and exit\0"
+/*  2695 */ "version\0"
+/*  2703 */ "GNUTLS_SERV\0"
+/*  2715 */ "gnutls-serv - GnuTLS server - Ver. @VERSION@\n"
             "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
-/*  2771 */ "bug-gnutls@gnu.org\0"
-/*  2790 */ "\n\n\0"
-/*  2793 */ "\n"
+/*  2818 */ "bug-gnutls@gnu.org\0"
+/*  2837 */ "\n\n\0"
+/*  2840 */ "\n"
             "Server program that listens to incoming TLS connections.\n\0"
-/*  2852 */ "gnutls-serv @VERSION@\0"
-/*  2874 */ "Usage: gnutls-serv [options]\n"
+/*  2899 */ "gnutls-serv @VERSION@\0"
+/*  2921 */ "Usage: gnutls-serv [options]\n"
             "gnutls-serv --help for usage instructions.\n";
 
 /*
@@ -285,201 +288,209 @@ static char const gnutls_serv_opt_strs[2947] =
 #define REQUIRE_CLIENT_CERT_name      (gnutls_serv_opt_strs+1379)
 #define REQUIRE_CLIENT_CERT_FLAGS     (OPTST_DISABLED)
 
+/*
+ *  heartbeat option description:
+ */
+#define HEARTBEAT_DESC      (gnutls_serv_opt_strs+1399)
+#define HEARTBEAT_NAME      (gnutls_serv_opt_strs+1426)
+#define HEARTBEAT_name      (gnutls_serv_opt_strs+1436)
+#define HEARTBEAT_FLAGS     (OPTST_DISABLED)
+
 /*
  *  x509fmtder option description:
  */
-#define X509FMTDER_DESC      (gnutls_serv_opt_strs+1399)
-#define X509FMTDER_NAME      (gnutls_serv_opt_strs+1444)
-#define X509FMTDER_name      (gnutls_serv_opt_strs+1455)
+#define X509FMTDER_DESC      (gnutls_serv_opt_strs+1446)
+#define X509FMTDER_NAME      (gnutls_serv_opt_strs+1491)
+#define X509FMTDER_name      (gnutls_serv_opt_strs+1502)
 #define X509FMTDER_FLAGS     (OPTST_DISABLED)
 
 /*
  *  priority option description:
  */
-#define PRIORITY_DESC      (gnutls_serv_opt_strs+1466)
-#define PRIORITY_NAME      (gnutls_serv_opt_strs+1484)
-#define PRIORITY_name      (gnutls_serv_opt_strs+1493)
+#define PRIORITY_DESC      (gnutls_serv_opt_strs+1513)
+#define PRIORITY_NAME      (gnutls_serv_opt_strs+1531)
+#define PRIORITY_name      (gnutls_serv_opt_strs+1540)
 #define PRIORITY_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  dhparams option description:
  */
-#define DHPARAMS_DESC      (gnutls_serv_opt_strs+1502)
-#define DHPARAMS_NAME      (gnutls_serv_opt_strs+1524)
-#define DHPARAMS_name      (gnutls_serv_opt_strs+1533)
+#define DHPARAMS_DESC      (gnutls_serv_opt_strs+1549)
+#define DHPARAMS_NAME      (gnutls_serv_opt_strs+1571)
+#define DHPARAMS_name      (gnutls_serv_opt_strs+1580)
 #define DHPARAMS_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  x509cafile option description:
  */
-#define X509CAFILE_DESC      (gnutls_serv_opt_strs+1542)
-#define X509CAFILE_NAME      (gnutls_serv_opt_strs+1582)
-#define X509CAFILE_name      (gnutls_serv_opt_strs+1593)
+#define X509CAFILE_DESC      (gnutls_serv_opt_strs+1589)
+#define X509CAFILE_NAME      (gnutls_serv_opt_strs+1629)
+#define X509CAFILE_name      (gnutls_serv_opt_strs+1640)
 #define X509CAFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509crlfile option description:
  */
-#define X509CRLFILE_DESC      (gnutls_serv_opt_strs+1604)
-#define X509CRLFILE_NAME      (gnutls_serv_opt_strs+1620)
-#define X509CRLFILE_name      (gnutls_serv_opt_strs+1632)
+#define X509CRLFILE_DESC      (gnutls_serv_opt_strs+1651)
+#define X509CRLFILE_NAME      (gnutls_serv_opt_strs+1667)
+#define X509CRLFILE_name      (gnutls_serv_opt_strs+1679)
 #define X509CRLFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pgpkeyfile option description:
  */
-#define PGPKEYFILE_DESC      (gnutls_serv_opt_strs+1644)
-#define PGPKEYFILE_NAME      (gnutls_serv_opt_strs+1664)
-#define PGPKEYFILE_name      (gnutls_serv_opt_strs+1675)
+#define PGPKEYFILE_DESC      (gnutls_serv_opt_strs+1691)
+#define PGPKEYFILE_NAME      (gnutls_serv_opt_strs+1711)
+#define PGPKEYFILE_name      (gnutls_serv_opt_strs+1722)
 #define PGPKEYFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pgpkeyring option description:
  */
-#define PGPKEYRING_DESC      (gnutls_serv_opt_strs+1686)
-#define PGPKEYRING_NAME      (gnutls_serv_opt_strs+1711)
-#define PGPKEYRING_name      (gnutls_serv_opt_strs+1722)
+#define PGPKEYRING_DESC      (gnutls_serv_opt_strs+1733)
+#define PGPKEYRING_NAME      (gnutls_serv_opt_strs+1758)
+#define PGPKEYRING_name      (gnutls_serv_opt_strs+1769)
 #define PGPKEYRING_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pgpcertfile option description:
  */
-#define PGPCERTFILE_DESC      (gnutls_serv_opt_strs+1733)
-#define PGPCERTFILE_NAME      (gnutls_serv_opt_strs+1774)
-#define PGPCERTFILE_name      (gnutls_serv_opt_strs+1786)
+#define PGPCERTFILE_DESC      (gnutls_serv_opt_strs+1780)
+#define PGPCERTFILE_NAME      (gnutls_serv_opt_strs+1821)
+#define PGPCERTFILE_name      (gnutls_serv_opt_strs+1833)
 #define PGPCERTFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  x509keyfile option description:
  */
-#define X509KEYFILE_DESC      (gnutls_serv_opt_strs+1798)
-#define X509KEYFILE_NAME      (gnutls_serv_opt_strs+1836)
-#define X509KEYFILE_name      (gnutls_serv_opt_strs+1848)
+#define X509KEYFILE_DESC      (gnutls_serv_opt_strs+1845)
+#define X509KEYFILE_NAME      (gnutls_serv_opt_strs+1883)
+#define X509KEYFILE_name      (gnutls_serv_opt_strs+1895)
 #define X509KEYFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509certfile option description:
  */
-#define X509CERTFILE_DESC      (gnutls_serv_opt_strs+1860)
-#define X509CERTFILE_NAME      (gnutls_serv_opt_strs+1906)
-#define X509CERTFILE_name      (gnutls_serv_opt_strs+1919)
+#define X509CERTFILE_DESC      (gnutls_serv_opt_strs+1907)
+#define X509CERTFILE_NAME      (gnutls_serv_opt_strs+1953)
+#define X509CERTFILE_name      (gnutls_serv_opt_strs+1966)
 #define X509CERTFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509dsakeyfile option description:
  */
-#define X509DSAKEYFILE_DESC      (gnutls_serv_opt_strs+1932)
-#define X509DSAKEYFILE_NAME      (gnutls_serv_opt_strs+1982)
-#define X509DSAKEYFILE_name      (gnutls_serv_opt_strs+1997)
+#define X509DSAKEYFILE_DESC      (gnutls_serv_opt_strs+1979)
+#define X509DSAKEYFILE_NAME      (gnutls_serv_opt_strs+2029)
+#define X509DSAKEYFILE_name      (gnutls_serv_opt_strs+2044)
 #define X509DSAKEYFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509dsacertfile option description:
  */
-#define X509DSACERTFILE_DESC      (gnutls_serv_opt_strs+2012)
-#define X509DSACERTFILE_NAME      (gnutls_serv_opt_strs+2070)
-#define X509DSACERTFILE_name      (gnutls_serv_opt_strs+2086)
+#define X509DSACERTFILE_DESC      (gnutls_serv_opt_strs+2059)
+#define X509DSACERTFILE_NAME      (gnutls_serv_opt_strs+2117)
+#define X509DSACERTFILE_name      (gnutls_serv_opt_strs+2133)
 #define X509DSACERTFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509ecckeyfile option description:
  */
-#define X509ECCKEYFILE_DESC      (gnutls_serv_opt_strs+1932)
-#define X509ECCKEYFILE_NAME      (gnutls_serv_opt_strs+2102)
-#define X509ECCKEYFILE_name      (gnutls_serv_opt_strs+2117)
+#define X509ECCKEYFILE_DESC      (gnutls_serv_opt_strs+1979)
+#define X509ECCKEYFILE_NAME      (gnutls_serv_opt_strs+2149)
+#define X509ECCKEYFILE_name      (gnutls_serv_opt_strs+2164)
 #define X509ECCKEYFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  x509ecccertfile option description:
  */
-#define X509ECCCERTFILE_DESC      (gnutls_serv_opt_strs+2012)
-#define X509ECCCERTFILE_NAME      (gnutls_serv_opt_strs+2132)
-#define X509ECCCERTFILE_name      (gnutls_serv_opt_strs+2148)
+#define X509ECCCERTFILE_DESC      (gnutls_serv_opt_strs+2059)
+#define X509ECCCERTFILE_NAME      (gnutls_serv_opt_strs+2179)
+#define X509ECCCERTFILE_name      (gnutls_serv_opt_strs+2195)
 #define X509ECCCERTFILE_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  pgpsubkey option description:
  */
-#define PGPSUBKEY_DESC      (gnutls_serv_opt_strs+2164)
-#define PGPSUBKEY_NAME      (gnutls_serv_opt_strs+2196)
-#define PGPSUBKEY_name      (gnutls_serv_opt_strs+2206)
+#define PGPSUBKEY_DESC      (gnutls_serv_opt_strs+2211)
+#define PGPSUBKEY_NAME      (gnutls_serv_opt_strs+2243)
+#define PGPSUBKEY_name      (gnutls_serv_opt_strs+2253)
 #define PGPSUBKEY_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  srppasswd option description:
  */
-#define SRPPASSWD_DESC      (gnutls_serv_opt_strs+2216)
-#define SRPPASSWD_NAME      (gnutls_serv_opt_strs+2241)
-#define SRPPASSWD_name      (gnutls_serv_opt_strs+2251)
+#define SRPPASSWD_DESC      (gnutls_serv_opt_strs+2263)
+#define SRPPASSWD_NAME      (gnutls_serv_opt_strs+2288)
+#define SRPPASSWD_name      (gnutls_serv_opt_strs+2298)
 #define SRPPASSWD_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  srppasswdconf option description:
  */
-#define SRPPASSWDCONF_DESC      (gnutls_serv_opt_strs+2261)
-#define SRPPASSWDCONF_NAME      (gnutls_serv_opt_strs+2300)
-#define SRPPASSWDCONF_name      (gnutls_serv_opt_strs+2314)
+#define SRPPASSWDCONF_DESC      (gnutls_serv_opt_strs+2308)
+#define SRPPASSWDCONF_NAME      (gnutls_serv_opt_strs+2347)
+#define SRPPASSWDCONF_name      (gnutls_serv_opt_strs+2361)
 #define SRPPASSWDCONF_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pskpasswd option description:
  */
-#define PSKPASSWD_DESC      (gnutls_serv_opt_strs+2328)
-#define PSKPASSWD_NAME      (gnutls_serv_opt_strs+2353)
-#define PSKPASSWD_name      (gnutls_serv_opt_strs+2363)
+#define PSKPASSWD_DESC      (gnutls_serv_opt_strs+2375)
+#define PSKPASSWD_NAME      (gnutls_serv_opt_strs+2400)
+#define PSKPASSWD_name      (gnutls_serv_opt_strs+2410)
 #define PSKPASSWD_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
 
 /*
  *  pskhint option description:
  */
-#define PSKHINT_DESC      (gnutls_serv_opt_strs+2373)
-#define PSKHINT_NAME      (gnutls_serv_opt_strs+2398)
-#define PSKHINT_name      (gnutls_serv_opt_strs+2406)
+#define PSKHINT_DESC      (gnutls_serv_opt_strs+2420)
+#define PSKHINT_NAME      (gnutls_serv_opt_strs+2445)
+#define PSKHINT_name      (gnutls_serv_opt_strs+2453)
 #define PSKHINT_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
 
 /*
  *  port option description:
  */
-#define PORT_DESC      (gnutls_serv_opt_strs+2414)
-#define PORT_NAME      (gnutls_serv_opt_strs+2437)
-#define PORT_name      (gnutls_serv_opt_strs+2442)
+#define PORT_DESC      (gnutls_serv_opt_strs+2461)
+#define PORT_NAME      (gnutls_serv_opt_strs+2484)
+#define PORT_name      (gnutls_serv_opt_strs+2489)
 #define PORT_FLAGS     (OPTST_DISABLED \
         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
 
 /*
  *  list option description:
  */
-#define LIST_DESC      (gnutls_serv_opt_strs+2447)
-#define LIST_NAME      (gnutls_serv_opt_strs+2498)
-#define LIST_name      (gnutls_serv_opt_strs+2503)
+#define LIST_DESC      (gnutls_serv_opt_strs+2494)
+#define LIST_NAME      (gnutls_serv_opt_strs+2545)
+#define LIST_name      (gnutls_serv_opt_strs+2550)
 #define LIST_FLAGS     (OPTST_DISABLED)
 
 /*
  *  Help/More_Help/Version option descriptions:
  */
-#define HELP_DESC       (gnutls_serv_opt_strs+2508)
-#define HELP_name       (gnutls_serv_opt_strs+2552)
+#define HELP_DESC       (gnutls_serv_opt_strs+2555)
+#define HELP_name       (gnutls_serv_opt_strs+2599)
 #ifdef HAVE_WORKING_FORK
-#define MORE_HELP_DESC  (gnutls_serv_opt_strs+2557)
-#define MORE_HELP_name  (gnutls_serv_opt_strs+2602)
+#define MORE_HELP_DESC  (gnutls_serv_opt_strs+2604)
+#define MORE_HELP_name  (gnutls_serv_opt_strs+2649)
 #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
 #else
 #define MORE_HELP_DESC  NULL
@@ -492,8 +503,8 @@ static char const gnutls_serv_opt_strs[2947] =
 #  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
                          OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
 #endif
-#define VER_DESC        (gnutls_serv_opt_strs+2612)
-#define VER_name        (gnutls_serv_opt_strs+2648)
+#define VER_DESC        (gnutls_serv_opt_strs+2659)
+#define VER_name        (gnutls_serv_opt_strs+2695)
 /*
  *  Declare option callback procedures
  */
@@ -648,8 +659,20 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ REQUIRE_CLIENT_CERT_DESC, REQUIRE_CLIENT_CERT_NAME, REQUIRE_CLIENT_CERT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 11, VALUE_OPT_X509FMTDER,
-     /* equiv idx, value */ 11, VALUE_OPT_X509FMTDER,
+  {  /* entry idx, value */ 11, VALUE_OPT_HEARTBEAT,
+     /* equiv idx, value */ 11, VALUE_OPT_HEARTBEAT,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ HEARTBEAT_FLAGS, 0,
+     /* last opt argumnt */ { NULL }, /* --heartbeat */
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ HEARTBEAT_DESC, HEARTBEAT_NAME, HEARTBEAT_name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 12, VALUE_OPT_X509FMTDER,
+     /* equiv idx, value */ 12, VALUE_OPT_X509FMTDER,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509FMTDER_FLAGS, 0,
@@ -660,8 +683,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509FMTDER_DESC, X509FMTDER_NAME, X509FMTDER_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 12, VALUE_OPT_PRIORITY,
-     /* equiv idx, value */ 12, VALUE_OPT_PRIORITY,
+  {  /* entry idx, value */ 13, VALUE_OPT_PRIORITY,
+     /* equiv idx, value */ 13, VALUE_OPT_PRIORITY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PRIORITY_FLAGS, 0,
@@ -672,8 +695,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PRIORITY_DESC, PRIORITY_NAME, PRIORITY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 13, VALUE_OPT_DHPARAMS,
-     /* equiv idx, value */ 13, VALUE_OPT_DHPARAMS,
+  {  /* entry idx, value */ 14, VALUE_OPT_DHPARAMS,
+     /* equiv idx, value */ 14, VALUE_OPT_DHPARAMS,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ DHPARAMS_FLAGS, 0,
@@ -684,8 +707,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ DHPARAMS_DESC, DHPARAMS_NAME, DHPARAMS_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 14, VALUE_OPT_X509CAFILE,
-     /* equiv idx, value */ 14, VALUE_OPT_X509CAFILE,
+  {  /* entry idx, value */ 15, VALUE_OPT_X509CAFILE,
+     /* equiv idx, value */ 15, VALUE_OPT_X509CAFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509CAFILE_FLAGS, 0,
@@ -696,8 +719,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509CAFILE_DESC, X509CAFILE_NAME, X509CAFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 15, VALUE_OPT_X509CRLFILE,
-     /* equiv idx, value */ 15, VALUE_OPT_X509CRLFILE,
+  {  /* entry idx, value */ 16, VALUE_OPT_X509CRLFILE,
+     /* equiv idx, value */ 16, VALUE_OPT_X509CRLFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509CRLFILE_FLAGS, 0,
@@ -708,8 +731,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509CRLFILE_DESC, X509CRLFILE_NAME, X509CRLFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 16, VALUE_OPT_PGPKEYFILE,
-     /* equiv idx, value */ 16, VALUE_OPT_PGPKEYFILE,
+  {  /* entry idx, value */ 17, VALUE_OPT_PGPKEYFILE,
+     /* equiv idx, value */ 17, VALUE_OPT_PGPKEYFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPKEYFILE_FLAGS, 0,
@@ -720,8 +743,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPKEYFILE_DESC, PGPKEYFILE_NAME, PGPKEYFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 17, VALUE_OPT_PGPKEYRING,
-     /* equiv idx, value */ 17, VALUE_OPT_PGPKEYRING,
+  {  /* entry idx, value */ 18, VALUE_OPT_PGPKEYRING,
+     /* equiv idx, value */ 18, VALUE_OPT_PGPKEYRING,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPKEYRING_FLAGS, 0,
@@ -732,8 +755,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPKEYRING_DESC, PGPKEYRING_NAME, PGPKEYRING_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 18, VALUE_OPT_PGPCERTFILE,
-     /* equiv idx, value */ 18, VALUE_OPT_PGPCERTFILE,
+  {  /* entry idx, value */ 19, VALUE_OPT_PGPCERTFILE,
+     /* equiv idx, value */ 19, VALUE_OPT_PGPCERTFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPCERTFILE_FLAGS, 0,
@@ -744,8 +767,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPCERTFILE_DESC, PGPCERTFILE_NAME, PGPCERTFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 19, VALUE_OPT_X509KEYFILE,
-     /* equiv idx, value */ 19, VALUE_OPT_X509KEYFILE,
+  {  /* entry idx, value */ 20, VALUE_OPT_X509KEYFILE,
+     /* equiv idx, value */ 20, VALUE_OPT_X509KEYFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509KEYFILE_FLAGS, 0,
@@ -756,8 +779,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509KEYFILE_DESC, X509KEYFILE_NAME, X509KEYFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 20, VALUE_OPT_X509CERTFILE,
-     /* equiv idx, value */ 20, VALUE_OPT_X509CERTFILE,
+  {  /* entry idx, value */ 21, VALUE_OPT_X509CERTFILE,
+     /* equiv idx, value */ 21, VALUE_OPT_X509CERTFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509CERTFILE_FLAGS, 0,
@@ -768,8 +791,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509CERTFILE_DESC, X509CERTFILE_NAME, X509CERTFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 21, VALUE_OPT_X509DSAKEYFILE,
-     /* equiv idx, value */ 21, VALUE_OPT_X509DSAKEYFILE,
+  {  /* entry idx, value */ 22, VALUE_OPT_X509DSAKEYFILE,
+     /* equiv idx, value */ 22, VALUE_OPT_X509DSAKEYFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509DSAKEYFILE_FLAGS, 0,
@@ -780,8 +803,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509DSAKEYFILE_DESC, X509DSAKEYFILE_NAME, X509DSAKEYFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 22, VALUE_OPT_X509DSACERTFILE,
-     /* equiv idx, value */ 22, VALUE_OPT_X509DSACERTFILE,
+  {  /* entry idx, value */ 23, VALUE_OPT_X509DSACERTFILE,
+     /* equiv idx, value */ 23, VALUE_OPT_X509DSACERTFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509DSACERTFILE_FLAGS, 0,
@@ -792,8 +815,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509DSACERTFILE_DESC, X509DSACERTFILE_NAME, X509DSACERTFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 23, VALUE_OPT_X509ECCKEYFILE,
-     /* equiv idx, value */ 23, VALUE_OPT_X509ECCKEYFILE,
+  {  /* entry idx, value */ 24, VALUE_OPT_X509ECCKEYFILE,
+     /* equiv idx, value */ 24, VALUE_OPT_X509ECCKEYFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509ECCKEYFILE_FLAGS, 0,
@@ -804,8 +827,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509ECCKEYFILE_DESC, X509ECCKEYFILE_NAME, X509ECCKEYFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 24, VALUE_OPT_X509ECCCERTFILE,
-     /* equiv idx, value */ 24, VALUE_OPT_X509ECCCERTFILE,
+  {  /* entry idx, value */ 25, VALUE_OPT_X509ECCCERTFILE,
+     /* equiv idx, value */ 25, VALUE_OPT_X509ECCCERTFILE,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ X509ECCCERTFILE_FLAGS, 0,
@@ -816,8 +839,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ X509ECCCERTFILE_DESC, X509ECCCERTFILE_NAME, X509ECCCERTFILE_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 25, VALUE_OPT_PGPSUBKEY,
-     /* equiv idx, value */ 25, VALUE_OPT_PGPSUBKEY,
+  {  /* entry idx, value */ 26, VALUE_OPT_PGPSUBKEY,
+     /* equiv idx, value */ 26, VALUE_OPT_PGPSUBKEY,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PGPSUBKEY_FLAGS, 0,
@@ -828,8 +851,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PGPSUBKEY_DESC, PGPSUBKEY_NAME, PGPSUBKEY_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 26, VALUE_OPT_SRPPASSWD,
-     /* equiv idx, value */ 26, VALUE_OPT_SRPPASSWD,
+  {  /* entry idx, value */ 27, VALUE_OPT_SRPPASSWD,
+     /* equiv idx, value */ 27, VALUE_OPT_SRPPASSWD,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ SRPPASSWD_FLAGS, 0,
@@ -840,8 +863,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ SRPPASSWD_DESC, SRPPASSWD_NAME, SRPPASSWD_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 27, VALUE_OPT_SRPPASSWDCONF,
-     /* equiv idx, value */ 27, VALUE_OPT_SRPPASSWDCONF,
+  {  /* entry idx, value */ 28, VALUE_OPT_SRPPASSWDCONF,
+     /* equiv idx, value */ 28, VALUE_OPT_SRPPASSWDCONF,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ SRPPASSWDCONF_FLAGS, 0,
@@ -852,8 +875,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ SRPPASSWDCONF_DESC, SRPPASSWDCONF_NAME, SRPPASSWDCONF_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 28, VALUE_OPT_PSKPASSWD,
-     /* equiv idx, value */ 28, VALUE_OPT_PSKPASSWD,
+  {  /* entry idx, value */ 29, VALUE_OPT_PSKPASSWD,
+     /* equiv idx, value */ 29, VALUE_OPT_PSKPASSWD,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PSKPASSWD_FLAGS, 0,
@@ -864,8 +887,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PSKPASSWD_DESC, PSKPASSWD_NAME, PSKPASSWD_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 29, VALUE_OPT_PSKHINT,
-     /* equiv idx, value */ 29, VALUE_OPT_PSKHINT,
+  {  /* entry idx, value */ 30, VALUE_OPT_PSKHINT,
+     /* equiv idx, value */ 30, VALUE_OPT_PSKHINT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PSKHINT_FLAGS, 0,
@@ -876,8 +899,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PSKHINT_DESC, PSKHINT_NAME, PSKHINT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 30, VALUE_OPT_PORT,
-     /* equiv idx, value */ 30, VALUE_OPT_PORT,
+  {  /* entry idx, value */ 31, VALUE_OPT_PORT,
+     /* equiv idx, value */ 31, VALUE_OPT_PORT,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ PORT_FLAGS, 0,
@@ -888,8 +911,8 @@ static tOptDesc optDesc[OPTION_CT] = {
      /* desc, NAME, name */ PORT_DESC, PORT_NAME, PORT_name,
      /* disablement strs */ NULL, NULL },
 
-  {  /* entry idx, value */ 31, VALUE_OPT_LIST,
-     /* equiv idx, value */ 31, VALUE_OPT_LIST,
+  {  /* entry idx, value */ 32, VALUE_OPT_LIST,
+     /* equiv idx, value */ 32, VALUE_OPT_LIST,
      /* equivalenced to  */ NO_EQUIVALENT,
      /* min, max, act ct */ 0, 1, 0,
      /* opt state flags  */ LIST_FLAGS, 0,
@@ -944,14 +967,14 @@ static tOptDesc optDesc[OPTION_CT] = {
  *
  *  Define the gnutls-serv Option Environment
  */
-#define zPROGNAME       (gnutls_serv_opt_strs+2656)
-#define zUsageTitle     (gnutls_serv_opt_strs+2668)
+#define zPROGNAME       (gnutls_serv_opt_strs+2703)
+#define zUsageTitle     (gnutls_serv_opt_strs+2715)
 #define zRcName         NULL
 #define apzHomeList     NULL
-#define zBugsAddr       (gnutls_serv_opt_strs+2771)
-#define zExplain        (gnutls_serv_opt_strs+2790)
-#define zDetail         (gnutls_serv_opt_strs+2793)
-#define zFullVersion    (gnutls_serv_opt_strs+2852)
+#define zBugsAddr       (gnutls_serv_opt_strs+2818)
+#define zExplain        (gnutls_serv_opt_strs+2837)
+#define zDetail         (gnutls_serv_opt_strs+2840)
+#define zFullVersion    (gnutls_serv_opt_strs+2899)
 /* extracted from optcode.tlib near line 350 */
 
 #if defined(ENABLE_NLS)
@@ -965,7 +988,7 @@ static tOptDesc optDesc[OPTION_CT] = {
 
 #define gnutls_serv_full_usage (NULL)
 
-#define gnutls_serv_short_usage (gnutls_serv_opt_strs+2874)
+#define gnutls_serv_short_usage (gnutls_serv_opt_strs+2921)
 
 #endif /* not defined __doxygen__ */
 
@@ -1290,7 +1313,7 @@ tOptions gnutls_servOptions = {
       NO_EQUIVALENT, /* '-#' option index */
       NO_EQUIVALENT /* index of default opt */
     },
-    35 /* full option count */, 32 /* user option count */,
+    36 /* full option count */, 33 /* user option count */,
     gnutls_serv_full_usage, gnutls_serv_short_usage,
     NULL, NULL,
     PKGDATADIR, gnutls_serv_packager_info
index a9c930ed790c661d566868c8d9187d05d8e5d4c7..9c4c86e6c1a6351c421bf4bbf3d1714f4b22ddb0 100644 (file)
@@ -2,7 +2,7 @@
  *  
  *  DO NOT EDIT THIS FILE   (serv-args.h)
  *  
- *  It has been AutoGen-ed  May  9, 2012 at 08:04:44 PM by AutoGen 5.16
+ *  It has been AutoGen-ed  August 30, 2012 at 09:58:05 PM by AutoGen 5.16
  *  From the definitions    serv-args.def
  *  and the template file   options
  *
@@ -78,33 +78,34 @@ typedef enum {
     INDEX_OPT_MTU                  =  8,
     INDEX_OPT_DISABLE_CLIENT_CERT  =  9,
     INDEX_OPT_REQUIRE_CLIENT_CERT  = 10,
-    INDEX_OPT_X509FMTDER           = 11,
-    INDEX_OPT_PRIORITY             = 12,
-    INDEX_OPT_DHPARAMS             = 13,
-    INDEX_OPT_X509CAFILE           = 14,
-    INDEX_OPT_X509CRLFILE          = 15,
-    INDEX_OPT_PGPKEYFILE           = 16,
-    INDEX_OPT_PGPKEYRING           = 17,
-    INDEX_OPT_PGPCERTFILE          = 18,
-    INDEX_OPT_X509KEYFILE          = 19,
-    INDEX_OPT_X509CERTFILE         = 20,
-    INDEX_OPT_X509DSAKEYFILE       = 21,
-    INDEX_OPT_X509DSACERTFILE      = 22,
-    INDEX_OPT_X509ECCKEYFILE       = 23,
-    INDEX_OPT_X509ECCCERTFILE      = 24,
-    INDEX_OPT_PGPSUBKEY            = 25,
-    INDEX_OPT_SRPPASSWD            = 26,
-    INDEX_OPT_SRPPASSWDCONF        = 27,
-    INDEX_OPT_PSKPASSWD            = 28,
-    INDEX_OPT_PSKHINT              = 29,
-    INDEX_OPT_PORT                 = 30,
-    INDEX_OPT_LIST                 = 31,
-    INDEX_OPT_VERSION              = 32,
-    INDEX_OPT_HELP                 = 33,
-    INDEX_OPT_MORE_HELP            = 34
+    INDEX_OPT_HEARTBEAT            = 11,
+    INDEX_OPT_X509FMTDER           = 12,
+    INDEX_OPT_PRIORITY             = 13,
+    INDEX_OPT_DHPARAMS             = 14,
+    INDEX_OPT_X509CAFILE           = 15,
+    INDEX_OPT_X509CRLFILE          = 16,
+    INDEX_OPT_PGPKEYFILE           = 17,
+    INDEX_OPT_PGPKEYRING           = 18,
+    INDEX_OPT_PGPCERTFILE          = 19,
+    INDEX_OPT_X509KEYFILE          = 20,
+    INDEX_OPT_X509CERTFILE         = 21,
+    INDEX_OPT_X509DSAKEYFILE       = 22,
+    INDEX_OPT_X509DSACERTFILE      = 23,
+    INDEX_OPT_X509ECCKEYFILE       = 24,
+    INDEX_OPT_X509ECCCERTFILE      = 25,
+    INDEX_OPT_PGPSUBKEY            = 26,
+    INDEX_OPT_SRPPASSWD            = 27,
+    INDEX_OPT_SRPPASSWDCONF        = 28,
+    INDEX_OPT_PSKPASSWD            = 29,
+    INDEX_OPT_PSKHINT              = 30,
+    INDEX_OPT_PORT                 = 31,
+    INDEX_OPT_LIST                 = 32,
+    INDEX_OPT_VERSION              = 33,
+    INDEX_OPT_HELP                 = 34,
+    INDEX_OPT_MORE_HELP            = 35
 } teOptIndex;
 
-#define OPTION_CT    35
+#define OPTION_CT    36
 #define GNUTLS_SERV_VERSION       "@VERSION@"
 #define GNUTLS_SERV_FULL_VERSION  "gnutls-serv @VERSION@"
 
@@ -157,25 +158,26 @@ typedef enum {
 #define OPT_VALUE_MTU            (DESC(MTU).optArg.argInt)
 #define VALUE_OPT_DISABLE_CLIENT_CERT 'a'
 #define VALUE_OPT_REQUIRE_CLIENT_CERT 'r'
-#define VALUE_OPT_X509FMTDER     11
-#define VALUE_OPT_PRIORITY       12
-#define VALUE_OPT_DHPARAMS       13
-#define VALUE_OPT_X509CAFILE     14
-#define VALUE_OPT_X509CRLFILE    15
-#define VALUE_OPT_PGPKEYFILE     16
-#define VALUE_OPT_PGPKEYRING     17
-#define VALUE_OPT_PGPCERTFILE    18
-#define VALUE_OPT_X509KEYFILE    19
-#define VALUE_OPT_X509CERTFILE   20
-#define VALUE_OPT_X509DSAKEYFILE 21
-#define VALUE_OPT_X509DSACERTFILE 22
-#define VALUE_OPT_X509ECCKEYFILE 23
-#define VALUE_OPT_X509ECCCERTFILE 24
-#define VALUE_OPT_PGPSUBKEY      25
-#define VALUE_OPT_SRPPASSWD      26
-#define VALUE_OPT_SRPPASSWDCONF  27
-#define VALUE_OPT_PSKPASSWD      28
-#define VALUE_OPT_PSKHINT        29
+#define VALUE_OPT_HEARTBEAT      'b'
+#define VALUE_OPT_X509FMTDER     12
+#define VALUE_OPT_PRIORITY       13
+#define VALUE_OPT_DHPARAMS       14
+#define VALUE_OPT_X509CAFILE     15
+#define VALUE_OPT_X509CRLFILE    16
+#define VALUE_OPT_PGPKEYFILE     17
+#define VALUE_OPT_PGPKEYRING     18
+#define VALUE_OPT_PGPCERTFILE    19
+#define VALUE_OPT_X509KEYFILE    20
+#define VALUE_OPT_X509CERTFILE   21
+#define VALUE_OPT_X509DSAKEYFILE 22
+#define VALUE_OPT_X509DSACERTFILE 23
+#define VALUE_OPT_X509ECCKEYFILE 24
+#define VALUE_OPT_X509ECCCERTFILE 25
+#define VALUE_OPT_PGPSUBKEY      26
+#define VALUE_OPT_SRPPASSWD      27
+#define VALUE_OPT_SRPPASSWDCONF  28
+#define VALUE_OPT_PSKPASSWD      29
+#define VALUE_OPT_PSKHINT        30
 #define VALUE_OPT_PORT           'p'
 
 #define OPT_VALUE_PORT           (DESC(PORT).optArg.argInt)
index 2ff60a3c5bf5d42bbe60da14f2a82dd3808380b0..5b28f79a6fe78a74d6788e892b9eb0e8373cc6ad 100644 (file)
@@ -387,8 +387,7 @@ initialize_session (int dtls)
     }
 
   if (HAVE_OPT (HEARTBEAT))
-    fprintf (stderr, "Set HeartBeat policy: %d.\n",
-             gnutls_heartbeat_allow (session));
+    gnutls_heartbeat_enable(session, GNUTLS_HB_PEER_ALLOWED_TO_SEND);
 
   return session;
 }
index 48819ff240791df368cc83a150225044a744a1ae..aad046cf8b0243c633a4e08b51c92ce69032731e 100644 (file)
@@ -961,10 +961,10 @@ test_heartbeat_extension (gnutls_session_t session)
   gnutls_credentials_set (session, GNUTLS_CRD_CERTIFICATE, xcred);
   gnutls_record_set_max_size (session, 4096);
 
-  gnutls_heartbeat_allow (session);
+  gnutls_heartbeat_enable (session, GNUTLS_HB_PEER_ALLOWED_TO_SEND);
   do_handshake (session);
 
-  switch (gnutls_heartbeat_enabled_remote (session)) {
+  switch (gnutls_heartbeat_allowed (session, 1)) {
     case 1: return TEST_SUCCEED;
     case 0: return TEST_FAILED;
     default: return TEST_UNSURE;