diff --git a/include/ZT1Service.h b/include/ZT1Service.h index f6e52cf..fecbe73 100644 --- a/include/ZT1Service.h +++ b/include/ZT1Service.h @@ -60,16 +60,6 @@ VirtualTap *getAnyTap(); */ std::vector *zts_get_network_routes(const uint64_t nwid); -/** - * @brief - * - * @usage For internal use only. - * @param filepath Path to configuration files - * @param devID buffer to which the device ID (nodeID, ztAddress) should be copied - * @return - */ -int zts_getid_from_file(const char *filepath, uint64_t nodeId); - /** * @brief Starts a ZeroTier service in the background * @@ -79,159 +69,6 @@ int zts_getid_from_file(const char *filepath, uint64_t nodeId); */ void *zts_start_service(void *thread_id); -/** - * @brief Gets the VirtualTap's (interface) IP address - * - * @usage For internal use only. - * @param nwid - * @param addr - * @param addrlen - * @return - */ -void zts_get_address(const uint64_t nwid, struct sockaddr_storage *addr, const size_t addrlen); - -/** - * @brief Returns whether the VirtualTap has an assigned address (IPv4 or IPv6) - * - * @usage For internal use only. - * @param nwid - * @return - */ -int zts_has_address(const uint64_t nwid); - -/** - * @brief Copies the 6PLANE IPv6 address for the VirtualTap into the provided buffer - * - * @usage - * @param addr - * @param nwid - * @param devID - * @return - */ -void zts_get_6plane_addr(struct sockaddr_storage *addr, const uint64_t nwid, const uint64_t nodeId); - -/** - * @brief Copies the RFC4193 IPv6 address for the VirtualTap into the provided buffer - * - * @usage - * @param addr - * @param nwid - * @param devID - * @return - */ -void zts_get_rfc4193_addr(struct sockaddr_storage *addr, const uint64_t nwid, const uint64_t nodeId); - -/** - * @brief Join a network - * - * @usage Call this from application thread. Only after zts_start() has succeeded - * @param nwid A 16-digit hexidecimal virtual network ID - * @return - */ -void zts_join(const uint64_t nwid); - -/** - * @brief Leave a network - * - * @usage Call this from application thread. Only after zts_start() has succeeded - * @param nwid A 16-digit hexidecimal virtual network ID - * @return - */ -void zts_leave(const uint64_t nwid); - -/** - * @brief Return whether libzt (specifically the ZeroTier core service) is currently running - * - * @usage Call this before, during, or after zts_start() - * @return - */ -int zts_running(); - -/** - * @brief Start an instance of libzt (ZeroTier core service, network stack drivers, network stack threads, etc) - * - * @usage Call this when you anticipate needing to communicate over ZeroTier virtual networks. It is recommended - * that one call this at the beginning of your application code since it may take several seconds to fully - * come online. - * @param path Where this instance of ZeroTier will store its identity and configuration files - * @return Returns 1 if ZeroTier is currently running, and 0 if it is not - */ -int zts_start(const char *path, bool blocking); - -/** - * @brief Alternative to zts_start(). Start an instance of libzt, wait for an address to be issues, and join - * given network - * - * @usage Call this when you anticipate needing to communicate over ZeroTier virtual networks. It is recommended - * that one call this at the beginning of your application code since it may take several seconds to fully - * come online. - * @param path - * @param nwid A 16-digit hexidecimal virtual network ID - * @return Returns 0 on success, -1 on failure - */ -int zts_startjoin(const char *path, const uint64_t nwid); - -/** - * @brief Stops libzt (ZeroTier core services, stack drivers, stack threads, etc) - * - * @usage This should be called at the end of your program or when you do not anticipate communicating over ZeroTier - * @return Returns 0 on success, -1 on failure - */ -void zts_stop(); - -/** - * @brief Copies the configuration path used by ZeroTier into the provided buffer - * - * @usage - * @param homePath - * @param len - * @return - */ -void zts_get_homepath(char *homePath, size_t len); - -/** - * @brief Returns the ztaddress/nodeId/device ID of this instance - * - * @usage Call this after zts_start() and/or when zts_running() returns true - * @return - */ -uint64_t zts_get_node_id(); - -/** - * @brief Returns the ztaddress/nodeId/device ID of this instance (as read from a file) - * - * @usage Call with or without starting the service with zts_start() - * @return - */ -uint64_t zts_get_node_id_from_file(const char *filepath); - -/** - * @brief Return the number of peers - * - * @usage Call this after zts_start() has succeeded - * @param - * @return - */ -unsigned long zts_get_peer_count(); - -/** - * @brief Get the virtual address of a perr given it's ztAddress/nodeID - * - * @usage Call this after zts_start() has succeeded - * @param - * @return - */ -int zts_get_peer_address(char *peer, const uint64_t nodeId); - -/** - * @brief Allow or disallow this instance of libzt to be controlled via HTTP requests - * - * @usage Call this after zts_start() has succeeded - * @param allowed True or false value - * @return - */ -void zts_allow_http_control(bool allowed); - /** * @brief Returns masked address for subnet comparisons * diff --git a/include/libzt.h b/include/libzt.h index 0b3c164..e65f684 100644 --- a/include/libzt.h +++ b/include/libzt.h @@ -77,10 +77,6 @@ typedef int ssize_t; extern "C" { #endif -// forward declarations from ZT1Service.h -ZT_SOCKET_API uint64_t ZTCALL zts_get_node_id(); -ZT_SOCKET_API void ZTCALL init_network_stack(); - /** * @brief Starts libzt * @@ -112,51 +108,41 @@ ZT_SOCKET_API int ZTCALL zts_start(const char *path, bool blocking); ZT_SOCKET_API int ZTCALL zts_startjoin(const char *path, const uint64_t nwid); /** - * @brief Stops the ZeroTier core service and disconnects from all virtual networks + * @brief Stops libzt (ZeroTier core services, stack drivers, stack threads, etc) * - * @usage Called at the end of your application. This call will block until everything is shut down - * @return + * @usage This should be called at the end of your program or when you do not anticipate communicating over ZeroTier + * @return Returns 0 on success, -1 on failure */ ZT_SOCKET_API void ZTCALL zts_stop(); /** - * @brief Check whether the service is running + * @brief Return whether libzt (specifically the ZeroTier core service) is currently running * - * @usage + * @usage Call this before, during, or after zts_start() * @return */ ZT_SOCKET_API int ZTCALL zts_running(); /** - * @brief Joins a virtual network + * @brief Join a network * - * @usage Called after zts_start() or zts_startjoin() - * @param nwid the 16-digit hexidecimal network identifier + * @usage Call this from application thread. Only after zts_start() has succeeded + * @param nwid A 16-digit hexidecimal virtual network ID * @return */ ZT_SOCKET_API void ZTCALL zts_join(const uint64_t nwid); /** - * @brief Leaves a virtual network. + * @brief Leave a network * - * @usage - * @param nwid + * @usage Call this from application thread. Only after zts_start() has succeeded + * @param nwid A 16-digit hexidecimal virtual network ID * @return */ ZT_SOCKET_API void ZTCALL zts_leave(const uint64_t nwid); /** - * @brief Leave a network - Only delete the .conf file, this will prevent the service from joining upon next startup - * - * @usage - * @param filepath - * @param nwid - * @return - */ -ZT_SOCKET_API void ZTCALL zts_leave_soft(const char * filepath, const uint64_t nwid); - -/** - * @brief Returns path used by ZeroTier/libzt for storing identity and config files + * @brief Copies the configuration path used by ZeroTier into the provided buffer * * @usage * @param homePath @@ -166,13 +152,20 @@ ZT_SOCKET_API void ZTCALL zts_leave_soft(const char * filepath, const uint64_t n ZT_SOCKET_API void ZTCALL zts_get_homepath(char *homePath, const size_t len); /** - * @brief Get device ID (10-digit hex number) + * @brief Returns the ztaddress/nodeId/device ID of this instance * - * @usage - * @param nodeId + * @usage Call this after zts_start() and/or when zts_running() returns true * @return */ -ZT_SOCKET_API int ZTCALL zts_get_id(uint64_t *nodeId); +ZT_SOCKET_API uint64_t ZTCALL zts_get_node_id(); + +/** + * @brief Returns the ztaddress/nodeId/device ID of this instance (as read from a file) + * + * @usage Call with or without starting the service with zts_start() + * @return + */ +ZT_SOCKET_API uint64_t ZTCALL zts_get_node_id_from_file(const char *filepath); /** * @brief Returns whether any address has been assigned to the SockTap for this network @@ -195,64 +188,53 @@ ZT_SOCKET_API int ZTCALL zts_has_address(const uint64_t nwid); ZT_SOCKET_API void ZTCALL zts_get_address(const uint64_t nwid, struct sockaddr_storage *addr, const size_t addrlen); /** - * @brief Returns a 6PLANE IPv6 address given a network ID and zerotier ID + * @brief Copies the 6PLANE IPv6 address for the VirtualTap into the provided buffer * * @usage * @param addr * @param nwid - * @param nodeId + * @param devID * @return */ ZT_SOCKET_API void ZTCALL zts_get_6plane_addr(struct sockaddr_storage *addr, const uint64_t nwid, const uint64_t nodeId); /** - * @brief Returns an RFC 4193 IPv6 address given a network ID and zerotier ID + * @brief Copies the RFC4193 IPv6 address for the VirtualTap into the provided buffer * * @usage * @param addr * @param nwid - * @param nodeId + * @param devID * @return */ ZT_SOCKET_API void ZTCALL zts_get_rfc4193_addr(struct sockaddr_storage *addr, const uint64_t nwid, const uint64_t nodeId); /** - * @brief Return the number of peers on this network + * @brief Return the number of peers * - * @usage + * @usage Call this after zts_start() has succeeded + * @param * @return */ ZT_SOCKET_API unsigned long zts_get_peer_count(); /** - * @brief Get the IP address of a peer if a direct path is available + * @brief Get the virtual address of a perr given it's ztAddress/nodeID * - * @usage - * @param peer - * @param nodeId + * @usage Call this after zts_start() has succeeded + * @param * @return */ ZT_SOCKET_API int ZTCALL zts_get_peer_address(char *peer, const uint64_t nodeId); /** - * @brief Enable HTTP control plane (traditionally used by zerotier-cli) - * - Allows one to control the ZeroTier core via HTTP requests - * FIXME: Implement + * @brief Allow or disallow this instance of libzt to be controlled via HTTP requests * - * @usage + * @usage Call this after zts_start() has succeeded + * @param allowed True or false value * @return */ -ZT_SOCKET_API void ZTCALL zts_enable_http_control_plane(); - -/** - * @brief Disable HTTP control plane (traditionally used by zerotier-cli) - * - Allows one to control the ZeroTier core via HTTP requests - * FIXME: Implement - * - * @usage - * @return - */ -ZT_SOCKET_API void ZTCALL zts_disable_http_control_plane(); +ZT_SOCKET_API void ZTCALL zts_allow_http_control(bool allowed); /****************************************************************************/ /* POSIX-like socket API */