Changeset 3057

Show
Ignore:
Timestamp:
07/01/07 18:28:53 (5 years ago)
Author:
spaetzle
Message:

- updated wl-broadcom script to work with latest wl

this is untested but the old one doesn't work and
i have no time to test next days

- removed output noise from ifup, used mprint instead of echo

- updated manual stuff, from now manual doesn't configure iface

but sets it up or down

- removed bridge shutdown if bridge init fails

not to 100 percent complete initialized bridge is better than
having no network, the normal user doesn't have serial access

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/freewrt/package/broadcom-wl/Makefile

    r2958 r3057  
    99PKG_NAME:=              broadcom-wl 
    1010PKG_VERSION:=           4.80.53.0 
    11 PKG_RELEASE:=           4 
     11PKG_RELEASE:=           6 
    1212PKG_MD5SUM:=            a7d8dde3ce474c361143b83e1d9890b1 
    1313PKG_MODULE:=            11 
  • trunk/freewrt/package/broadcom-wl/files/wl-broadcom

    r2958 r3057  
    99# 
    1010 
     11 
     12init_debug() { 
     13        err=$(eval "$*" 2>&1) && return 0 
     14        mstate 1 
     15        merr "Driver init error" 
     16        mprint -s "${*}: $err" 
     17        return 0 
     18} 
     19 
    1120iface_type() { 
    1221        [ x"$IF_WIRELESS_TYPE" = x"broadcom" ] && echo $IFACE | grep -q ^wl[0-9] 
     
    1524security_none() { 
    1625        wsec=0 
    17 #       init_debug wlc ifname $IFACE wsec 0 
    18 #       init_debug wlc ifname $IFACE ssid $IF_WIRELESS_SSID 
     26        [ x"$IF_WIRELESS_MODE" = x"sta" ] && init_debug wl join $IF_WIRELESS_SSID 
    1927} 
    2028 
    2129security_wep() { 
    2230        wsec=1 
    23         init_debug wlc ifname $IFACE wpa_auth 0 
    24 #       init_debug wlc ifname $IFACE wsec 1 
    25  
    26         case $IF_WIRELESS_AUTHORIZATION in 
    27                 open) 
    28                         merr "Wireless authorisation $IF_WIRELESS_AUTHORIZATION is not supported" 
    29                         return 1 
    30                 ;; 
    31                 shared) 
    32                         merr "Wireless authorisation $IF_WIRELESS_AUTHORIZATION is not supported" 
    33                         return 1 
    34                 ;; 
    35                 open+shared) 
    36                         merr "Wireless authorisation $IF_WIRELESS_AUTHORIZATION is not supported" 
    37                         return 1 
    38                 ;; 
    39                 *) 
    40                         merr "Wrong wireless authorisation $IF_WIRELESS_AUTHORIZATION for security wep" 
    41                         return 1 
    42                 ;; 
    43         esac 
    44  
    45         [ -n "$IF_WIRELESS_KEY1" ] && init_debug wl addwep 0 $IF_WIRELESS_KEY1 
    46         [ -n "$IF_WIRELESS_KEY2" ] && init_debug wl addwep 1 $IF_WIRELESS_KEY2 
    47         [ -n "$IF_WIRELESS_KEY3" ] && init_debug wl addwep 2 $IF_WIRELESS_KEY3 
    48         [ -n "$IF_WIRELESS_KEY4" ] && init_debug wl addwep 3 $IF_WIRELESS_KEY4 
    49         [ -n "$IF_WIRELESS_KEY" ] && init_debug wl primary_key $(($IF_WIRELESS_KEY-1)) 
     31        init_debug wl eap 0 
     32        init_debug wl wpa_auth 0 
     33 
     34        if [ x"$IF_WIRELESS_MODE" = x"sta" ]; then 
     35                case $IF_WIRELESS_AUTHORIZATION in 
     36                        shared) 
     37                                authorization=shared 
     38                                ;; 
     39                        *) 
     40                                authorization=open 
     41                                ;; 
     42                esac 
     43 
     44                init_debug wl join $IF_WIRELESS_SSID key $IF_WIRELESS_KEY1 \ 
     45                        amode $authorization 
     46                return 0 
     47        else 
     48                [ -n "$IF_WIRELESS_KEY1" ] && init_debug wl addwep 0 $IF_WIRELESS_KEY1 
     49                [ -n "$IF_WIRELESS_KEY2" ] && init_debug wl addwep 1 $IF_WIRELESS_KEY2 
     50                [ -n "$IF_WIRELESS_KEY3" ] && init_debug wl addwep 2 $IF_WIRELESS_KEY3 
     51                [ -n "$IF_WIRELESS_KEY4" ] && init_debug wl addwep 3 $IF_WIRELESS_KEY4 
     52                [ -n "$IF_WIRELESS_KEY" ] && init_debug wl primary_key \ 
     53                        $(($IF_WIRELESS_KEY-1)) 
     54        fi 
    5055} 
    5156 
    5257security_wpapsk() { 
    5358        local postup 
    54  
    55         init_debug wl eap off 
    5659 
    5760        case $IF_WIRELESS_AUTHORIZATION in 
     
    7275        esac 
    7376 
     77        init_debug wl eap 0 
    7478        init_debug wl wpa_auth $auth 
    7579 
    76         if [ x"$IF_WIRELESS_MODE" = x"wds" ] 
    77         then 
    78                 # nas needs some time before it can accept wds connections 
    79                 touch /tmp/.nas_wait 
    80                 (sleep 10; rm -f /tmp/.nas_wait) & 
    81         fi 
    82  
     80        # don't handle wds as special case, i think its only interesting 
     81        # if we have routed or bridged networking 
    8382        if bridged_mode 
    8483        then 
    8584                cat > ${postup}/postup <<! 
    8685mprint -n "Starting nas daemon" 
    87 /usr/sbin/nas -P /var/run/nas.lan.pid -l $BRIDGE_IFACE -H 34954 -i $IFACE $nas_auth -m $auth \ 
    88         -k $IF_WIRELESS_WPA_KEY -s $IF_WIRELESS_SSID -w $wsec -g $gtk_rekey & 
     86/usr/sbin/nas -P /var/run/nas.lan.pid -l $BRIDGE_IFACE -H 34954 -i $IFACE \ 
     87$nas_auth -m $auth -k $IF_WIRELESS_WPA_KEY -s $IF_WIRELESS_SSID -w $wsec \ 
     88-g $gtk_rekey & 
    8989mstate 0 
    9090! 
     
    9292                # routed 
    9393                mprint -n "Starting nas daemon" 
    94                 /usr/sbin/nas -P /var/run/nas.lan.pid  -H 34954 -i $IFACE $nas_auth -m $auth \ 
    95                         -k "${IF_WIRELESS_WPA_KEY:-""}" -s "$IF_WIRELESS_SSID" -w $wsec -g $gtk_rekey & 
     94                /usr/sbin/nas -P /var/run/nas.lan.pid  -H 34954 -i $IFACE $nas_auth \ 
     95                -m $auth -k "${IF_WIRELESS_WPA_KEY:-""}" -s "$IF_WIRELESS_SSID" \ 
     96                -w $wsec -g $gtk_rekey & 
    9697                mstate 0 
    9798        fi 
     
    103104        case $IF_WIRELESS_AUTHORIZATION in 
    104105                wep) 
    105                         init_debug wl wpa_auth 0 
    106                         mprint -n "Starting nas daemon" 
    107                         /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 -i $IFACE & 
    108                         mstate 0 
    109                         return 
     106                        auth=0 
     107                        # only honour bridged or routed 
     108                        if bridged_mode; then 
     109                                cat > ${postup}/postup <<! 
     110mprint -n "Starting nas daemon" 
     111/usr/sbin/nas -P /var/run/nas.lan.pid -l $BRIDGE_IFACE -H 34954 -i $IFACE & 
     112mstate 0 
     113
     114                        else 
     115                                mprint -n "Starting nas daemon" 
     116                                /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 -i $IFACE & 
     117                                mstate 0 
     118                        fi 
     119                        return 0 
    110120                ;; 
    111121                wpa) 
     
    125135 
    126136        init_debug wl wpa_auth $auth 
     137        init_debug wl eap 0 
    127138 
    128139        if bridged_mode 
     
    130141                cat > ${postup}/postup <<! 
    131142mprint -n "Starting nas daemon" 
    132 /usr/sbin/nas -P /var/run/nas.lan.pid $BRIDGE_IFACE -H 34954 -i $IFACE -A -m $auth -r "${IF_WIRELESS_RADIUS_KEY:-""}" \ 
    133 -h ${IF_WIRELESS_RADIUS_IPADDR:-""} -p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 -s "$IF_WIRELESS_SSID" \ 
     143/usr/sbin/nas -P /var/run/nas.lan.pid $BRIDGE_IFACE -H 34954 -i $IFACE -A \ 
     144-m $auth -r "${IF_WIRELESS_RADIUS_KEY:-""}" -h $IF_WIRELESS_RADIUS_IPADDR \ 
     145-p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 -s "$IF_WIRELESS_SSID" \ 
    134146-w $crypto_num -g $gtk_rekey & 
    135147mstate 0 
    136148! 
    137149        else 
    138                 # routed 
    139150                mprint -n "Starting nas daemon" 
    140                 /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 -i $IFACE -A -m $auth -r "${IF_WIRELESS_RADIUS_KEY:-""}" \ 
    141                         -h ${IF_WIRELESS_RADIUS_IPADDR:-""} -p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 -s "$IF_WIRELESS_SSID" -w $crypto_num -g $gtk_rekey & 
     151                /usr/sbin/nas -P /var/run/nas.lan.pid -H 34954 -i $IFACE -A -m $auth \ 
     152                -r "${IF_WIRELESS_RADIUS_KEY:-""}" -h $IF_WIRELESS_RADIUS_IPADDR \ 
     153                -p ${IF_WIRELESS_RADIUS_PORT:-1812} -t 36000 -s "$IF_WIRELESS_SSID" \ 
     154                -w $crypto_num -g $gtk_rekey & 
    142155                mstate 0 
    143156        fi 
    144157} 
    145158 
    146 init_debug() { 
    147         err=$(eval "$*" 2>&1) || { 
    148                 mstate 1 
    149                 merr "Driver init error" 
    150                 mprint -s "${*}: $err" 
    151                 return 0 
    152         } 
    153 } 
    154  
    155159get_bridge_iface() { 
    156160        [ -x "$(which brctl)" ] || return 1 
    157         if brctl show 2>&- | grep -q $IFACE 
     161        brctl show 2>&- | grep -q $IFACE || return 1 
     162        for var in $(brctl show 2>&- | grep -o ^[a-z]*[^[:space:]]) 
     163        do 
     164                brctl showstp $var | grep -q ^${IFACE}[[:space:]] || continue 
     165                BRIDGE_IFACE=$var 
     166                return 0 
     167        done 
     168
     169 
     170bridged_mode() { 
     171        if [ x"$PARENT_IFACE_TYPE" = x"bridge" ] 
    158172        then 
    159                 for var in $(brctl show 2>&- | grep -o ^[a-z]*[^[:space:]]) 
    160                 do 
    161                         if brctl showstp $var | grep -q ^${IFACE}[[:space:]] 
    162                         then 
    163                                 BRIDGE_IFACE=$var 
    164                                 return 0 
    165                         fi 
    166                 done 
     173                BRIDGE_IFACE=$PARENT_IFACE 
     174        else 
     175                get_bridge_iface || return 1 
     176 
     177                if ! is_up $BRIDGE_IFACE 
     178                then 
     179                        mprint -n "Starting nas daemon" 
     180                        mstate 1 
     181                        merr"Can not start nas daemon, bridge $BRIDGE_IFACE isn't up" 
     182                        exit 1 
     183                fi 
    167184        fi 
    168         return 1 
    169 
    170  
    171 bridged_mode() { 
    172         if [ x"$METHOD" = x"static" -a x"$IF_ADDRESS" = x"0.0.0.0" ] 
    173         then 
    174                 if [ x"$PARENT_IFACE_TYPE" = x"bridge" ] 
    175                 then 
    176                         BRIDGE_IFACE=$PARENT_IFACE 
    177                 else 
    178                         if ! get_bridge_iface 
    179                         then 
    180                                 mprint -n "Starting nas daemon" 
    181                                 mstate 1 
    182                                 merr "$IFACE bridging is assumed but no bridge is created" 
    183                                 exit 1 
    184                         fi 
    185  
    186                         if ! is_up $BRIDGE_IFACE 
    187                         then 
    188                                 mprint -n "Starting nas daemon" 
    189                                 mstate 1 
    190                                 merr"Can not start nas daemon, bridge $BRIDGE_IFACE isn't up" 
    191                                 exit 1 
    192                         fi 
    193                 fi 
    194                 postup="/tmp/ifupdown/pcode/${BRIDGE_IFACE}/${IFACE}" 
    195  
    196                 mkdir -p $postup 
    197                 chmod 700 $postup 
    198                 return 0 
    199         fi 
    200         return 1 
     185        postup="/tmp/ifupdown/pcode/${BRIDGE_IFACE}/${IFACE}" 
     186        mkdir -p $postup 
     187        chmod 700 $postup 
     188        return 0 
    201189} 
    202190 
    203191if_up() { 
    204         local nas_auth opmode_init_string wsec 
     192        local nas_auth opmode_init_string wsec err 
    205193 
    206194        mprint -n "Initializing $IFACE_TYPE $IFACE" 
    207195 
    208         # check SSID 
    209         if [ -z "$IF_WIRELESS_SSID" ] 
    210         then 
     196        [ -z "$IF_WIRELESS_SSID" ] && err="ESSID not set" 
     197        [ -z "$IF_WIRELESS_MODE" ] && err="Operation mode not set" 
     198        [ x"$IF_WIRELESS_SECURITY" = x"8021x" -a -z "$IF_WIRELESS_RADIUS_IPADDR" \ 
     199                -a x"$IF_WIRELESS_AUTHORIZATION" != x"wep" ] && \ 
     200                err="Radius server address not set" 
     201 
     202        [ -n "$err" ] && { 
    211203                mstate 1 
    212                 merr "ESSID not set" 
     204                merr $err 
    213205                return 1 
    214         fi 
    215  
    216         case $IF_WIRELESS_MODE in 
    217                 sta) 
    218                         nas_auth="-S " 
    219                         opmode_init_string='init_debug wlc ifname $IFACE ap 0; init_debug wlc ifname $IFACE infra 1' 
    220                 ;; 
    221                 ap) 
    222                         nas_auth="-A " 
    223                         opmode_init_string='init_debug wlc ifname $IFACE infra 0; init_debug wlc ifname $IFACE ap 1' 
    224                 ;; 
    225                 wds) 
    226                         opmode_init_string='init_debug wlc ifname $IFACE infra 0; init_debug wlc ifname $IFACE ap 1; init_debug wlc ifname $IFACE autowds 1' 
    227                 ;; 
    228                 adhoc) 
    229                         opmode_init_string='init_debug wlc ifname $IFACE ap 0; init_debug wlc ifname $IFACE infra 0' 
    230                 ;; 
    231                 monitor) 
    232                         opmode_init_string='init_debug wlc ifname $IFACE ap 0; init_debug wlc ifname $IFACE infra 0; init_debug wlc ifname $IFACE monitor 1' 
    233                 ;; 
    234                 *) 
    235                         mstate 1 
    236                         if [ -z "$IF_WIRELESS_MODE" ] 
    237                         then 
    238                                 merr "Operation mode not set" 
    239                         else 
    240                                 merr "Unknown operation mode $IF_WIRELESS_MODE" 
    241                         fi 
    242                         return 1 
    243                 ;;       
    244         esac 
    245  
    246         if      [ x"$IF_WIRELESS_SECURITY" = x"wpa-psk" ] || \ 
    247                 [ x"$IF_WIRELESS_SECURITY" = x"8021x" ] 
    248         then 
    249                 case $IF_WIRELESS_ENCRYPTION in 
    250                         wep) 
    251                                 wsec=1 
    252                         ;; 
    253                         tkip) 
    254                                 wsec=2 
    255                         ;; 
    256                         aes) 
    257                                 wsec=4 
    258                         ;; 
    259                         aes+tkip) 
    260                                 wsec=6 
    261                         ;; 
    262                         *) 
    263                                 mstate 1 
    264                                 merr "Wrong wireless encryption" 
    265                                 return 1 
    266                         ;; 
    267                 esac 
    268  
    269         fi 
     206        } 
    270207 
    271208 
     
    277214        ### init driver ### 
    278215        # 
    279         init_debug wlc ifname $IFACE radio 1 
    280         init_debug wlc ifname $IFACE monitor 0 
    281         init_debug wlc ifname $IFACE macfilter 0 
    282         init_debug wlc ifname $IFACE maclist none 
     216        init_debug wl radio on 
     217        init_debug wl infra 1 
     218        init_debug wl monitor 0 
     219        init_debug wl macmode 0 
     220        init_debug wl mac none 
     221        init_debug wl lazywds 0 
    283222 
    284223        # set operation mode 
    285         eval $opmode_init_string 
     224        case $IF_WIRELESS_MODE in 
     225        sta) 
     226                nas_auth="-S " 
     227                init_debug wl ap 0 
     228                # TODO: "init_debug wl wet 1" when bridging 
     229                ;; 
     230        ap) 
     231                nas_auth="-A " 
     232                init_debug wl ap 1 
     233                ;; 
     234        wds) 
     235                [ -z "$IF_WIRELESS_WDS" ] && return 1 
     236                # TODO: messages 
     237                init_debug wl ap 1 
     238                ;; 
     239        adhoc) 
     240                init_debug wl ap 0 
     241                init_debug wl infra 0 
     242                init_debug wl join $IF_WIRELESS_SSID imode ibss 
     243                ;; 
     244        monitor) 
     245                init_debug wl ap 0 
     246                init_debug wl monitor 1 
     247                ;; 
     248        *) 
     249                mstate 1 
     250                merr "Unknown operation mode $IF_WIRELESS_MODE" 
     251                return 1 
     252                ;;       
     253        esac 
     254 
     255        case $IF_WIRELESS_ENCRYPTION in 
     256                wep) 
     257                        wsec=1 
     258                        ;; 
     259                tkip) 
     260                        wsec=2 
     261                        ;; 
     262                aes) 
     263                        wsec=4 
     264                        ;; 
     265                aes+tkip) 
     266                        wsec=6 
     267                        ;; 
     268        esac 
    286269 
    287270        # set country 
    288         [ -n "$IF_WIRELESS_COUNTRY" ] && init_debug wlc ifname $IFACE country $IF_WIRELESS_COUNTRY 
    289  
    290         # set hidden mode 
    291         [ -n "$IF_WIRELESS_HIDDEN}" ] && init_debug wlc ifname $IFACE ap_isolate $IF_WIRELESS_HIDDEN 
     271        [ -n "$IF_WIRELESS_COUNTRY" ] && init_debug wl country $IF_WIRELESS_COUNTRY 
     272 
     273        # set gmode 
     274        [ -n "$IF_WIRELESS_GMODE" ] && init_debug wl gmode $IF_WIRELESS_GMODE 
     275 
     276        # set isolate mode 
     277        [ -n "$IF_WIRELESS_ISOLATE" ] && init_debug wl ap_isolate \ 
     278                $IF_WIRELESS_ISOLATE 
    292279 
    293280        # set macmode mode 
    294         [ -n "$IF_WIRELESS_MACMODE" ] && init_debug wlc ifname $IFACE macfilter $IF_WIRELESS_MACMODE 
     281        [ -n "$IF_WIRELESS_MACMODE" ] && init_debug wl macmode $IF_WIRELESS_MACMODE 
    295282 
    296283        # set MAC addresses 
    297         [ -n "$IF_WIRELESS_MAC" ] && init_debug wlc ifname $IFACE maclist $IF_WIRELESS_MAC 
     284        [ -n "$IF_WIRELESS_MAC" ] && init_debug wl mac $IF_WIRELESS_MAC 
    298285 
    299286        # set WLAN channel 
    300         [ -n "$IF_WIRELESS_CHANNEL" ] && init_debug wlc ifname $IFACE channel $IF_WIRELESS_CHANNEL 
     287        [ -n "$IF_WIRELESS_CHANNEL" ] && init_debug wl channel $IF_WIRELESS_CHANNEL 
    301288 
    302289        # set frameburst 
    303         [ -n "$IF_WIRELESS_FRAMEBURST" ] && init_debug wlc ifname $IFACE frameburst $IF_WIRELESS_FRAMEBURST 
     290        [ -n "$IF_WIRELESS_FRAMEBURST" ] && init_debug wl frameburst \ 
     291                $IF_WIRELESS_FRAMEBURST 
    304292 
    305293        # set afterburner 
    306         [ -n "$IF_WIRELESS_AFTERBURNER" ] && init_debug wlc ifname $IFACE afterburner $IF_WIRELESS_AFTERBURNER 
     294        [ -n "$IF_WIRELESS_AFTERBURNER" ] && init_debug wl afterburner_override \ 
     295                $IF_WIRELESS_AFTERBURNER 
    307296 
    308297        gtk_rekey=${IF_WIRELESS_WPA_GTK_REKEY:-3600} 
     
    312301                none) 
    313302                        security_none 
    314                 ;; 
     303                       ;; 
    315304                wep) 
    316305                        security_wep 
    317                 ;; 
     306                       ;; 
    318307                wpa-psk) 
    319308                        security_wpapsk 
    320                 ;; 
     309                       ;; 
    321310                8021x) 
    322311                        security_8021x 
    323                 ;; 
     312                       ;; 
    324313                *) 
     314                        # no fallback 
    325315                        mstate 1 
    326316                        merr "Wireless security not set" 
    327317                        return 1 
    328                 ;; 
    329         esac 
    330  
    331         init_debug wlc ifname $IFACE ssid $IF_WIRELESS_SSID 
     318                       ;; 
     319        esac 
     320 
     321        init_debug wl ssid $IF_WIRELESS_SSID 
    332322        init_debug wl wsec $wsec 
    333         init_debug wlc ifname $IFACE up 
     323        init_debug wl up 
    334324        mstate 0 
    335325 
    336         if [ -z "$PARENT_IFACE_TYPE" ] 
    337         then 
    338                 if is_up ${BRIDGE_IFACE:="FOO"} 
    339                 then 
    340                         [ -f /tmp/ifupdown/pcode/${BRIDGE_IFACE}/${IFACE}/postup ] && \ 
    341                                 . /tmp/ifupdown/pcode/${BRIDGE_IFACE}/${IFACE}/postup 
    342                 fi 
    343         fi 
     326        [ -z "$PARENT_IFACE_TYPE" ] || is_up ${BRIDGE_IFACE:="FOO"} && return 0 
     327 
     328        [ -f /tmp/ifupdown/pcode/${BRIDGE_IFACE}/${IFACE}/postup ] && \ 
     329                . /tmp/ifupdown/pcode/${BRIDGE_IFACE}/${IFACE}/postup 
    344330} 
    345331 
    346332if_down() { 
    347333        mdestroy 
    348         init_debug wlc ifname $IFACE maclist none 
    349         init_debug wlc ifname $IFACE radio 0 
    350         init_debug wlc ifname $IFACE down 
     334        init_debug wl mac none 
     335        init_debug wl radio off 
     336        init_debug wl down 
    351337 
    352338        pid="$(cat /var/run/nas.lan.pid 2>&-)" 
     
    354340         
    355341        mstate 0 
    356         return 0 
     342        return 
    357343} 
    358344 
  • trunk/freewrt/package/fwifupdown/Makefile

    r3006 r3057  
    99PKG_NAME:=                      fwifupdown 
    1010PKG_VERSION:=                   0.2 
    11 PKG_RELEASE:=                   27 
     11PKG_RELEASE:=                   28 
    1212PKG_SRC_ROOT:=                  ${TOPDIR}/package/${PKG_NAME} 
    1313PKG_CONFIG_WORKDIR:=            etc/network 
  • trunk/freewrt/package/fwifupdown/files/ifupdown.sh

    r3013 r3057  
    4747while sleep 1; do 
    4848        if test $j -gt 30; then 
    49                 echo "bridge initialisation timed out" 
     49                mstate 1 
     50                mprint "bridge initialisation timed out" 
    5051                rv=1 
    5152                break 
     
    5556                test -e "$x" || break 2         # no -> out of both loops 
    5657                # print initialisation message, but once only 
    57                 test $i = 1 || echo
     58                test $i = 1 || mprint -n
    5859                    "Waiting for bridge initialisation to finish" 
    5960                i=1 
     
    7273        j=$(expr $j + 1) 
    7374done 
    74 test $i = 0 || echo done, took $j seconds  
     75test $i = 0 || { 
     76        mstate $rv 
     77        mprint "took $j seconds" 
     78
    7579 
    76 mstate $rv 
    77  
    78 # vim:ts=8 
     80# vim:ts=4 
  • trunk/freewrt/package/fwifupdown/files/main.sh

    r2958 r3057  
    141141        } 
    142142 
    143         config $RT_PREUP_PRINTING_OFF || [ "$METHOD" = "manual" ] && return 
     143        config $RT_PREUP_PRINTING_OFF && return 
    144144        mup 
    145145} 
    146146 
    147147main_up() { 
    148         if ! config $RT_UP_IFUP_CHECK_OFF && [ "$METHOD" != "manual" ] 
     148        [ x"$METHOD" = x"manual" ] && ip link set up dev $IFACE 
     149 
     150        if ! config $RT_UP_IFUP_CHECK_OFF 
    149151        then 
    150152                is_up 
     
    190192        } 
    191193 
    192         config $RT_DOWN_PRINTING_OFF || [ "$METHOD" = "manual" ] && return 
     194        config $RT_DOWN_PRINTING_OFF && return 
    193195        mdown 
    194196} 
    195197 
    196198main_postdown() { 
    197         if ! config $RT_POSTDOWN_IFDOWN_CHECK_OFF && [ "$METHOD" != "manual" ] 
     199        [ x"$METHOD" = x"manual" ] && { 
     200                ip addr flush dev %ifac 
     201                ip link set down dev $IFACE 
     202        } 
     203 
     204        if ! config $RT_POSTDOWN_IFDOWN_CHECK_OFF 
    198205        then 
    199206                if [ $IFACE_STATE = "down" ] 
  • trunk/freewrt/package/fwifupdown/lib/bridge

    r3006 r3057  
    2929 
    3030bridge_depup() { 
    31         for IF in $IF_BRIDGE_IFACES 
    32         do 
    33                 is_up $IF || ifup $IF || return 1 
     31        for IF in $IF_BRIDGE_IFACES; do 
     32                # is it up? 
     33                is_up || continue 
     34                # up now, add it to the list 
     35                ifacelist="$ifacelist $IF" 
    3436        done 
    3537} 
     
    3739bridge_addif() { 
    3840        local err 
    39         for IF in $IF_BRIDGE_IFACES 
    40         do 
     41        for IF in $ifacelist; do 
    4142                madd $IF 
    4243                if ! err=$(brctl addif $IFACE $IF 2>&1 1>&-) 
     
    4445                        mstate 1 
    4546                        merr $err 
    46                         return 1 
     47                        continue 
    4748                fi 
    4849                mstate 0 
     
    9899 
    99100if_preup() { 
     101        local ifacelist 
    100102        if ! [ -x "$(which brctl)" ] 
    101103        then 
     
    103105                mstate 1 
    104106                merr "brctl executable not found" 
     107                return 1 
    105108        fi 
    106109 
     
    119122 
    120123        bridge_create || return 1 
    121  
    122         if ! bridge_depup 
    123         then 
    124                 bridge_delif 
    125                 bridge_destroy 
    126                 return 1 
    127         fi 
    128  
    129         if ! bridge_addif 
    130         then 
    131                 bridge_delif 
    132                 bridge_destroy 
    133                 return 1 
    134         fi 
     124        bridge_depup 
     125        bridge_addif 
    135126} 
    136127