X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.h;h=9a887168acd7a56c5c624f88f11e6243201d4d6c;hb=485f3000537054c0b9b223386c2a29a9cdd88ae3;hp=ead75205809f5f3f2e10fa7363ea629cfd0d68ff;hpb=6346e3f4a100f958d5aaeffd867b10ed7cd0cd92;p=meshlink diff --git a/src/meshlink.h b/src/meshlink.h index ead75205..9a887168 100644 --- a/src/meshlink.h +++ b/src/meshlink.h @@ -3,7 +3,7 @@ /* meshlink.h -- MeshLink API - Copyright (C) 2014-2019 Guus Sliepen + Copyright (C) 2014-2021 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -87,7 +87,7 @@ typedef enum { typedef enum { MESHLINK_STORAGE_ENABLED, ///< Store all updates. MESHLINK_STORAGE_DISABLED, ///< Don't store any updates. - MESHLINK_STORAGE_KEYS_ONLY, ///< Only store updates when a node's key has changed. + MESHLINK_STORAGE_KEYS_ONLY ///< Only store updates when a node's key has changed. } meshlink_storage_policy_t; /// Invitation flags @@ -835,6 +835,18 @@ struct meshlink_node **meshlink_get_all_nodes_by_blacklisted(struct meshlink_han */ dev_class_t meshlink_get_node_dev_class(struct meshlink_handle *mesh, struct meshlink_node *node) __attribute__((__warn_unused_result__)); +/// Get the node's tiny status. +/** This function returns true if the given node is a tiny node. + * Note that the tiny status of a node will only be known if the node has been reachable at least once. + * + * \memberof meshlink_node + * @param mesh A handle which represents an instance of MeshLink. + * @param node A pointer to a struct meshlink_node describing the node. + * + * @return This function returns true if the node is a tiny node. + */ +bool meshlink_get_node_tiny(struct meshlink_handle *mesh, struct meshlink_node *node) __attribute__((__warn_unused_result__)); + /// Get the node's blacklist status. /** This function returns the given node is blacklisted. * @@ -1531,7 +1543,6 @@ void meshlink_channel_shutdown(struct meshlink_handle *mesh, struct meshlink_cha /// Close a reliable stream channel. /** This informs the remote node that the local node has finished sending all data on the channel. * It also causes the local node to stop accepting incoming data from the remote node. - * It will free the struct meshlink_channel and all associated resources. * Afterwards, the channel handle is invalid and must not be used any more. * * It is allowed to call this function at any time on a valid handle, even inside callback functions. @@ -1543,6 +1554,21 @@ void meshlink_channel_shutdown(struct meshlink_handle *mesh, struct meshlink_cha */ void meshlink_channel_close(struct meshlink_handle *mesh, struct meshlink_channel *channel); +/// Abort a reliable stream channel. +/** This aborts a channel. + * Data that was in the send and receive buffers is dropped, so potentially there is some data that + * was sent on this channel that will not be received by the peer. + * Afterwards, the channel handle is invalid and must not be used any more. + * + * It is allowed to call this function at any time on a valid handle, even inside callback functions. + * If called with a valid handle, this function always succeeds, otherwise the result is undefined. + * + * \memberof meshlink_channel + * @param mesh A handle which represents an instance of MeshLink. + * @param channel A handle for the channel. + */ +void meshlink_channel_abort(struct meshlink_handle *mesh, struct meshlink_channel *channel); + /// Transmit data on a channel /** This queues data to send to the remote node. * @@ -1735,6 +1761,16 @@ void meshlink_hint_address(struct meshlink_handle *mesh, struct meshlink_node *n */ void meshlink_enable_discovery(struct meshlink_handle *mesh, bool enable); +/// Inform MeshLink that the local network configuration might have changed +/** This is intended to be used when there is no way for MeshLink to get notifications of local network changes. + * It forces MeshLink to scan all network interfaces for changes in up/down status and new/removed addresses, + * and will immediately check if all connections to other nodes are still alive. + * + * \memberof meshlink_handle + * @param mesh A handle which represents an instance of MeshLink. + */ +void meshlink_hint_network_change(struct meshlink_handle *mesh); + /// Performs key rotation for an encrypted storage /** This rotates the (master) key for an encrypted storage and discards the old key * if the call succeeded. This is an atomic call.