rspro_server: Add client_conn_by_slot() API function
Change-Id: Ie2eefad358b45541cf90d0cacac2d03953f0c367
diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c
index f4e09e6..61d699f 100644
--- a/src/server/rspro_server.c
+++ b/src/server/rspro_server.c
@@ -400,6 +400,24 @@
* IPA RSPRO Server
***********************************************************************/
+struct rspro_client_conn *_client_conn_by_slot(struct rspro_server *srv, const struct client_slot *cslot)
+{
+ struct rspro_client_conn *conn;
+ llist_for_each_entry(conn, &srv->clients, list) {
+ if (client_slot_equals(&conn->client.slot, cslot))
+ return conn;
+ }
+ return NULL;
+}
+struct rspro_client_conn *client_conn_by_slot(struct rspro_server *srv, const struct client_slot *cslot)
+{
+ struct rspro_client_conn *conn;
+ pthread_rwlock_rdlock(&srv->rwlock);
+ conn = _client_conn_by_slot(srv, cslot);
+ pthread_rwlock_unlock(&srv->rwlock);
+ return conn;
+}
+
struct rspro_client_conn *_bankd_conn_by_id(struct rspro_server *srv, uint16_t bank_id)
{
struct rspro_client_conn *conn;
diff --git a/src/server/rspro_server.h b/src/server/rspro_server.h
index 1703cb5..af84c18 100644
--- a/src/server/rspro_server.h
+++ b/src/server/rspro_server.h
@@ -56,5 +56,7 @@
void rspro_server_destroy(struct rspro_server *srv);
int event_fd_cb(struct osmo_fd *ofd, unsigned int what);
+struct rspro_client_conn *_client_conn_by_slot(struct rspro_server *srv, const struct client_slot *cslot);
+struct rspro_client_conn *client_conn_by_slot(struct rspro_server *srv, const struct client_slot *cslot);
struct rspro_client_conn *_bankd_conn_by_id(struct rspro_server *srv, uint16_t bank_id);
struct rspro_client_conn *bankd_conn_by_id(struct rspro_server *srv, uint16_t bank_id);