Changeset 21383


Ignore:
Timestamp:
2010-05-06T01:24:11+02:00 (8 years ago)
Author:
jow
Message:

[package] base-files, ppp: remove protocol specific cleanup code from /sbin/ifdown and move it to protocol stop callbacks

Location:
trunk/package
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/base-files/files/lib/network/config.sh

    r20218 r21383  
    265265        set_interface_ifname "$config" "$iface_main" 
    266266 
    267         pidfile="/var/run/$iface_main.pid" 
    268267        [ -n "$proto" ] || config_get proto "$config" proto 
    269268        case "$proto" in 
     
    273272                ;; 
    274273                dhcp) 
     274                        local lockfile="/var/lock/dhcp-$iface_main" 
     275                        lock "$lockfile" 
     276 
    275277                        # prevent udhcpc from starting more than once 
    276                         lock "/var/lock/dhcp-$iface_main" 
     278                        local pidfile="/var/run/dhcp-${iface_main}.pid" 
    277279                        local pid="$(cat "$pidfile" 2>/dev/null)" 
    278                         if [ -d "/proc/$pid" ] && grep udhcpc "/proc/${pid}/cmdline" >/dev/null 2>/dev/null; then 
    279                                 lock -u "/var/lock/dhcp-$iface_main" 
     280                        if [ -d "/proc/$pid" ] && grep -qs udhcpc "/proc/${pid}/cmdline"; then 
     281                                lock -u "$lockfile" 
    280282                        else 
    281283                                local ipaddr netmask hostname proto1 clientid 
     
    293295                                [ ."$proto1" != ."$proto" ] && dhcpopts="-n -q" 
    294296                                $DEBUG eval udhcpc -t 0 -i "$iface_main" ${ipaddr:+-r $ipaddr} ${hostname:+-H $hostname} ${clientid:+-c $clientid} -b -p "$pidfile" ${dhcpopts:- -O rootpath -R &} 
    295                                 lock -u "/var/lock/dhcp-$iface_main" 
     297                                lock -u "$lockfile" 
    296298                        fi 
    297299                ;; 
     
    330332stop_interface_dhcp() { 
    331333        local config="$1" 
     334 
     335        local iface 
     336        config_get iface "$config" iface 
     337 
     338        local lock="/var/lock/dhcp-${iface}" 
     339        [ -f "$lock" ] && lock -u "$lock" 
     340 
     341        local pidfile="/var/run/dhcp-${iface}.pid" 
     342        local pid="$(cat "$pidfile" 2>/dev/null)" 
     343        [ -d "/proc/$pid" ] && { 
     344                grep -qs udhcpc "/proc/$pid/cmdline" && kill -TERM $pid && \ 
     345                        while grep -qs udhcpc "/proc/$pid/cmdline"; do sleep 1; done 
     346                rm -f "$pidfile" 
     347        } 
     348 
    332349        uci -P /var/state revert "network.$config" 
    333350} 
  • trunk/package/base-files/files/sbin/ifdown

    r17582 r21383  
    3030( type "stop_interface_$proto" ) >/dev/null 2>/dev/null && eval "stop_interface_$proto '$cfg'" 
    3131 
    32 # make sure all locks are removed 
    33 for lock in "/var/lock/dhcp-$iface" "/var/lock/ppp-$iface"; do 
    34         [ -f "$lock" ] && { 
    35                 lock -u "$lock" 
    36                 sleep 1 
    37         } 
    38 done 
    39  
    40 # kill active ppp daemon and other processes 
    41 config_get ifname "$cfg" ifname 
    42 pids="$(head -n1 -q /var/run/${ifname}.pid /var/run/ppp-${cfg}.pid 2>/dev/null)" 
    43 for pid in $pids; do  
    44         [ -d "/proc/$pid" ] && { 
    45                 kill $pid 
    46                 [ -d "/proc/$pid" ] && { 
    47                         sleep 1 
    48                         kill -9 $pid 2>/dev/null >/dev/null 
    49                 } 
    50         } 
    51 done 
    52 rm -f /var/run/${ifname}.pid /var/run/ppp-${cfg}.pid 
    53  
    5432config_get ifname "$cfg" ifname 
    5533config_get device "$cfg" device 
  • trunk/package/ppp/files/ppp.sh

    r21361 r21383  
    1111        [ -f "/var/run/ppp-${link}.pid" ] && { 
    1212                local pid="$(head -n1 /var/run/ppp-${link}.pid 2>/dev/null)" 
    13                 grep -qs pppd "/proc/$pid/cmdline" && kill -TERM $pid 
     13                grep -qs pppd "/proc/$pid/cmdline" && kill -TERM $pid && \ 
     14                        while grep -qs pppd "/proc/$pid/cmdline"; do sleep 1; done 
     15                rm -f "/var/run/ppp-${link}.pid" 
    1416        } 
     17 
     18        local lock="/var/lock/ppp-$link" 
     19        [ -f "$lock" ] && lock -u "$lock" 
    1520} 
    1621 
Note: See TracChangeset for help on using the changeset viewer.