[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 4 of 6 V1] Implement session packet counter


 include/libssh/counters.h |  13 +++++++++++--
 include/libssh/session.h  |   1 +
 src/counters.c            |   4 +++-
 src/packet.c              |   4 ++++
 4 files changed, 19 insertions(+), 3 deletions(-)


# HG changeset patch
# User Audrius Butkevicius <audrius.butkevicius@xxxxxxxxxxxxxxxx>
# Date 1389803772 0
#      Wed Jan 15 16:36:12 2014 +0000
# Node ID 9e462bb4ad281e6b8f8f278726ec601596c35c21
# Parent  754710d2feba31833ecdd111b0a9948549bcbb5a
Implement session packet counter

diff --git a/include/libssh/counters.h b/include/libssh/counters.h
--- a/include/libssh/counters.h
+++ b/include/libssh/counters.h
@@ -67,15 +67,24 @@
  *     .out_bytes = 0
  * };
  *
- * ssh_set_session_counters(session, &scounter);
+ * struct ssh_packet_counter_struct pcounter = {
+ *     .in_packets = 0,
+ *     .out_packets = 0
+ * };
+ *
+ * ssh_set_session_counters(session, &scounter, &pcounter);
  * @endcode
  *
  * @param  session      The session to set the counter structures.
  *
  * @param  scounter     The byte counter structure for data passed to sockets.
+ *
+ * @param  pcounter     The packet counter structure for SSH packets handled by
+ *                      the session.
  */
 LIBSSH_API void ssh_set_session_counters(ssh_session session,
-                                         ssh_bytes_counter scounter);
+                                         ssh_bytes_counter scounter,
+                                         ssh_packet_counter pcounter);
 
 /** @} */
 
diff --git a/include/libssh/session.h b/include/libssh/session.h
--- a/include/libssh/session.h
+++ b/include/libssh/session.h
@@ -191,6 +191,7 @@
 
     /* counters */
     ssh_bytes_counter socket_byte_counter;
+    ssh_packet_counter packet_counter;
 };
 
 /** @internal
diff --git a/src/counters.c b/src/counters.c
--- a/src/counters.c
+++ b/src/counters.c
@@ -24,9 +24,11 @@
 #include "libssh/counters.h"
 #include "libssh/session.h"
 
-void ssh_set_session_counters(ssh_session session, ssh_bytes_counter scounter) {
+void ssh_set_session_counters(ssh_session session, ssh_bytes_counter scounter,
+                              ssh_packet_counter pcounter) {
     if (session == NULL)
         return;
 
     session->socket_byte_counter = scounter;
+    session->packet_counter = pcounter;
 }
diff --git a/src/packet.c b/src/packet.c
--- a/src/packet.c
+++ b/src/packet.c
@@ -305,6 +305,8 @@
 #endif /* WITH_ZLIB */
             payloadsize = buffer_get_rest_len(session->in_buffer);
             session->recv_seq++;
+            if (session->packet_counter)
+                session->packet_counter->in_packets++;
 
             /*
              * We don't want to rewrite a new packet while still executing the
@@ -554,6 +556,8 @@
 
   rc = ssh_packet_write(session);
   session->send_seq++;
+  if (session->packet_counter)
+      session->packet_counter->out_packets++;
 
   SSH_LOG(SSH_LOG_PACKET,
           "packet: wrote [len=%d,padding=%hhd,comp=%d,payload=%d]",

References:
[PATCH 0 of 6 V1] CountersAudrius Butkevicius <audrius.butkevicius@xxxxxxxxxxxxxxxx>
Archive administrator: postmaster@lists.cynapses.org