Assembla home | Assembla project page
 

Changeset 16

Show
Ignore:
Timestamp:
08/29/07 00:54:15 (1 year ago)
Author:
evdowizard
Message:

fix keepalive lockups

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/imagebuilder/files/bin/keepalive

    r15 r16  
    11#!/bin/sh 
     2 
     3# ensure that only one instance of keepalive runs 
     4trap 'rm -f $lock; exit' TERM EXIT 
     5 
     6lock=/var/run/keepalive.pid 
     7if [ -e $lock ]; then 
     8        logger -p user.notice -t keepalive "Keepalive daemon is already running (PID `cat $lock`)" 
     9        echo "Keepalive daemon is already running (PID `cat $lock`)" 
     10        exit 1 
     11fi 
     12echo $$ >> $lock 
    213 
    314# variables 
     
    516peer=$(ifconfig ppp0 | grep 'P-t-P:' | cut -d: -f3 | awk '{print $1}') 
    617target=${target:-$peer} 
    7 max=$(nvram get wwan_keepalive_maxfail) 
    8 max=${max:-75} 
    9 log=/tmp/keepalive.log 
    1018 
    1119# functions 
    12 log() { 
    13 echo "`date '+%A %H:%M:%S'`: $1" >> $log 
    14 logger -t keepalive  "$1" 
     20status() { 
     21status=$(ping -c 1 -q $target | grep 'transmitted' | awk '{ print $4 }') 
     22
     23 
     24retry() { 
     25status 
     26if [ ! "$status" = "1" ]; then 
     27        reconnect 
     28fi 
    1529} 
    1630 
    1731reconnect() { 
    18 [ `cat /proc/diag/led/3g_blue` = "0" ] && exit 
    19 log "Exceeded ${max}% packet loss, reconnecting...
     32echo "`date '+%A %H:%M:%S'`: Reconnect" >> /tmp/keepalive.log 
     33logger -t keepalive  "Reconnect
    2034ifdown wwan 
    2135ifup wwan & 
     
    2438 
    2539# startup 
    26 log "Keepalive daemon started, maximum packet loss set to ${max}%" 
    2740sleep 10 
    2841 
    2942# loop 
    3043while [ `cat /proc/diag/led/3g_blue` = "1" ]; do 
    31 packetloss=`ping -c 10 -q $target | grep 'packet loss' | awk '{ print $7 }' | sed 's/%//'` 
    32 if [ $packetloss -gt $max ]; then 
    33         reconnect 
    34 fi 
     44        status 
     45        if [ ! "$status" = "1" ]; then 
     46                retry 
     47        fi 
     48sleep 10 
    3549done 
    36  
    3750exit