Ignore:
Timestamp:
2011-03-10T10:12:33+01:00 (6 years ago)
Author:
jow
Message:

[backfire] merge r24778

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/base-files/files/usr/share/udhcpc/default.script

    r25453 r25996  
    1010        uci_revert_state "$1" "$2" "$3" "$4" 
    1111        uci_set_state "$1" "$2" "$3" "$4" 
     12} 
     13 
     14set_classless_routes() { 
     15        local max=128 
     16        local type 
     17        while [ -n "$1" -a -n "$2" -a $max -gt 0 ]; do 
     18                [ ${1##*/} -eq 32 ] && type=host || type=net 
     19                echo "udhcpc: adding route for $type $1 via $2" 
     20                route add -$type "$1" gw "$2" dev "$interface" 
     21                max=$(($max-1)) 
     22                shift 2 
     23        done 
    1224} 
    1325 
     
    6779 
    6880        # CIDR STATIC ROUTES (rfc3442) 
    69         [ -n "$cidrroute" ] && { 
    70                 # This defines how many CIDR Routes can be assigned so that we do not enter 
    71                 # an endless loop on malformed data 
    72                 MAXCIDRROUTES=24; 
    73                 while [ ${MAXCIDRROUTES} -gt "0" ]; do 
    74                         # Format is 
    75                         # $MASK $NW $GW 
    76                         # $NW == AAA.BBB.CCC.DDD 
    77                         # $GW == EEE.FFF.CCC.DDD 
    78                         # $MASK AAA.[BBB].[CCC].[DDD] EEE.FFF.GGG.HHH 
    79                         #   1    2    3     4     5    6   7   8   9 
    80                         MASK=$(echo $cidrroute | awk '{ print $1 }') 
    81                         if [ ${MASK} = "0" ] ; then 
    82                                 # $MASK EEE.FFF.GGG.HHH 
    83                                 #   1    2   3   5   6 
    84                                 NW="0" 
    85                                 GW=$(echo $cidrroute | awk '{ print $2"."$3"."$4"."$5 }' ) 
    86                         elif [ ${MASK} -le "8" ] ; then 
    87                                 # $MASK AAA EEE.FFF.GGG.HHH 
    88                                 #   1    2   3   5   6   7 
    89                                 NW=$(echo $cidrroute | awk '{ print $2 }' ) 
    90                                 GW=$(echo $cidrroute | awk '{ print $3"."$4"."$5"."$6 }' ) 
    91                         elif [ ${MASK} -le "16" ] ; then 
    92                                 # $MASK AAA.BBB EEE.FFF.GGG.HHH 
    93                                 #   1    2   3   5   6   7   8 
    94                                 NW=$(echo $cidrroute | awk '{ print $2"."$3 }' ) 
    95                                 GW=$(echo $cidrroute | awk '{ print $4"."$5"."$6"."$7 }' ) 
    96                         elif [ ${MASK} -le "24" ] ; then 
    97                                 # $MASK AAA.BBB.CCC EEE.FFF.GGG.HHH 
    98                                 #   1    2   3   4   5   6   7   8 
    99                                 NW=$(echo $cidrroute | awk '{ print $2"."$3"."$4 }' ) 
    100                                 GW=$(echo $cidrroute | awk '{ print $5"."$6"."$7"."$8 }' ) 
    101  
    102                         else 
    103                                 # $MASK AAA.BBB.CCC.DDD EEE.FFF.GGG.HHH 
    104                                 #   1    2   3   4   5   6   7   8   9 
    105                                 NW=$(echo $cidrroute | awk '{ print $2"."$3"."$4"."$5 }' ) 
    106                                 GW=$(echo $cidrroute | awk '{ print $6"."$7"."$8"."$9 }' ) 
    107                         fi 
    108                         echo [$ROUTECOUNTER] Route Network: $NW/$MASK Gateway: $GW on $interface 
    109  
    110                         # TODO: Check for malformed data here to eliminate counter workaround 
    111                         # Malformed data is: ... or xxx... or xxx.yyy.. or xxx.yyy.zzz. 
    112  
    113                         [ -n "$NW" ] && [ -n "$GW" ] && { 
    114                                 route add $NW gw $GW dev $interface 
    115                         } 
    116  
    117                         # Clear the strings incase they don't get set next time around 
    118                         if [ ${NW} = "0" ]; then 
    119                                 NW="" 
    120                         fi 
    121                         TMP="$MASK $NW $GW " 
    122                         NW="" 
    123                         GW="" 
    124  
    125                         # Remove the '.' so that we can delete them from the input with sed 
    126                         TMP=$(echo $TMP | sed "s/\./ /g") 
    127  
    128                         # Remove the previous entry from cidrroute 
    129                         cidrroute=$(echo $cidrroute | sed "s/$TMP//g") 
    130  
    131                         # Add to counter 
    132                         let ROUTECOUNTER=$ROUTECOUNTER+1; 
    133                         let MAXCIDRROUTES=$MAXCIDRROUTES-1; 
    134  
    135                         # Leave the loop if cidrroutes is empty (we've parsed everything) 
    136                         [ ! -n "$cidrroute" ] && break 
    137  
    138                 done 
    139  
    140                 echo "done." 
    141         } 
     81        [ -n "$staticroutes" ] && set_classless_routes $staticroutes 
     82        [ -n "$msstaticroutes" ] && set_classless_routes $msstaticroutes 
    14283 
    14384        # DNS 
Note: See TracChangeset for help on using the changeset viewer.