pex-msg: fix memory leak on fread fail in pex_msg_update_request_init
[project/unetd.git] / network.h
index 8a824b9547a3b1a70d5adf75e1d1a9f467b7269c..bfd4c78d9b900c8811c9ff82ee7f408facd44ab4 100644 (file)
--- a/network.h
+++ b/network.h
@@ -37,22 +37,32 @@ struct network {
                const char *domain;
                struct blob_attr *tunnels;
                struct blob_attr *net_data;
+               struct blob_attr *auth_connect;
+               struct blob_attr *peer_data;
        } config;
 
        struct {
+               uint64_t hash;
                union network_addr addr;
                struct network_host *local_host;
                unsigned int keepalive;
                int port;
                int pex_port;
                bool local_host_changed;
+               struct blob_attr *stun_list;
        } net_config;
 
        void *net_data;
        size_t net_data_len;
+       uint64_t net_data_version;
+       int num_net_queries;
+
+       struct uloop_timeout reload_timer;
 
        int ifindex;
        struct network_host *prev_local_host;
+
+       struct list_head dynamic_peers;
        struct avl_tree hosts;
        struct vlist_tree peers;
 
@@ -62,6 +72,7 @@ struct network {
        struct uloop_timeout connect_timer;
 
        struct network_pex pex;
+       struct network_stun stun;
 };
 
 enum {
@@ -76,6 +87,8 @@ enum {
        NETWORK_ATTR_KEEPALIVE,
        NETWORK_ATTR_DOMAIN,
        NETWORK_ATTR_TUNNELS,
+       NETWORK_ATTR_AUTH_CONNECT,
+       NETWORK_ATTR_PEER_DATA,
        __NETWORK_ATTR_MAX,
 };
 
@@ -87,7 +100,10 @@ static inline const char *network_name(struct network *net)
        return net->node.key;
 }
 
+bool network_skip_endpoint_route(struct network *net, union network_endpoint *ep);
 void network_fill_host_addr(union network_addr *addr, uint8_t *key);
+int network_save_dynamic(struct network *net);
+void network_soft_reload(struct network *net);
 void network_free_all(void);
 
 int unetd_network_add(const char *name, struct blob_attr *config);