PROXY_HTTP,
} proxytype_t;
+struct meshlink_open_params {
+ char *confbase;
+ char *appname;
+ char *name;
+ dev_class_t devclass;
+
+ int netns;
+};
+
/// A handle for an instance of MeshLink.
struct meshlink_handle {
char *name;
dev_class_t devclass;
char *confbase;
+ FILE *conffile;
meshlink_receive_cb_t receive_cb;
meshlink_node_status_cb_t node_status_cb;
meshlink_log_level_t log_level;
meshlink_channel_accept_cb_t channel_accept_cb;
+ meshlink_node_duplicate_cb_t node_duplicate_cb;
pthread_t thread;
bool threadstarted;
struct list_t *connections;
struct list_t *outgoings;
+ struct list_t *submeshes;
meshlink_queue_t outpacketqueue;
hash_t *node_udp_cache;
struct connection_t *everyone;
struct ecdsa *invitation_key;
+ int invitation_timeout;
int pinginterval; /* seconds between pings */
int pingtimeout; /* seconds to wait for response */
struct CattaSimplePoll *catta_poll;
struct CattaSEntryGroup *catta_group;
char *catta_servicetype;
+
+ int netns;
};
/// A handle for a MeshLink node.
void *priv;
};
+/// A handle for a node Sub-Mesh.
+struct meshlink_submesh {
+ const char *name;
+ void *priv;
+};
+
/// A channel.
struct meshlink_channel {
struct node_t *node;
extern void update_node_status(meshlink_handle_t *mesh, struct node_t *n);
extern meshlink_log_level_t global_log_level;
extern meshlink_log_cb_t global_log_cb;
+extern int check_port(meshlink_handle_t *mesh);
+extern void handle_duplicate_node(meshlink_handle_t *mesh, struct node_t *n);
/// Device class traits
typedef struct {