2 ip route get
$1 |
sed -e 's/ /\n/g' | \
3 sed -ne '1p;/via/{N;p};/dev/{N;p};/src/{N;p};/mtu/{N;p}'
7 config_set
"$1" device
"l2tp-$1"
10 stop_interface_l2tp
() {
12 local lock
="/var/lock/l2tp-${config}"
13 local optfile
="/tmp/l2tp/options.${config}"
14 local l2tpcontrol
=/var
/run
/xl2tpd
/l2tp-control
18 [ -p ${l2tpcontrol} ] && echo "r l2tp-${config}" > ${l2tpcontrol}
21 for ip
in $
(uci_get_state network
"$1" serv_addrs
); do
22 ip route del
"$ip" 2>/dev
/null
28 setup_interface_l2tp
() {
30 local lock
="/var/lock/l2tp-${config}"
31 local optfile
="/tmp/l2tp/options.${config}"
35 if [ ! -p /var
/run
/xl2tpd
/l2tp-control
]; then
36 /etc
/init.d
/xl2tpd start
40 config_get device
"$config" device
"l2tp-$config"
43 config_get server
"$config" server
46 config_get username
"$config" username
49 config_get password
"$config" password
52 config_get keepalive
"$config" keepalive
55 config_get pppd_options
"$config" pppd_options
58 config_get_bool defaultroute
"$config" defaultroute
1
59 [ "$defaultroute" -eq 1 ] && \
60 defaultroute
="defaultroute replacedefaultroute" || defaultroute
="nodefaultroute"
62 local interval
="${keepalive##*[, ]}"
63 [ "$interval" != "$keepalive" ] || interval
=5
66 config_get dns
"$config" dns
76 config_get_bool peerdns
"$config" peerdns
$peer_default
78 [ "$peerdns" -eq 1 ] && {
82 add_dns
"$config" $dns
86 config_get ipv6
"$config" ipv6
1
87 [ "$ipv6" -eq 1 ] && ipv6
="+ipv6" || ipv6
=""
90 for ip
in $
(resolveip
-t 3 "$server"); do
91 append serv_addrs
"$ip"
92 ip route replace $
(find_route
$ip)
94 uci_toggle_state network
"$config" serv_addrs
"$serv_addrs"
97 config_get netmask
"$config" netmask
98 [ -z "$netmask" -o -z "$device" ] || ifconfig
$device netmask
$netmask
100 config_get mtu
"$config" mtu
104 echo ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} > "${optfile}"
105 echo "$peerdns" >> "${optfile}"
106 echo "$defaultroute" >> "${optfile}"
107 echo "${username:+user \"$username\" password \"$password\"}" >> "${optfile}"
108 echo "ipparam
\"$config\"" >> "${optfile}"
109 echo "ifname
\"l2tp-
$config\"" >> "${optfile}"
110 # Don't wait for LCP term responses; exit immediately when killed.
111 echo "lcp-max-terminate
0" >> "${optfile}"
112 echo "${ipv6} ${pppd_options}" >> "${optfile}"
114 xl2tpd-control remove l2tp-${config}
115 # Wait and ensure pppd has died.
116 while [ -d /sys/class/net/l2tp-${config} ]; do
120 xl2tpd-control add l2tp-${config} pppoptfile=${optfile} lns=${server} redial=yes redial timeout=20
121 xl2tpd-control connect l2tp-${config}