-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2022 Felix Fietkau <nbd@nbd.name>
*/
enum network_type {
NETWORK_TYPE_FILE,
NETWORK_TYPE_INLINE,
+ NETWORK_TYPE_DYNAMIC,
};
struct wg_ops;
int keepalive;
uint8_t key[CURVE25519_KEY_SIZE];
uint8_t pubkey[CURVE25519_KEY_SIZE];
+ uint8_t auth_key[CURVE25519_KEY_SIZE];
const char *file;
const char *interface;
const char *update_cmd;
const char *domain;
+ struct blob_attr *tunnels;
struct blob_attr *net_data;
+ struct blob_attr *auth_connect;
} config;
struct {
bool local_host_changed;
} 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 avl_tree hosts;
struct vlist_tree peers;
struct avl_tree groups;
- struct avl_tree services;
+ struct vlist_tree services;
struct uloop_timeout connect_timer;
NETWORK_ATTR_NAME,
NETWORK_ATTR_TYPE,
NETWORK_ATTR_KEY,
+ NETWORK_ATTR_AUTH_KEY,
NETWORK_ATTR_FILE,
NETWORK_ATTR_DATA,
NETWORK_ATTR_INTERFACE,
NETWORK_ATTR_UPDATE_CMD,
NETWORK_ATTR_KEEPALIVE,
NETWORK_ATTR_DOMAIN,
+ NETWORK_ATTR_TUNNELS,
+ NETWORK_ATTR_AUTH_CONNECT,
__NETWORK_ATTR_MAX,
};
}
void network_fill_host_addr(union network_addr *addr, uint8_t *key);
+int network_save_dynamic(struct network *net);
void network_free_all(void);
int unetd_network_add(const char *name, struct blob_attr *config);