1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2008-2011 OpenWrt.org
3 # Copyright (C) 2008 Jo-Philipp Wich
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
12 EXTRA_COMMANDS="up down"
20 *_*_*_*) v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_} ;;
21 *_*_*) v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_} ;;
22 *_*) v=${v%%_*}-${v#*_} ;;
29 local p; local v; local s="$1"; shift
31 config_get_bool v "$s" "$p"
32 [ "$v" == 1 ] && append_param "$p"
37 local p; local v; local s="$1"; shift
39 config_get v "$s" "$p"
42 [ -n "$v" ] && append_param "$p" && ARGS="$ARGS $v"
48 append_params_quoted() {
49 local p; local v; local s="$1"; shift
51 config_get v "$s" "$p"
54 [ -n "$v" ] && append_param "$p" && ARGS="$ARGS '$v'"
61 config_get_bool enable "$1" 'enable' 0
62 config_get_bool enabled "$1" 'enabled' 0
63 [ $enable -gt 0 ] || [ $enabled -gt 0 ]
69 section_enabled "$s" || return 1
75 auth_nocache auth_retry auth_user_pass_optional bind ccd_exclusive client client_cert_not_required \
76 client_disconnect client_to_client comp_lzo comp_noadapt disable \
77 disable_occ down_pre duplicate_cn fast_io float http_proxy_retry \
78 ifconfig_noexec ifconfig_nowarn ifconfig_pool_linear management_forget_disconnect management_hold \
79 management_query_passwords management_signal mktun mlock mtu_test multihome mute_replay_warnings \
80 nobind no_iv no_name_remapping no_replay opt_verify passtos persist_key persist_local_ip \
81 persist_remote_ip persist_tun ping_timer_rem pull push_reset \
82 remote_random rmtun route_noexec route_nopull single_session socks_proxy_retry \
83 suppress_timestamps tcp_nodelay test_crypto tls_client tls_exit tls_server \
84 tun_ipv6 up_delay up_restart username_as_common_name
88 cd askpass auth auth_user_pass auth_user_pass_verify bcast_buffers ca cert \
89 chroot cipher client_config_dir client_connect config connect_freq \
90 connect_retry connect_timeout connect_retry_max crl_verify dev dev_node dev_type dh \
91 echo engine explicit_exit_notify fragment group hand_window hash_size \
92 http_proxy http_proxy_option http_proxy_timeout ifconfig ifconfig_pool \
93 ifconfig_pool_persist ifconfig_push inactive ipchange iroute keepalive \
94 key key_method keysize learn_address link_mtu lladdr local log log_append \
95 lport management management_log_cache max_clients \
96 max_routes_per_client mode mssfix mtu_disc mute nice ns_cert_type ping \
97 ping_exit ping_restart pkcs12 plugin port port_share prng proto rcvbuf \
98 redirect_gateway remap_usr1 remote remote_cert_eku remote_cert_ku remote_cert_tls \
99 reneg_bytes reneg_pkts reneg_sec \
100 replay_persist replay_window resolv_retry route route_delay route_gateway \
101 route_metric route_up rport script_security secret server server_bridge setenv shaper sndbuf \
102 socks_proxy status status_version syslog tcp_queue_limit tls_auth \
103 tls_cipher tls_remote tls_timeout tls_verify tmp_dir topology tran_window \
104 tun_mtu tun_mtu_extra txqueuelen user verb
106 # append multi-value params
107 append_params_quoted "$s" \
111 SERVICE_PID_FILE="/var/run/openvpn-$s.pid"
112 service_start /usr/sbin/openvpn --syslog "openvpn($s)" --writepid "$SERVICE_PID_FILE" $ARGS
118 section_enabled "$s" || return 1
120 SERVICE_PID_FILE="/var/run/openvpn-$s.pid"
121 service_stop /usr/sbin/openvpn
127 section_enabled "$s" || return 1
129 SERVICE_PID_FILE="/var/run/openvpn-$s.pid"
130 service_reload /usr/sbin/openvpn
134 config_load 'openvpn'
135 config_foreach start_instance 'openvpn'
139 config_load 'openvpn'
140 config_foreach stop_instance 'openvpn'
144 config_load 'openvpn'
145 config_foreach reload_instance 'openvpn'
151 config_load 'openvpn'
152 for instance in "$@"; do
153 config_get exists "$instance" 'TYPE'
154 if [ "$exists" == "openvpn" ]; then
155 start_instance "$instance"
163 config_load 'openvpn'
164 for instance in "$@"; do
165 config_get exists "$instance" 'TYPE'
166 if [ "$exists" == "openvpn" ]; then
167 stop_instance "$instance"