diff --git a/src/serve.c b/src/serve.c index 0d52571..bf99766 100644 --- a/src/serve.c +++ b/src/serve.c @@ -326,6 +326,20 @@ int cleanup_and_find_client_slot(struct server* params) return slot; } +int server_count_clients( struct server *params ) +{ + NULLCHECK( params ); + int i, count = 0; + + for ( i = 0 ; i < params->max_nbd_clients ; i++ ) { + if ( params->nbd_client[i].thread != 0 ) { + count++; + } + } + + return count; +} + /** Check whether the address client_address is allowed or not according * to the current acl. If params->acl is NULL, the result will be 1, diff --git a/src/serve.h b/src/serve.h index 48e41b2..4a22d7a 100644 --- a/src/serve.h +++ b/src/serve.h @@ -137,6 +137,9 @@ void server_close_clients( struct server *serve ); void server_join_clients( struct server *serve ); void server_allow_new_clients( struct server *serve ); +/* Returns a count (ish) of the number of currently-running client threads */ +int server_count_clients( struct server *params ); + void server_unlink( struct server * serve ); int do_serve( struct server *, struct self_pipe * );