#!/bin/sh # # Kernel NET hotplug params include: # # ACTION=%s [register or unregister] # INTERFACE=%s . /etc/sysconfig/network-scripts/functions.network mesg() { /usr/bin/logger -t $(basename $0)"[$$]" "$@" } debug_mesg() { : } # returns true if device is either wireless, usbnet or is named eth* and supports ethtool ethernet_check() { [ -d /sys/class/net/$1/wireless/ ] && return 0 [[ "$1" == bnep* ]] && return 0 # eagle-usb/firewire create a fake ethX interface if [ -x /usr/sbin/ethtool ] && ! /usr/sbin/ethtool $1 > /dev/null 2>&1; then return 1; fi return 0; } if [ "$INTERFACE" = "" ]; then mesg Bad NET invocation: \$INTERFACE is not set exit 1 fi export IN_HOTPLUG=1 case $ACTION in add|register) case $INTERFACE in # interfaces that are registered after being "up" (?) ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*) debug_mesg assuming $INTERFACE is already up exit 0 ;; # interfaces that are registered then brought up *) # NOTE: network configuration relies on administered state, # we can't do much here without distro-specific knowledge # such as whether/how to invoke DHCP, set up bridging, etc. # conform to network service (AUTOMATIC_IFCFG) [ -r /etc/sysconfig/network ] && . /etc/sysconfig/network # don't do anything for non ethernet devices ethernet_check $INTERFACE || exit 0; # automatically create an interface file CFG=/etc/sysconfig/interfaces/ifcfg-$INTERFACE if [ "$AUTOMATIC_IFCFG" != no -a ! -r $CFG ]; then debug_mesg creating config file for $INTERFACE cat > $CFG <