Ignore:
Timestamp:
2010-05-24T19:06:58+02:00 (7 years ago)
Author:
jow
Message:

[backfire] merge ppp, pppoe, pptp and 3g fixes
r21283, r21284, r21285, r21287, r21302, r21303, r21341,
r21361, r21379, r21383, r21386, r21387, r21388, r21389,
r21390, r21391, r21392, r21393, r21426, r21556, r21563

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/ppp/files/ppp.sh

    r21281 r21564  
    1 scan_ppp() { 
    2         config_get ifname "$1" ifname 
    3         pppdev="${pppdev:-0}" 
    4         config_get devunit "$1" unit 
    5         { 
    6                 unit= 
    7                 pppif= 
    8                 if [ ! -d /tmp/.ppp-counter ]; then 
    9                      mkdir -p /tmp/.ppp-counter 
    10                 fi 
    11                 local maxunit 
    12                 maxunit="$(cat /tmp/.ppp-counter/max-unit 2>/dev/null)"  
    13                 if [ -z "$maxunit" ]; then 
    14                     maxunit=-1 
    15                 fi 
    16                 local i 
    17                 i=0 
    18                 while [ $i -le $maxunit ]; do 
    19                      local unitdev 
    20                      unitdev="$(cat /tmp/.ppp-counter/ppp${i} 2>/dev/null)" 
    21                      if [ "$unitdev" = "$1" ]; then 
    22                           unit="$i" 
    23                           pppif="ppp${i}" 
    24                           break 
    25                      fi 
    26                      i="$(($i + 1))" 
    27                 done  
    28                 if [ -z "$unit" ] || [ -z "$pppif" ]; then 
    29                     maxunit="$(($maxunit + 1))" 
    30                     if [ -n "$devunit" ]; then 
    31                         unit="$devunit" 
    32                     elif [ "${ifname%%[0-9]*}" = ppp ]; then 
    33                          unit="${ifname##ppp}" 
    34                     else 
    35                          unit="$maxunit" 
    36                     fi  
    37                     [ "$maxunit" -lt "$unit" ] && maxunit="$unit" 
    38                     pppif="ppp${unit}" 
    39                     echo "$1" >/tmp/.ppp-counter/$pppif 2>/dev/null 
    40                     echo "$maxunit" >/tmp/.ppp-counter/max-unit 2>/dev/null 
    41                 fi 
    42                 config_set "$1" ifname "ppp$unit" 
    43                 config_set "$1" unit "$unit" 
     1stop_interface_ppp() { 
     2        local cfg="$1" 
     3 
     4        local proto 
     5        config_get proto "$cfg" proto 
     6 
     7        local link="$proto-$cfg" 
     8        [ -f "/var/run/ppp-${link}.pid" ] && { 
     9                local pid="$(head -n1 /var/run/ppp-${link}.pid 2>/dev/null)" 
     10                local try=0 
     11                grep -qs pppd "/proc/$pid/cmdline" && kill -TERM $pid && \ 
     12                        while grep -qs pppd "/proc/$pid/cmdline" && [ $((try++)) -lt 5 ]; do sleep 1; done 
     13                grep -qs pppd "/proc/$pid/cmdline" && kill -KILL $pid && \ 
     14                        while grep -qs pppd "/proc/$pid/cmdline"; do sleep 1; done 
     15                rm -f "/var/run/ppp-${link}.pid" 
    4416        } 
     17 
     18        remove_dns "$cfg" 
     19 
     20        local lock="/var/lock/ppp-$link" 
     21        [ -f "$lock" ] && lock -u "$lock" 
    4522} 
    4623 
    4724start_pppd() { 
    4825        local cfg="$1"; shift 
    49         local ifname 
    5026 
    51         # make sure the network state references the correct ifname 
    52         scan_ppp "$cfg" 
    53         config_get ifname "$cfg" ifname 
    54         set_interface_ifname "$cfg" "$ifname" 
     27        local proto 
     28        config_get proto "$cfg" proto 
     29 
     30        # unique link identifier 
     31        local link="${proto:-ppp}-$cfg" 
    5532 
    5633        # make sure only one pppd process is started 
    57         lock "/var/lock/ppp-${cfg}" 
    58         local pid="$(head -n1 /var/run/ppp-${cfg}.pid 2>/dev/null)" 
     34        lock "/var/lock/ppp-${link}" 
     35        local pid="$(head -n1 /var/run/ppp-${link}.pid 2>/dev/null)" 
    5936        [ -d "/proc/$pid" ] && grep pppd "/proc/$pid/cmdline" 2>/dev/null >/dev/null && { 
    60                 lock -u "/var/lock/ppp-${cfg}" 
     37                lock -u "/var/lock/ppp-${link}" 
    6138                return 0 
    6239        } 
     
    6845        local device 
    6946        config_get device "$cfg" device 
    70  
    71         local unit 
    72         config_get unit "$cfg" unit 
    7347 
    7448        local username 
     
    9266        local defaultroute 
    9367        config_get_bool defaultroute "$cfg" defaultroute 1 
    94         [ "$defaultroute" -eq 1 ] && defaultroute="defaultroute replacedefaultroute" || defaultroute="" 
     68        [ "$defaultroute" -eq 1 ] && \ 
     69                defaultroute="defaultroute replacedefaultroute" || defaultroute="nodefaultroute" 
    9570 
    9671        local interval="${keepalive##*[, ]}" 
     
    11085        config_get_bool peerdns "$cfg" peerdns $peer_default 
    11186 
    112         echo -n "" > /tmp/resolv.conf.auto 
    113  
    11487        [ "$peerdns" -eq 1 ] && { 
    11588                peerdns="usepeerdns" 
    11689        } || { 
    11790                peerdns="" 
    118                 for dns in $dns; do 
    119                         echo "nameserver $dns" >> /tmp/resolv.conf.auto 
    120                 done 
     91                add_dns "$cfg" $dns 
    12192        } 
    12293 
     
    12798        [ "$demand" -eq 1 ] && { 
    12899                demandargs="precompiled-active-filter /etc/ppp/filter demand idle" 
    129                 [ "$has_dns" -eq 0 ] && \ 
    130                         echo "nameserver 1.1.1.1" > /tmp/resolv.conf.auto 
     100                [ "$has_dns" -eq 0 ] && add_dns "$cfg" 1.1.1.1 
    131101        } || { 
    132102                demandargs="persist" 
     
    137107        [ "$ipv6" -eq 1 ] && ipv6="+ipv6" || ipv6="" 
    138108 
    139         /usr/sbin/pppd "$@" \ 
     109        start-stop-daemon -S -b -x /usr/sbin/pppd -m -p /var/run/ppp-$link.pid -- "$@" \ 
    140110                ${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \ 
    141111                $demandargs \ 
     
    143113                $defaultroute \ 
    144114                ${username:+user "$username" password "$password"} \ 
    145                 unit "$unit" \ 
    146                 linkname "$cfg" \ 
    147115                ipparam "$cfg" \ 
     116                ifname "$link" \ 
    148117                ${connect:+connect "$connect"} \ 
    149118                ${disconnect:+disconnect "$disconnect"} \ 
    150119                ${ipv6} \ 
    151                 ${pppd_options} 
     120                ${pppd_options} \ 
     121                nodetach 
    152122 
    153         lock -u "/var/lock/ppp-${cfg}" 
     123        lock -u "/var/lock/ppp-${link}" 
    154124} 
    155125 
Note: See TracChangeset for help on using the changeset viewer.