summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2011-09-17 11:22:02 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2011-09-17 11:42:58 +0200
commitd620e7020092ba1be4e2f170a7f84cc25cd0d2a1 (patch)
treeb96f70d591db0d8f009513a2374ca8abff7ca082
parentc8c99c59b4a09f8ade727bfb3276807d72961108 (diff)
downloadgnutls-d620e7020092ba1be4e2f170a7f84cc25cd0d2a1.tar.gz
Added gnutls_record_get_discarded() to return the number of discarded
record packets in a DTLS session.
-rw-r--r--NEWS4
-rw-r--r--lib/gnutls_dtls.c15
-rw-r--r--lib/gnutls_int.h1
-rw-r--r--lib/gnutls_record.c2
-rw-r--r--lib/includes/gnutls/dtls.h1
-rw-r--r--lib/libgnutls.map1
6 files changed, 24 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 45234ec08b..1e996cdb88 100644
--- 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)
diff --git a/lib/gnutls_dtls.c b/lib/gnutls_dtls.c
index ea49fc7fbf..29dc2d1640 100644
--- a/lib/gnutls_dtls.c
+++ b/lib/gnutls_dtls.c
@@ -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;
+}
+
diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h
index 7ad7720955..9b0b8bf7c0 100644
--- a/lib/gnutls_int.h
+++ b/lib/gnutls_int.h
@@ -622,6 +622,7 @@ typedef struct
/* last retransmission triggered by record layer */
time_t last_retransmit;
+ unsigned int packets_dropped;
} dtls_st;
diff --git a/lib/gnutls_record.c b/lib/gnutls_record.c
index 874099f3df..22e49234e6 100644
--- a/lib/gnutls_record.c
+++ b/lib/gnutls_record.c
@@ -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);
diff --git a/lib/includes/gnutls/dtls.h b/lib/includes/gnutls/dtls.h
index 2f3369cd21..3183d6064d 100644
--- a/lib/includes/gnutls/dtls.h
+++ b/lib/includes/gnutls/dtls.h
@@ -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
diff --git a/lib/libgnutls.map b/lib/libgnutls.map
index 97ff01cc50..70bc8414ca 100644
--- a/lib/libgnutls.map
+++ b/lib/libgnutls.map
@@ -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 {