/*
meshlink.h -- MeshLink API
- Copyright (C) 2014, 2017 Guus Sliepen <guus@meshlink.io>
+ Copyright (C) 2014-2018 Guus Sliepen <guus@meshlink.io>
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
MESHLINK_ESTORAGE, ///< MeshLink coud not load or write data from/to disk
MESHLINK_ENETWORK, ///< MeshLink encountered a network error
MESHLINK_EPEER, ///< A peer caused an error
+ MESHLINK_ENOTSUP, ///< The operation is not supported in the current configuration of MeshLink
} meshlink_errno_t;
/// Device class
*/
extern bool meshlink_verify(meshlink_handle_t *mesh, meshlink_node_t *source, const void *data, size_t len, const void *signature, size_t siglen);
+/// Set the canonical Address for a node.
+/** This function sets the canonical Address for a node.
+ * This address is stored permanently until it is changed by another call to this function,
+ * unlike other addresses associated with a node,
+ * such as those added with meshlink_hint_address() or addresses discovered at runtime.
+ *
+ * If a canonical Address is set for the local node,
+ * it will be used for the hostname part of generated invitation URLs.
+ *
+ * @param mesh A handle which represents an instance of MeshLink.
+ * @param node A pointer to a meshlink_node_t describing the node.
+ * @param address A nul-terminated C string containing the address, which can be either in numeric format or a hostname.
+ * @param port A nul-terminated C string containing the port, which can be either in numeric or symbolic format.
+ * If it is NULL, the listening port's number will be used.
+ *
+ * @return This function returns true if the address was added, false otherwise.
+ */
+extern bool meshlink_set_canonical_address(meshlink_handle_t *mesh, meshlink_node_t *node, const char *address, const char *port);
+
/// Add an Address for the local node.
/** This function adds an Address for the local node, which will be used for invitation URLs.
*
extern bool meshlink_set_port(meshlink_handle_t *mesh, int port);
+/// Set the timeout for invitations.
+/** This function sets the timeout for invitations.
+ * Note that timeouts are only checked at the time a node tries to join using an invitation.
+ * The default timeout for invitations is 1 week.
+ *
+ * @param mesh A handle which represents an instance of MeshLink.
+ * @param timeout The timeout for invitations in seconds.
+ */
+extern void meshlink_set_invitation_timeout(meshlink_handle_t *mesh, int timeout);
+
/// Invite another node into the mesh.
/** This function generates an invitation that can be used by another node to join the same mesh as the local node.
* The generated invitation is a string containing a URL.