2018-06-06 15:57:59 +00:00
|
|
|
#!/bin/sh /etc/rc.common
|
|
|
|
|
|
|
|
START=88
|
2020-09-13 06:40:10 +00:00
|
|
|
SERVICE_DAEMONIZE=1
|
|
|
|
#SERVICE_SIG="KILL"
|
2018-06-06 15:57:59 +00:00
|
|
|
|
|
|
|
|
2018-06-07 14:52:27 +00:00
|
|
|
interface_multipath_settings() {
|
|
|
|
local mode port
|
2018-06-06 15:57:59 +00:00
|
|
|
local config="$1"
|
|
|
|
id=$(($id+1))
|
2019-08-27 20:24:45 +00:00
|
|
|
config_get mode "$config" multipath ""
|
|
|
|
[ "$mode" = "" ] && {
|
|
|
|
mode="$(uci -q get openmptcprouter.$config.multipath)"
|
|
|
|
}
|
|
|
|
[ "$mode" = "off" ] || [ "$mode" = "" ] && return 1
|
2018-07-01 18:50:03 +00:00
|
|
|
config_get ifname "$config" ifname
|
|
|
|
[ -z "$ifname" ] && ifname=$(ifstatus "$config" | jsonfilter -q -e '@["l3_device"]')
|
|
|
|
[ -z "$ifname" ] && return 1
|
2020-09-14 17:41:13 +00:00
|
|
|
addr=$(ifstatus ${config} | jsonfilter -q -e '@["ipv4-address"][0].address')
|
2018-06-06 15:57:59 +00:00
|
|
|
count=$(($count+1))
|
2018-06-07 14:52:27 +00:00
|
|
|
port=$((firstport+count))
|
2018-06-06 15:57:59 +00:00
|
|
|
cat >> /tmp/etc/${interface_name}.conf <<-EOF
|
|
|
|
|
2020-09-13 06:40:10 +00:00
|
|
|
[${config}]
|
|
|
|
bindhost = "${addr}"
|
2018-07-01 18:50:03 +00:00
|
|
|
bindport = "${port}"
|
2018-06-07 14:52:27 +00:00
|
|
|
remotehost = "${host}"
|
2018-06-06 15:57:59 +00:00
|
|
|
remoteport = "${port}"
|
|
|
|
EOF
|
|
|
|
}
|
|
|
|
|
2020-09-10 19:02:09 +00:00
|
|
|
start() {
|
2018-06-07 14:52:27 +00:00
|
|
|
local enable timeout mode password reorder_buffer_size interface_name host firstport loss_tolerence
|
2020-09-13 06:40:10 +00:00
|
|
|
[ "$(uci -q get mlvpn.general.enable)" = "1" ] || return 1
|
|
|
|
interface_name="$(uci -q get mlvpn.general.interface_name)"
|
|
|
|
timeout="$(uci -q get mlvpn.general.timeout)"
|
|
|
|
mode="$(uci -q get mlvpn.general.mode)"
|
|
|
|
password="$(uci -q get mlvpn.general.password)"
|
|
|
|
reorder_buffer_size="$(uci -q get mlvpn.general.reorder_buffer_size)"
|
|
|
|
loss_tolerence="$(uci -q get mlvpn.general.loss_tolerence)"
|
|
|
|
host="$(uci -q get mlvpn.general.host)"
|
|
|
|
firstport="$(uci -q get mlvpn.general.firstport)"
|
2018-06-06 15:57:59 +00:00
|
|
|
|
2019-09-18 20:47:10 +00:00
|
|
|
if [ "$(uci -q get network.omrvpn)" != "${interface_name}" ]; then
|
2018-07-01 18:02:25 +00:00
|
|
|
uci -q set network.omrvpn.ifname=${interface_name}
|
|
|
|
uci -q commit
|
2018-06-06 15:57:59 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
cat > /tmp/etc/${interface_name}.conf <<-EOF
|
|
|
|
[general]
|
|
|
|
tuntap = "tun"
|
|
|
|
mode = "${mode}"
|
|
|
|
interface_name = "${interface_name}"
|
|
|
|
timeout = ${timeout}
|
2020-09-13 06:40:10 +00:00
|
|
|
#reorder_buffer = yes
|
2018-06-06 15:57:59 +00:00
|
|
|
reorder_buffer_size = ${reorder_buffer_size}
|
2020-09-13 06:40:10 +00:00
|
|
|
#loss_tolerence = ${loss_tolerence}
|
2018-06-06 15:57:59 +00:00
|
|
|
password = "${password}"
|
2020-02-05 21:04:19 +00:00
|
|
|
mtu = 1452
|
2018-06-06 15:57:59 +00:00
|
|
|
EOF
|
2018-06-07 14:52:27 +00:00
|
|
|
|
2018-06-06 15:57:59 +00:00
|
|
|
local count=0 id=0
|
|
|
|
config_load network
|
2018-06-07 14:52:27 +00:00
|
|
|
config_foreach interface_multipath_settings interface
|
2018-06-06 15:57:59 +00:00
|
|
|
|
|
|
|
chmod 0600 "/tmp/etc/${interface_name}.conf"
|
2020-09-13 06:40:10 +00:00
|
|
|
service_start /usr/sbin/mlvpn -c /tmp/etc/${interface_name}.conf --user nobody
|
2020-09-10 19:02:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
stop() {
|
2020-09-13 06:40:10 +00:00
|
|
|
service_stop /usr/sbin/mlvpn
|
2018-06-06 15:57:59 +00:00
|
|
|
}
|