Index: net.Linux/iproute2.sh =================================================================== --- net.Linux/iproute2.sh (revision 3081) +++ net.Linux/iproute2.sh (working copy) @@ -43,6 +43,15 @@ grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless } +_set_flag() { + local flag=$1 opt="on" + if [ "${flag#-}" != "${flag}" ]; then + flag=${flag#-} + opt="off" + fi + ip link set "${IFACE}" "${flag}" "${opt}" +} + _get_mac_address() { local mac=$(LC_ALL=C ip link show "${IFACE}" | sed -n \ -e 'y/abcdef/ABCDEF/' \ @@ -181,7 +190,8 @@ } iproute2_post_start() { - ip route flush table cache dev "${IFACE}" + # Kernel may not have tcp built in + [ -e /proc/net/route ] && ip route flush table cache dev "${IFACE}" } iproute2_post_stop() { Index: net.Linux/ifconfig.sh =================================================================== --- net.Linux/ifconfig.sh (revision 3081) +++ net.Linux/ifconfig.sh (working copy) @@ -42,6 +42,10 @@ grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless } +_set_flag() { + ifconfig "${IFACE}" "$1" +} + _get_mac_address() { local mac=$(LC_ALL=C ifconfig "${IFACE}" | \ sed -n -e 's/.* HWaddr \(..:..:..:..:..:..\).*/\1/p') Index: net.Linux/bridge.sh =================================================================== --- net.Linux/bridge.sh (revision 3081) +++ net.Linux/bridge.sh (working copy) @@ -33,7 +33,7 @@ if ! _is_bridge; then ebegin "Creating bridge ${IFACE}" - if ! brctl addbr "${IFACE}" ; then + if ! brctl addbr "${IFACE}"; then eend 1 return 1 fi @@ -50,15 +50,18 @@ done unset IFS - if [ -n "${ports}" ] ; then + if [ -n "${ports}" ]; then einfo "Adding ports to ${IFACE}" eindent for x in ${ports}; do ebegin "${x}" - ifconfig "${x}" promisc up - if ! brctl addif "${IFACE}" "${x}" ; then - ifconfig "${x}" -promisc 2>/dev/null + local OIFACE="${IFACE}" + local IFACE="${x}" + _set_flag promisc + _up + if ! brctl addif "${OIFACE}" "${x}"; then + _set_flag -promisc eend 1 return 1 fi @@ -78,7 +81,7 @@ if _is_bridge ; then ebegin "Destroying bridge ${IFACE}" _down - ports="$( brctl show 2>/dev/null | \ + ports="$(brctl show 2>/dev/null | \ sed -n -e '/^'"${IFACE}"'[[:space:]]/,/^\S/ { /^\('"${IFACE}"'[[:space:]]\|\t\)/s/^.*\t//p }')" delete=true iface=${IFACE} @@ -87,9 +90,9 @@ # Work out if we're added to a bridge for removal or not eval set -- $(brctl show 2>/dev/null | sed -e "s/'/'\\\\''/g" -e "s/$/'/g" -e "s/^/'/g") local line= - for line in "$@" ; do + for line in "$@"; do set -- ${line} - if [ "$3" = "${IFACE}" ] ; then + if [ "$3" = "${IFACE}" ]; then iface=$1 break fi @@ -98,14 +101,15 @@ extra=" from ${iface}" fi - for port in ${ports} ; do + for port in ${ports}; do ebegin "Removing port ${port}${extra}" - ifconfig "${port}" -promisc + local IFACE="${port}" + _set_flag -promisc brctl delif "${iface}" "${port}" eend $? done - if ${delete} ; then + if ${delete}; then eoutdent brctl delbr "${iface}" eend $? Index: sh/net.sh =================================================================== --- sh/net.sh (revision 3084) +++ sh/net.sh (working copy) @@ -349,7 +349,7 @@ local fallback="$(_get_array fallback_${IFVAR})" if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then - config="127.0.0.1/8 + [ "${config}" != "null" ] && config="127.0.0.1/8 ${config}" else if [ -z "${config}" ] ; then @@ -495,9 +495,11 @@ local hidefirstroute=false first=true local routes="$(_get_array "routes_${IFVAR}")" if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then - routes="127.0.0.0/8 via 127.0.0.1 + if [ "${config_0}" != "null" ]; then + routes="127.0.0.0/8 via 127.0.0.1 ${routes}" - hidefirstroute=true + hidefirstroute=true + fi fi local IFS="$__IFS" for cmd in ${routes}; do