openwrt/package/network/services/unetd/files/unetd.sh
Felix Fietkau 40874f0934 unetd: update to the latest version
21360a1b1ce6 cli: fix typo
abfebece0af1 wg-linux: ship a copy of linux/wireguard.h
1cbb1a543cb3 pex: reduce unnecessary ping traffic
0c2f39e52d5d pex: remove pex event debug spam
dcf1362c2104 pex: add support for sending/receiving global PEX messages via unix socket
df5f70b8858c ubus: notify on network updates
e58a56697131 add DHT discovery service
be175767bc67 pex: keep active pex hosts after the specified timeout
543e4a3d2ed7 pex: move rx header check to callback function
395659b9c415 pex: move raw ip send code to sendto_rawudp() in utils.c
dda15ea8b3b2 pex: add utility function to get the sockets based on type / address family
e88f2cd4d3f0 utils: add support for passings address family to network_get_endpoint()
639cdcdf6eda pex: add support for figuring out the external data port via STUN servers
9144339ebe1f pex: improve handling of a longer list of PEX hosts
38212218ecdd unet-cli: add DHT support
0d37ca75434d pex: automatically create host entries from incoming endpoint port notifications
035fcc56ef60 host: keep multiple endpoint candidates, one for each type
a089e8ae7504 pex: avoid sending a query to a host more than once every 15 seconds

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2022-09-16 21:11:32 +02:00

100 lines
2.2 KiB
Bash

#!/bin/sh
[ -x /usr/sbin/unetd ] || exit 0
. /lib/functions.sh
. /lib/functions/network.sh
. ../netifd-proto.sh
init_proto "$@"
proto_unet_init_config() {
proto_config_add_string device
proto_config_add_string type
proto_config_add_string auth_key
proto_config_add_string key
proto_config_add_string file
proto_config_add_int keepalive
proto_config_add_string domain
proto_config_add_boolean dht
proto_config_add_array "tunnels:list(string)"
proto_config_add_array "connect:list(string)"
proto_config_add_array "peer_data:list(string)"
no_device=1
available=1
no_proto_task=1
}
proto_unet_setup() {
local config="$1"
local device type key file keepalive domain tunnels
json_get_vars device type auth_key key file keepalive domain dht
json_get_values tunnels tunnels
json_get_values connect connect
json_get_values peer_data peer_data
device="${device:-$config}"
[ -n "$auth_key" ] && type="${type:-dynamic}"
[ -n "$file" ] && type="${type:-file}"
json_init
json_add_string name "$device"
json_add_string type "$type"
json_add_string interface "$config"
json_add_string auth_key "$auth_key"
json_add_string key "$key"
json_add_string file "$file"
[ -n "$keepalive" ] && json_add_int keepalive "$keepalive"
[ -n "$dht" ] && json_add_boolean dht "$dht"
json_add_string domain "$domain"
json_add_object tunnels
for t in $tunnels; do
local ifname="${t%%=*}"
local service="${t#*=}"
[ -n "$ifname" -a -n "$service" -a "$ifname" != "$t" ] || continue
json_add_string "$ifname" "$service"
done
json_close_object
json_add_array auth_connect
for c in $connect; do
json_add_string "" "$c"
done
json_close_array
json_add_array peer_data
for c in $peer_data; do
json_add_string "" "$c"
done
json_close_array
ip link del dev "$device" >/dev/null 2>&1
ip link add dev "$device" type wireguard || {
echo "Could not create wireguard device $device"
proto_setup_failed "$config"
exit 1
}
ubus call unetd network_add "$(json_dump)"
}
proto_unet_teardown() {
local config="$1"
local iface="$2"
local device
json_get_vars device
device="${device:-$iface}"
json_init
json_add_string name "$device"
ip link del dev "$device"
ubus call unetd network_del "$(json_dump)"
}
add_protocol unet