diff --git a/c/opendht.cpp b/c/opendht.cpp index ced1157ab2a221d83cb3610325906cec76a6b300..9ed0656496490b32132ac75169ff20f364efa647 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 7ca76ae64185c87c59c95579171ab18d5a34a630..be594677e31e4357475c7ac3176a167c2176fad1 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