| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/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
|