PROXY_SOCKS4A,
PROXY_SOCKS5,
PROXY_HTTP,
- PROXY_EXEC,
} 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;
- pthread_mutex_t outpacketqueue_mutex;
pthread_mutex_t mesh_mutex;
event_loop_t loop;
listen_socket_t listen_socket[MAXSOCKETS];
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.
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 {