X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/76dec73b0b803f861192efe08b95f2cf331a96e2..001c1d72f09c2145244816728d1700eca653af6d:/package/base-files/default/etc/hotplug.d/net/10-net diff --git a/package/base-files/default/etc/hotplug.d/net/10-net b/package/base-files/default/etc/hotplug.d/net/10-net index 3bc980f86..9a4c45003 100644 --- a/package/base-files/default/etc/hotplug.d/net/10-net +++ b/package/base-files/default/etc/hotplug.d/net/10-net @@ -1,17 +1,29 @@ #!/bin/sh setup_eth() { + for part in $(nvram get unused_ifnames); do + [ "$part" = "$INTERFACE" ] && return 0 + done [ -f /proc/net/wl0 ] && { lsmod | grep wlcompat >&- || insmod wlcompat } iwconfig "$INTERFACE" 2>&- | grep -v 'no wireless' >&- && { /sbin/wifi } + [ -d /proc/switch ] || { + insmod switch-core + insmod switch-robo || insmod switch-adm + } if="$(echo "$INTERFACE" | sed s,eth,et,)" ifconfig "$INTERFACE" up 2>&- >&- for vlan in $(seq 0 15); do - [ "$(nvram get vlan${vlan}hwname)" = "$if" ] && \ + [ "$(nvram get vlan${vlan}hwname)" = "$if" ] && { $DEBUG vconfig add "$INTERFACE" "$vlan" + vports="$(nvram get vlan${vlan}ports)" + [ \! -z "$vports" -a -d "/proc/switch/$INTERFACE" ] && \ + echo "$vports" > "/proc/switch/$INTERFACE/vlan/$vlan/ports" + echo "1" > "/proc/switch/$INTERFACE/enable_vlan" + } done } @@ -23,22 +35,21 @@ find_name() IFTYPE="${ifname}" IFPROTO="$(nvram get ${IFTYPE}_proto)" IFACE="$(nvram get ${IFTYPE}_ifname)" - [ -z "$IFPROTO" -o "$IFPROTO" = "none" ] || { - [ "${IFACE}" = "$INTERFACE" ] && return 0 - case "$IFPROTO" in - static|dhcp) - [ "${IFACE%%[0-9]*}" = "br" ] && { - for part in $(nvram get ${IFTYPE}_ifnames); do - [ "$part" = "$INTERFACE" ] && return 0 - done - } - ;; - *) - [ "$(nvram get ${IFPROTO}_ifname)" = "$INTERFACE" \ - -a -x /sbin/ifup.${IFPROTO} ] && return 0 - ;; - esac - } + case "$IFPROTO" in + ""|none);; + static|dhcp) + [ "${IFACE}" = "$INTERFACE" ] && return 0 + [ "${IFACE%%[0-9]*}" = "br" ] && { + for part in $(nvram get ${IFTYPE}_ifnames); do + [ "$part" = "$INTERFACE" ] && return 0 + done + } + ;; + *) + [ "$(nvram get ${IFPROTO}_ifname)" = "$INTERFACE" \ + -a -x /sbin/ifup.${IFPROTO} ] && return 0 + ;; + esac done IFACE="" IFTYPE="" @@ -56,16 +67,19 @@ do_ifup() { case "$1" in static) ip=$(nvram get ${2}_ipaddr) + ip6=$(nvram get ${2}_ip6addr) netmask=$(nvram get ${2}_netmask) gateway=$(nvram get ${2}_gateway) $DEBUG ifconfig $if $ip ${netmask:+netmask $netmask} broadcast + up + [ -n "$ip6" ] && $DEBUG ifconfig $if add $ip6 + ${gateway:+$DEBUG route add default gw $gateway} - [ -f /etc/resolv.conf ] || { - debug "# --- creating /etc/resolv.conf ---" + [ -f /tmp/resolv.conf ] || { + debug "# --- creating /tmp/resolv.conf ---" for dns in $(nvram get ${2}_dns); do - echo "nameserver $dns" >> /etc/resolv.conf + echo "nameserver $dns" >> /tmp/resolv.conf done } @@ -155,13 +169,12 @@ do_register() do_ifup "$IFPROTO" "$IFTYPE" "$if" fi } - else - do_ifup "$IFPROTO" "$IFTYPE" "$if" + else + [ "${INTERFACE%%[0-9]*}" = "ppp" ] || do_ifup "$IFPROTO" "$IFTYPE" "$if" fi } do_unregister() { - [ "${INTERFACE%%[0-9]*}" = "atm" ] || ifconfig "$INTERFACE" 0.0.0.0 down 2>&- [ -z "$IFTYPE" -o -z "$IFPROTO" ] && find_name [ -z "$IFTYPE" -o -z "$IFPROTO" ] && return 0 @@ -175,16 +188,17 @@ do_unregister() { case "$IFPROTO" in pppoe|pppoa|pptp) - killall ifup.${IFPROTO} 2>&- >&- killall pppd 2>&- >&- ;; dhcp) [ -f /var/run/${INTERFACE}.pid ] && kill "$(cat /var/run/${INTERFACE}.pid)" 2>&- >&- ;; esac + + [ "${INTERFACE%%[0-9]*}" = "atm" ] || ifconfig "$INTERFACE" 0.0.0.0 down 2>&- } case "$ACTION" in - register) do_register;; - unregister) do_unregister;; + add|register) do_register;; + remove|unregister) do_unregister;; esac