summaryrefslogtreecommitdiffstats
path: root/package/base-files-network/files/etc/hotplug.d/net/10-net
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files-network/files/etc/hotplug.d/net/10-net')
-rw-r--r--package/base-files-network/files/etc/hotplug.d/net/10-net72
1 files changed, 72 insertions, 0 deletions
diff --git a/package/base-files-network/files/etc/hotplug.d/net/10-net b/package/base-files-network/files/etc/hotplug.d/net/10-net
new file mode 100644
index 000000000..013ece39c
--- /dev/null
+++ b/package/base-files-network/files/etc/hotplug.d/net/10-net
@@ -0,0 +1,72 @@
+# Copyright (C) 2006 OpenWrt.org
+
+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
+ 3g-*|ppp-*|pppoa-*|pppoe-*|pptp-*) return 0;;
+ esac
+
+ scan_interfaces
+ local cfg="$(find_config "$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
+ config_get ifs "$ifc" device
+ for dev in $ifs; do
+ [ "${dev%%\.*}" = "$INTERFACE" -a "$dev" != "$INTERFACE" ] && {
+ add_vlan "$dev"
+ }
+ done
+ 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
+ natsemi) sleep 1;;
+ esac
+ addif
+ ;;
+ remove|unregister)
+ delif
+ ;;
+esac