ppcrcd/trunk/conf.dir/lib: . udev udev/udev_net_helper
sparky
cvs at pld-linux.org
Wed Mar 15 23:58:43 CET 2006
Author: sparky
Date: Wed Mar 15 23:58:36 2006
New Revision: 7177
Added:
ppcrcd/trunk/conf.dir/lib/
ppcrcd/trunk/conf.dir/lib/udev/
ppcrcd/trunk/conf.dir/lib/udev/udev_net_helper (contents, props changed)
Log:
- NEW: conf.dir/lib/udev/udev_net_helper
- modified udev_net_helper file which is able to use configuration from
kernel command line or nvram
Added: ppcrcd/trunk/conf.dir/lib/udev/udev_net_helper
==============================================================================
--- (empty file)
+++ ppcrcd/trunk/conf.dir/lib/udev/udev_net_helper Wed Mar 15 23:58:36 2006
@@ -0,0 +1,136 @@
+#!/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.
+
+ # Run ifrename as needed - Jean II
+ # Remap interface names based on MAC address. This workaround
+ # the dreaded configuration problem "all my cards are 'eth0'"...
+ # This needs to be done before ifup otherwise ifup will get
+ # confused by the name changed and because iface need to be
+ # down to change its name.
+ if [ -x /sbin/ifrename ] && [ -r /etc/iftab ]; then
+ debug_mesg invoke ifrename for $INTERFACE
+ NEWNAME=`/sbin/ifrename -i $INTERFACE`
+ if [ -n "$NEWNAME" ]; then
+ debug_mesg iface $INTERFACE is remapped to $NEWNAME
+ INTERFACE=$NEWNAME
+ fi;
+ fi
+
+ # 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 ]; then
+ debug_mesg creating config file for $INTERFACE
+ . /usr/lib/ppcrcd/functions
+ DRIVER=$(ethtool -i $INTERFACE | awk '/^driver/ { print $2 }')
+ ETHS="$(cmdvar eth)"
+ [ -z "$ETHS" ] && { cmdopt nonveth || ETHS="$(cmdvar eth)"; }
+ CONF=$(echo "$ETHS" | grep "^$DRIVER:")
+ if [ -n "$CONF" ]; then
+ IP=$(echo $CONF | awk -F: '{print $2}')
+
+ GATE=$(echo $CONF | awk -F: '{print $3}')
+ if [ -n "$GATE" ]; then
+ sed -e "s/^GATEWAY=.*$/GATEWAY=$GATE/" \
+ -e "s/^GATEWAYDEV=.*$/GATEWAYDEV=$INTERFACE/" \
+ -i /etc/sysconfig/network
+ fi
+ for DNSip in $(echo $CONF | awk -F: '{print $4}' \
+ | tr "," " "); do
+ echo nameserver $DNSip >> /etc/resolv.conf
+ done
+ else
+ IP=dhcp
+ fi
+ ONBOOT="yes"
+ cmdopt nonet && ONBOOT="no"
+ set_ifcfg "$INTERFACE" "$IP" "$ONBOOT"
+ fi
+
+ if [ ! -f /var/lock/subsys/network ] || [ ! -r $CFG ]; then
+ # Don't do anything if the network is stopped or interface isn't configured
+ exit 0
+ fi
+
+ if [ -x /sbin/ifup ]; then
+ debug_mesg invoke ifup $INTERFACE
+ exec /sbin/ifup $INTERFACE hotplug
+ fi
+ ;;
+ esac
+ mesg $1 $ACTION event not handled
+ ;;
+
+remove|unregister)
+ case $INTERFACE in
+ # interfaces that are unregistered after being "down" (?)
+ ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*)
+ debug_mesg assuming $INTERFACE is already down
+ exit 0
+ ;;
+ *)
+ if [ -x /sbin/ifdown ]; then
+ debug_mesg invoke ifdown $INTERFACE
+ exec /sbin/ifdown $INTERFACE daemon
+ fi
+ ;;
+ esac
+ mesg $1 $ACTION event not handled
+ ;;
+
+*)
+ debug_mesg NET $ACTION event for $INTERFACE not supported
+ exit 1 ;;
+
+esac
More information about the pld-cvs-commit
mailing list