From f0b9bc56a67be3b5ede60ee165def3fbb6cb128f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Thu, 10 Mar 2022 19:43:58 -0500
Subject: [PATCH] c: add dht_runner_is_running, dht_runner_get_bound_port

---
 c/opendht.cpp | 11 +++++++++++
 c/opendht_c.h |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/c/opendht.cpp b/c/opendht.cpp
index ced1157a..9ed06564 100644
--- a/c/opendht.cpp
+++ b/c/opendht.cpp
@@ -413,6 +413,17 @@ void dht_runner_shutdown(dht_runner* r, dht_shutdown_cb done_cb, void* cb_user_d
     });
 }
 
+bool dht_runner_is_running(const dht_runner* r) {
+    if (not r) return false;
+    auto runner = reinterpret_cast<const dht::DhtRunner*>(r);
+    return runner->isRunning();
+}
+
+in_port_t dht_runner_get_bound_port(const dht_runner* r, sa_family_t af) {
+    auto runner = reinterpret_cast<const dht::DhtRunner*>(r);
+    return runner->getBoundPort(af);
+}
+
 dht_infohash dht_runner_get_node_id(const dht_runner* r) {
     auto runner = reinterpret_cast<const dht::DhtRunner*>(r);
     dht_infohash ret;
diff --git a/c/opendht_c.h b/c/opendht_c.h
index 7ca76ae6..be594677 100644
--- a/c/opendht_c.h
+++ b/c/opendht_c.h
@@ -153,6 +153,9 @@ OPENDHT_C_PUBLIC void dht_runner_cancel_put(dht_runner* runner, const dht_infoha
 OPENDHT_C_PUBLIC void dht_runner_shutdown(dht_runner* runner, dht_shutdown_cb done_cb, void* cb_user_data);
 OPENDHT_C_PUBLIC dht_infohash dht_runner_get_node_id(const dht_runner* runner);
 OPENDHT_C_PUBLIC dht_infohash dht_runner_get_id(const dht_runner* runner);
+OPENDHT_C_PUBLIC bool dht_runner_is_running(const dht_runner* runner);
+OPENDHT_C_PUBLIC in_port_t dht_runner_get_bound_port(const dht_runner* runner, sa_family_t af);
+/** Returns null-terminated array that must be freed after use as well as each element */
 OPENDHT_C_PUBLIC struct sockaddr** dht_runner_get_public_address(const dht_runner* runner);
 
 #ifdef __cplusplus
-- 
GitLab