diff options
Diffstat (limited to 'package/base-files-network/files/etc/hotplug.d/net')
| -rw-r--r-- | package/base-files-network/files/etc/hotplug.d/net/10-net | 72 | 
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 | 
