X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.h;h=1f4bb7262e6b3780e9fac55cea784fde8dd1bca1;hb=8e7b23b34b5feaaad3c7e3bb5d175ba83fc898ae;hp=6a83f6c60b41772c8ea529675ed737e9f45fa6a9;hpb=c6cc7da56d108f05ea6f9a2f765f699e6e2353db;p=meshlink diff --git a/src/meshlink.h b/src/meshlink.h index 6a83f6c6..1f4bb726 100644 --- a/src/meshlink.h +++ b/src/meshlink.h @@ -26,7 +26,7 @@ #include #if defined(_WIN32) -#include +#include #else #include #include @@ -107,15 +107,15 @@ struct meshlink_channel { /// An edge in the meshlink network. struct meshlink_edge { struct meshlink_node *from; ///< Pointer to a node. Node memory is - // owned by meshlink and should not be - // deallocated. Node contents may be - // changed by meshlink. + // owned by meshlink and should not be + // deallocated. Node contents may be + // changed by meshlink. struct meshlink_node *to; ///< Pointer to a node. Node memory is - // owned by meshlink and should not be - // deallocated. Node contents may be - // changed by meshlink. + // owned by meshlink and should not be + // deallocated. Node contents may be + // changed by meshlink. struct sockaddr_storage address;///< The address information associated - // with this edge. + // with this edge. uint32_t options; ///< Edge options. @TODO what are edge options? int weight; ///< Weight assigned to this edge. }; @@ -160,9 +160,6 @@ extern const char *meshlink_strerror(meshlink_errno_t err); */ extern meshlink_handle_t *meshlink_open(const char *confbase, const char *name, const char* appname, dev_class_t devclass); -/// is used by the C++ wrapper to allocate more memory behind the handle -extern meshlink_handle_t *meshlink_open_with_size(const char *confbase, const char *name, const char* appname, dev_class_t devclass, size_t size); - /// Start MeshLink. /** This function causes MeshLink to open network sockets, make outgoing connections, and * create a new thread, which will handle all network I/O. @@ -180,6 +177,7 @@ extern bool meshlink_start(meshlink_handle_t *mesh); * close all sockets, and shut down its own thread. * * This function always succeeds. It is allowed to call meshlink_stop() even if MeshLink is already stopped or has never been started. + * Channels that are still open will remain valid, but any communication via channels will stop as well. * * @param mesh A handle which represents an instance of MeshLink. */ @@ -187,7 +185,7 @@ extern void meshlink_stop(meshlink_handle_t *mesh); /// Close the MeshLink handle. /** This function calls meshlink_stop() if necessary, - * and frees the struct meshlink_handle and all associacted memory allocated by MeshLink. + * and frees the struct meshlink_handle and all associacted memory allocated by MeshLink, including all channels. * Afterwards, the handle and any pointers to a struct meshlink_node or struct meshlink_channel are invalid. * * It is allowed to call this function at any time on a valid handle, except inside callback functions. @@ -339,7 +337,7 @@ extern meshlink_node_t *meshlink_get_node(meshlink_handle_t *mesh, const char *n * @param mesh A handle which represents an instance of MeshLink. * @param node A pointer to a meshlink_node_t describing the node. * - * @return A nul-terminated C string containing the fingerprint of the node's public key in a printable ASCII format. + * @return A nul-terminated C string containing the fingerprint of the node's public key in a printable ASCII format. * The application should call free() after it is done using this string. */ extern char *meshlink_get_fingerprint(meshlink_handle_t *mesh, meshlink_node_t *node); @@ -478,9 +476,21 @@ extern void meshlink_blacklist(meshlink_handle_t *mesh, meshlink_node_t *node); * and will send data to it and accept any data received from it. * * @param mesh A handle which represents an instance of MeshLink. - * @param node A pointer to a meshlink_node_t describing the node to be blacklisted. + * @param node A pointer to a meshlink_node_t describing the node to be whitelisted. */ -extern void meshlink_blacklist(meshlink_handle_t *mesh, meshlink_node_t *node); +extern void meshlink_whitelist(meshlink_handle_t *mesh, meshlink_node_t *node); + +/// Set whether new nodes are blacklisted by default. +/** This function sets the blacklist behaviour for newly discovered nodes. + * If set to true, new nodes will be automatically blacklisted. + * If set to false, which is the default, new nodes are automatically whitelisted. + * The whitelist/blacklist status of a node may be changed afterwards with the + * meshlink_whitelist() and meshlink_blacklist() functions. + * + * @param mesh A handle which represents an instance of MeshLink. + * @param blacklist True if new nodes are to be blacklisted, false if whitelisted. + */ +extern void meshlink_set_default_blacklist(meshlink_handle_t *mesh, bool blacklist); /// A callback for accepting incoming channels. /** This function is called whenever a remote node wants to open a channel to the local node. @@ -642,13 +652,13 @@ extern ssize_t meshlink_channel_send(meshlink_handle_t *mesh, meshlink_channel_t /** This function indicates to meshlink that the given hostname is likely found * at the given IP address and port. * - * @param mesh A handle which represents an instance of MeshLink. - * @param hostname The hostname which can be found at the given address. - * The caller is free to overwrite or free this string - * once meshlink returns. - * @param addr The IP address and port which should be tried for the - * given hostname. The caller is free to overwrite or free - * this memory once meshlink returns. + * @param mesh A handle which represents an instance of MeshLink. + * @param hostname The hostname which can be found at the given address. + * The caller is free to overwrite or free this string + * once meshlink returns. + * @param addr The IP address and port which should be tried for the + * given hostname. The caller is free to overwrite or free + * this memory once meshlink returns. */ extern void meshlink_hint_address(meshlink_handle_t *mesh, meshlink_node_t *node, const struct sockaddr *addr);