parent
b76a1b49aa
commit
3225530e1e
@ -0,0 +1,57 @@ |
||||
find_route() { |
||||
ip route get $1 | sed -e 's/ /\n/g' | \ |
||||
sed -ne '1p;/via/{N;p};/dev/{N;p};/src/{N;p};/mtu/{N;p}' |
||||
} |
||||
|
||||
scan_pptp() { |
||||
config_set "$1" device "pptp-$1" |
||||
} |
||||
|
||||
stop_interface_pptp() { |
||||
stop_interface_ppp "$1" |
||||
for ip in $(uci_get_state network "$1" serv_addrs); do |
||||
ip route del "$ip" 2>/dev/null |
||||
done |
||||
} |
||||
|
||||
coldplug_interface_pptp() { |
||||
setup_interface_pptp "pptp-$1" "$1" |
||||
} |
||||
|
||||
setup_interface_pptp() { |
||||
local config="$2" |
||||
local ifname |
||||
|
||||
local device |
||||
config_get device "$config" device |
||||
|
||||
local server |
||||
config_get server "$config" server |
||||
|
||||
local buffering |
||||
config_get_bool buffering "$config" buffering 1 |
||||
[ "$buffering" == 0 ] && buffering="--nobuffer" || buffering= |
||||
|
||||
for module in slhc ppp_generic ppp_async ip_gre; do |
||||
/sbin/insmod $module 2>&- >&- |
||||
done |
||||
sleep 1 |
||||
|
||||
local serv_addrs="" |
||||
for ip in $(resolveip -t 3 "${server}"); do |
||||
append serv_addrs "$ip" |
||||
ip route replace $(find_route $ip) |
||||
done |
||||
uci_toggle_state network "$config" serv_addrs "$serv_addrs" |
||||
|
||||
# fix up the netmask |
||||
config_get netmask "$config" netmask |
||||
[ -z "$netmask" -o -z "$device" ] || ifconfig $device netmask $netmask |
||||
|
||||
config_get mtu "$config" mtu |
||||
mtu=${mtu:-1452} |
||||
start_pppd "$config" \ |
||||
pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd $buffering" \ |
||||
file /etc/ppp/options.pptp \ |
||||
mtu $mtu mru $mtu |
||||
} |
@ -1,57 +1,45 @@ |
||||
find_route() { |
||||
ip route get $1 | sed -e 's/ /\n/g' | \ |
||||
sed -ne '1p;/via/{N;p};/dev/{N;p};/src/{N;p};/mtu/{N;p}' |
||||
} |
||||
#!/bin/sh |
||||
|
||||
scan_pptp() { |
||||
config_set "$1" device "pptp-$1" |
||||
} |
||||
. /etc/functions.sh |
||||
. ../netifd-proto.sh |
||||
init_proto "$@" |
||||
|
||||
stop_interface_pptp() { |
||||
stop_interface_ppp "$1" |
||||
for ip in $(uci_get_state network "$1" serv_addrs); do |
||||
ip route del "$ip" 2>/dev/null |
||||
done |
||||
} |
||||
INCLUDE_ONLY=1 |
||||
. ./ppp.sh |
||||
|
||||
coldplug_interface_pptp() { |
||||
setup_interface_pptp "pptp-$1" "$1" |
||||
proto_pptp_init_config() { |
||||
ppp_generic_init_config |
||||
proto_config_add_string "server" |
||||
proto_config_add_boolean "buffering" |
||||
available=1 |
||||
no_device=1 |
||||
} |
||||
|
||||
setup_interface_pptp() { |
||||
local config="$2" |
||||
local ifname |
||||
|
||||
local device |
||||
config_get device "$config" device |
||||
proto_pptp_setup() { |
||||
local config="$1" |
||||
local iface="$2" |
||||
local load |
||||
|
||||
local server |
||||
config_get server "$config" server |
||||
json_get_var server server |
||||
proto_add_host_dependency "$config" "$server" |
||||
|
||||
local buffering |
||||
config_get_bool buffering "$config" buffering 1 |
||||
[ "$buffering" == 0 ] && buffering="--nobuffer" || buffering= |
||||
json_get_var buffering buffering |
||||
[ "${buffering:-1}" == 0 ] && buffering="--nobuffer" || buffering= |
||||
|
||||
for module in slhc ppp_generic ppp_async ip_gre; do |
||||
grep -q "$module" /proc/modules && continue |
||||
/sbin/insmod $module 2>&- >&- |
||||
load=1 |
||||
done |
||||
sleep 1 |
||||
[ "$load" = "1" ] && sleep 1 |
||||
|
||||
local serv_addrs="" |
||||
for ip in $(resolveip -t 3 "${server}"); do |
||||
append serv_addrs "$ip" |
||||
ip route replace $(find_route $ip) |
||||
done |
||||
uci_toggle_state network "$config" serv_addrs "$serv_addrs" |
||||
|
||||
# fix up the netmask |
||||
config_get netmask "$config" netmask |
||||
[ -z "$netmask" -o -z "$device" ] || ifconfig $device netmask $netmask |
||||
|
||||
config_get mtu "$config" mtu |
||||
mtu=${mtu:-1452} |
||||
start_pppd "$config" \ |
||||
ppp_generic_setup "$config" \ |
||||
pty "/usr/sbin/pptp $server --loglevel 0 --nolaunchpppd $buffering" \ |
||||
file /etc/ppp/options.pptp \ |
||||
mtu $mtu mru $mtu |
||||
file /etc/ppp/options.pptp |
||||
} |
||||
|
||||
proto_pptp_teardown() { |
||||
ppp_generic_teardown "$@" |
||||
} |
||||
|
||||
add_protocol pptp |
||||
|
Loading…
Reference in new issue