X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/5f9c2e9fa6bb077f115b2c3e1d5db6b79dbfc625..293af18664fd175403e2fe79688c9d4860798e92:/package/base-files/files/etc/hotplug.d/net/10-net?ds=sidebyside diff --git a/package/base-files/files/etc/hotplug.d/net/10-net b/package/base-files/files/etc/hotplug.d/net/10-net index 77eb6da9d..013ece39c 100644 --- a/package/base-files/files/etc/hotplug.d/net/10-net +++ b/package/base-files/files/etc/hotplug.d/net/10-net @@ -3,21 +3,32 @@ include /lib/network addif() { + # Ensure that ipv6 is loaded, autoloading happens later but ipv6 might be + # required now for interface setup. + [ -d /proc/sys/net/ipv6 ] || { + grep -q '^ipv6' /etc/modules.d/* && insmod ipv6 + } + # PPP devices are configured by pppd, no need to run setup_interface here case "$INTERFACE" in - ppp*) return 0;; + 3g-*|ppp-*|pppoa-*|pppoe-*|pptp-*) return 0;; esac scan_interfaces local cfg="$(find_config "$INTERFACE")" - # check the autoload setting - config_get auto "$cfg" auto - case "$auto" in - 1|on|enabled) setup_interface "$INTERFACE";; + case "$INTERFACE" in + # Skip wireless parent interfaces + ath[0-9]|wlan[0-9]) ;; + *) + # check the autoload setting + config_get auto "$cfg" auto + case "$auto" in + 1|on|enabled) setup_interface "$INTERFACE";; + esac + ;; esac - # find all vlan configurations for this interface and set them up as well for ifc in $interfaces; do config_get iftype "$ifc" type @@ -30,6 +41,24 @@ addif() { done } + +delif() { + scan_interfaces + + # find all vlan configurations for this interface and nuke 'em + for ifc in $interfaces; do + config_get iftype "$ifc" type + config_get ifs "$ifc" device + confdevs="$(uci_get network.$ifc.ifname)" + for dev in $ifs; do + [ "${dev%%\.*}" = "$INTERFACE" ] && { + list_contains confdevs "$dev" || list_remove ifs "$dev" + } + done + uci_set_state "network" "$ifc" device "$ifs" + done +} + case "$ACTION" in add|register) case "$PHYSDEVDRIVER" in @@ -37,4 +66,7 @@ case "$ACTION" in esac addif ;; + remove|unregister) + delif + ;; esac