Correctly get runtime LAN ifname and addresses
authorQian <billsq@billsq.me>
Wed, 26 Apr 2017 00:02:53 +0000 (17:02 -0700)
committerQian <billsq@billsq.me>
Wed, 26 Apr 2017 00:02:53 +0000 (17:02 -0700)
1. Correctly get LAN runtime ifname and addresses using network
functions
2. Do not store ip settings in config files as they may change next
time.

net/ocserv/files/ocserv.init [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index bce9339..63d0caa
@@ -3,6 +3,8 @@
 START=50
 USE_PROCD=1
 
+. $IPKG_INSTROOT/lib/functions/network.sh
+
 setup_config() {
        config_get port         $1 port "4443"
        config_get max_clients  $1 max_clients "8"
@@ -33,26 +35,27 @@ setup_config() {
                                uci set dhcp.lan.start=100
                                uci set dhcp.lan.limit=91
                        fi
-                       ip=$(uci get network.lan.ipaddr)
+                       network_get_ipaddr ip lan
                        ipaddr="$(echo $ip|cut -d . -f1,2,3).192"
                        netmask="255.255.255.192"
-                       uci set ocserv.config.ipaddr="$ipaddr"
-                       uci set ocserv.config.netmask="$netmask"
-                       uci commit
                fi
 
                if test -z "$ip6addr";then
-                       ip6addr=$(uci get network.lan.ip6addr 2>/dev/null)
-                       test -n "$ip6addr" && uci set ocserv.config.ip6addr="$ip6addr"
-                       uci commit
+                       network_get_ipaddr6 ip6addr lan
+                       # Append ipv6 prefix
+                       test -n "$ip6addr" && ip6addr="$ip6addr/96"
                fi
 
                ping_leases=1
-               test -n "$ipaddr" && sysctl -w "net.ipv4.conf.$(uci get network.lan.ifname).proxy_arp"=1 >/dev/null
-               test -n "$ip6addr" && sysctl -w "net.ipv6.conf.$(uci get network.lan.ifname).proxy_ndp"=1 >/dev/null
+               local ifname
+               network_get_device ifname lan
+               if test -n "ifname";then
+                       test -n "$ipaddr" && sysctl -w "net.ipv4.conf.$ifname.proxy_arp"=1 >/dev/null
+                       test -n "$ip6addr" && sysctl -w "net.ipv6.conf.$ifname.proxy_ndp"=1 >/dev/null
+               fi
        else
-               test "$ipaddr" = "" && ipaddr="192.168.100.0"
-               test "$netmask" = "" && ipaddr="255.255.255.0"
+               test -z "$ipaddr" && ipaddr="192.168.100.0"
+               test -z "$netmask" && netmask="255.255.255.0"
        fi
 
        enable_default_domain="#"
@@ -147,7 +150,7 @@ start_service() {
        [ -f /etc/config/ocserv-dir/ca-key.pem ] && mv /etc/config/ocserv-dir/ca-key.pem /etc/ocserv/ca-key.pem
        [ -f /etc/config/ocserv-dir/ca.pem ] && mv /etc/config/ocserv-dir/ca.pem /etc/ocserv/ca.pem
        [ -f /etc/config/ocserv-dir/server-key.pem ] && mv /etc/config/ocserv-dir/server-key.pem /etc/ocserv/server-key.pem
-       [ -f /etc/config/ocserv-dir/server-cert.pem ] && mv /etc/config/ocserv-dir/server-cert.pem /etc/ocserv/server-cert.pem 
+       [ -f /etc/config/ocserv-dir/server-cert.pem ] && mv /etc/config/ocserv-dir/server-cert.pem /etc/ocserv/server-cert.pem
        [ -d /etc/config/ocserv-dir ] && rmdir /etc/config/ocserv-dir
 
        [ ! -f /etc/ocserv/ca-key.pem ] && [ -x /usr/bin/certtool ] && {