]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add fr_network_listen_outstanding to get the number of outstanding packets
authorNick Porter <nick@portercomputing.co.uk>
Thu, 17 Nov 2022 19:28:47 +0000 (19:28 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Thu, 24 Nov 2022 17:42:46 +0000 (17:42 +0000)
src/lib/io/network.c
src/lib/io/network.h

index ace59577eafa83f8b1763642c571e95a92c7781f..47371debb390c1c312df15de917570752b7d3c37 100644 (file)
@@ -764,6 +764,25 @@ int fr_network_listen_send_packet(fr_network_t *nr, fr_listen_t *parent, fr_list
        return 0;
 }
 
+/** Get the number of outstanding packets
+ *
+ * @param nr the network
+ * @param li the listener that the packet was "read" from
+ * @return
+ *     - <0 on error
+ *     - the number of outstanding packets
+*/
+size_t fr_network_listen_outstanding(fr_network_t *nr, fr_listen_t *li) {
+       fr_network_socket_t *s;
+
+       (void) talloc_get_type_abort(nr, fr_network_t);
+       (void) talloc_get_type_abort_const(li, fr_listen_t);
+
+       s = fr_rb_find(nr->sockets, &(fr_network_socket_t){ .listen = li });
+       if (!s) return -1;
+
+       return s->outstanding;
+}
 
 /*
  *     Mark it as dead, but DON'T free it until all of the replies
index 4e4d358a9c516038debea2f7b2d3033d5db45bd8..3ec48557acdb8bf7a2567a094630263620c260a5 100644 (file)
@@ -64,6 +64,8 @@ int           fr_network_listen_inject(fr_network_t *nr, fr_listen_t *li, uint8_t const *
 int            fr_network_listen_send_packet(fr_network_t *nr, fr_listen_t *parent, fr_listen_t *li,
                                              const uint8_t *buffer, size_t buflen, fr_time_t recv_time, void *packet_ctx) CC_HINT(nonnull(1,2,3,4));
 
+size_t         fr_network_listen_outstanding(fr_network_t *nr, fr_listen_t *li);
+
 fr_network_t   *fr_network_create(TALLOC_CTX *ctx, fr_event_list_t *el,
                                   char const *nr, fr_log_t const *logger, fr_log_lvl_t lvl,
                                   fr_network_config_t const *config) CC_HINT(nonnull(2,4));