aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/openvpn/files/openvpn.init
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/openvpn/files/openvpn.init')
-rw-r--r--package/network/services/openvpn/files/openvpn.init37
1 files changed, 36 insertions, 1 deletions
diff --git a/package/network/services/openvpn/files/openvpn.init b/package/network/services/openvpn/files/openvpn.init
index a560b89ff2..a454eb4ba0 100644
--- a/package/network/services/openvpn/files/openvpn.init
+++ b/package/network/services/openvpn/files/openvpn.init
@@ -69,6 +69,40 @@ section_enabled() {
[ $enable -gt 0 ] || [ $enabled -gt 0 ]
}
+openvpn_get_dev() {
+ local dev dev_type
+ local name="$1"
+ local conf="$2"
+
+ # Do override only for configurations with config_file
+ config_get config_file "$name" config
+ [ -n "$config_file" ] || return
+
+ # Check there is someething to override
+ config_get dev "$name" dev
+ config_get dev_type "$name" dev_type
+ [ -n "$dev" ] || return
+
+ # If there is a no dev_type, try to guess it
+ if [ -z "$dev_type" ]; then
+ . /lib/functions/openvpn.sh
+
+ local odev odev_type
+ get_openvpn_option "$conf" odev dev
+ get_openvpn_option "$conf" odev_type dev-type
+ [ -n "$odev_type" ] || odev_type="$odev"
+
+ case "$odev_type" in
+ tun*) dev_type="tun" ;;
+ tap*) dev_type="tap" ;;
+ *) return;;
+ esac
+ fi
+
+ # Return overrides
+ echo "--dev-type $dev_type --dev $dev"
+}
+
openvpn_add_instance() {
local name="$1"
local dir="$2"
@@ -83,7 +117,8 @@ openvpn_add_instance() {
--config "$conf" \
--up "/usr/libexec/openvpn-hotplug up $name" \
--down "/usr/libexec/openvpn-hotplug down $name" \
- --script-security "${security:-2}"
+ --script-security "${security:-2}" \
+ $(openvpn_get_dev "$name" "$conf")
procd_set_param file "$dir/$conf"
procd_set_param term_timeout 15
procd_set_param respawn