]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Added gnutls_record_get_discarded() to return the number of discarded
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 17 Sep 2011 09:22:02 +0000 (11:22 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 17 Sep 2011 09:42:58 +0000 (11:42 +0200)
record packets in a DTLS session.

NEWS
lib/gnutls_dtls.c
lib/gnutls_int.h
lib/gnutls_record.c
lib/includes/gnutls/dtls.h
lib/libgnutls.map

diff --git a/NEWS b/NEWS
index 45234ec08b52f1fdd6575b7f164806ca28b8efa8..1e996cdb8896f5dfb77a08315afaf5c85fbcb5ad 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,9 @@ See the end for copying conditions.
 
 * Version 3.0.3 (unreleased)
 
+** libgnutls: Added gnutls_record_get_discarded() to return the
+number of discarded records in a DTLS session.
+
 ** libgnutls: All functions related to RSA-EXPORT were deprecated.
 Support for RSA-EXPORT ciphersuites will be ceased in future versions.
 
@@ -34,6 +37,7 @@ gnutls_pkcs11_privkey_generate: Added
 gnutls_pubkey_import_ecc_raw: Added
 gnutls_pubkey_import_ecc_x962: Added
 gnutls_pubkey_get_pk_ecc_x962: Added
+gnutls_record_get_discarded: Added
 
 
 * Version 3.0.2 (released 2011-09-01)
index ea49fc7fbf8ba2bc873adee26e32054bf2c4dba1..29dc2d1640ed09f17fee1961fe66124a9494f9e5 100644 (file)
@@ -705,3 +705,18 @@ void gnutls_dtls_prestate_set(gnutls_session_t session, gnutls_dtls_prestate_st*
   session->internals.dtls.hsk_read_seq = prestate->hsk_read_seq;
   session->internals.dtls.hsk_write_seq = prestate->hsk_write_seq + 1;
 }
+
+/**
+ * gnutls_record_get_discarded:
+ * @session: is a #gnutls_session_t structure.
+ *
+ * Returns the number of discarded packets in a
+ * DTLS connection.
+ *
+ * Returns: The number of discarded packets.
+ **/
+unsigned int gnutls_record_get_discarded (gnutls_session_t session)
+{
+  return session->internals.dtls.packets_dropped;
+}
+
index 7ad77209551750c9c0ea8edfd6c01cc93f98ba47..9b0b8bf7c0a83efa1ea2c773c1ad296180051f9a 100644 (file)
@@ -622,6 +622,7 @@ typedef struct
   
   /* last retransmission triggered by record layer */
   time_t last_retransmit;
+  unsigned int packets_dropped;
 } dtls_st;
 
 
index 874099f3df6af0d77a1dfaac6d8ac1f369e3dfba..22e49234e6ab6bb85001defa2d4271a37442b5ea 100644 (file)
@@ -1075,6 +1075,8 @@ begin:
   return ret;
 
 discard:
+  session->internals.dtls.packets_dropped++;
+
   /* discard the whole received fragment. */
   bufel = _mbuffer_head_pop_first(&session->internals.record_recv_buffer);
   _mbuffer_xfree(&bufel);
index 2f3369cd21d7f78d77866a115de1e0292ab6068c..3183d6064d7809eacb03c03d1de164f2cd201b1d 100644 (file)
@@ -77,6 +77,7 @@ unsigned int gnutls_dtls_get_data_mtu (gnutls_session_t session);
   void gnutls_dtls_prestate_set (gnutls_session_t session,
                                 gnutls_dtls_prestate_st* prestate);
 
+  unsigned int gnutls_record_get_discarded (gnutls_session_t session);
 #ifdef __cplusplus
 }
 #endif
index 97ff01cc50f9df7a9c233c0af689d2786cdab707..70bc8414ca7a74d1c6d288726636c8cc4c2c81b0 100644 (file)
@@ -716,6 +716,7 @@ GNUTLS_3_0_0 {
        gnutls_pkcs11_privkey_generate;
        gnutls_pubkey_import_ecc_raw;
        gnutls_pubkey_import_ecc_raw2;
+       gnutls_record_get_discarded;
 } GNUTLS_2_12;
 
 GNUTLS_PRIVATE {