Changeset aa2bc52f in freewrt


Ignore:
Timestamp:
Jul 1, 2007, 6:28:53 PM (18 years ago)
Author:
Christian Fischer <spaetzle@…>
Children:
de6433b
Parents:
ff38870
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

git-svn-id: svn://www.freewrt.org/trunk/freewrt@3057 afb5a338-a214-0410-bd46-81f09a774fd1

Location:
package
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • package/broadcom-wl/Makefile

    rff38870 raa2bc52f  
    99PKG_NAME:=              broadcom-wl
    1010PKG_VERSION:=           4.80.53.0
    11 PKG_RELEASE:=           4
     11PKG_RELEASE:=           6
    1212PKG_MD5SUM:=            a7d8dde3ce474c361143b83e1d9890b1
    1313PKG_MODULE:=            11
  • package/broadcom-wl/files/wl-broadcom

    rff38870 raa2bc52f  
    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
  • package/fwifupdown/Makefile

    rff38870 raa2bc52f  
    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
  • package/fwifupdown/files/ifupdown.sh

    rff38870 raa2bc52f  
    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
  • package/fwifupdown/files/main.sh

    rff38870 raa2bc52f  
    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" ]
  • package/fwifupdown/lib/bridge

    rff38870 raa2bc52f  
    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
Note: See TracChangeset for help on using the changeset viewer.