5 [ $# = 0 ] && { echo " $0 <group>"; exit; }
11 export OPENWRT_INTERFACE
="$config"
13 config_get proto
"$config" proto
15 if [ "$proto" != "openconnect" ]; then
16 echo "Interface $config is $proto not openconnect" >&2
20 config_get device
"$config" device
23 config_get server
"$config" server
26 config_get port
"$config" port
27 if [ -n "$port" ]; then
34 config_get cookie
"$config" cookie
35 [ -n "$cookie" ] && args
="$args -C $cookie"
38 config_get username
"$config" username
39 [ -n "$username" ] && args
="$args -u $username"
42 config_get password
"$password" password
46 local lock
="/var/lock/openconnect-$config"
48 # creating the tunnel below will trigger a net subsystem event
49 # prevent it from touching or iface by disabling .auto here
50 uci_set_state network
"$config" ifname
$link
51 uci_set_state network
"$config" auto
0
56 for ip
in $
(resolveip
-4 -t 3 "$server"); do
57 append serv_addrs
"$ip"
58 route delete
-host "$ip" 2>/dev
/null
59 route add
-host "$ip" gw
"$gw"
61 uci_toggle_state network
"$config" serv_addrs
"$serv_addrs"
66 trap "[ -r /var/run/openconnect-$config-oc.pid ] && kill -HUP \$(cat /var/run/openconnect-$config-oc.pid)" SIGHUP
67 while [ "$(uci_get_state network ${config} up)" = "1" ]; do
69 if [ $RECON -gt $NOW ]; then
70 DELAY
=$
(expr $RECON - $NOW)
71 logger
-t openconnect
"Waiting for $DELAY seconds before reconnecting"
75 # The lock prevents a race condition where /lib/network/openconnect.sh could
76 # send us SIGHUP after we spawn openconnect, but before we store its pid.
77 # Thus leaving it running after we should have killed it.
79 echo "$passwd" |
/usr
/sbin
/openconnect
$args -i "vpn-$config" \
80 --no-cert-check --non-inter --passwd-on-stdin --syslog --script /etc
/vpnc
/vpnc-script
&
81 echo $
! > /var
/run
/openconnect-
$config-oc.pid
84 rm /var
/run
/openconnect-
$config-oc.pid
85 RECON
=$
(expr $NOW + 60)