]> git.pld-linux.org Git - packages/systemd.git/blob - udev-net.helper
- use nameif / cut&paste typos fixed
[packages/systemd.git] / udev-net.helper
1 #!/bin/sh
2 #
3 # Kernel NET hotplug params include:
4 #       
5 #       ACTION=%s [register or unregister]
6 #       INTERFACE=%s
7
8 . /etc/sysconfig/network-scripts/functions.network
9
10 mesg() {
11     /usr/bin/logger -t $(basename $0)"[$$]" "$@"
12 }
13
14 debug_mesg() {
15     :
16 }
17
18 # returns true if device is either wireless, usbnet or is named eth* and supports ethtool
19 ethernet_check() {
20     [ -d /sys/class/net/$1/wireless/ ] && return 0
21     [[ "$1" == bnep* ]] && return 0
22     # eagle-usb/firewire create a fake ethX interface
23     if [ -x /usr/sbin/ethtool ] && ! /usr/sbin/ethtool $1 > /dev/null 2>&1;
24         then return 1;
25     fi
26     return 0;
27 }
28
29 if [ "$INTERFACE" = "" ]; then
30     mesg Bad NET invocation: \$INTERFACE is not set
31     exit 1
32 fi
33
34 export IN_HOTPLUG=1
35
36 case $ACTION in
37 add|register)
38     case $INTERFACE in
39         # interfaces that are registered after being "up" (?)
40         ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*)
41             debug_mesg assuming $INTERFACE is already up
42             exit 0
43             ;;
44         # interfaces that are registered then brought up
45         *)
46             # NOTE:  network configuration relies on administered state,
47             # we can't do much here without distro-specific knowledge
48             # such as whether/how to invoke DHCP, set up bridging, etc.
49
50             # Run nameif as needed - Jean II
51             # Remap interface names based on MAC address. This workaround
52             # the dreaded configuration problem "all my cards are 'eth0'"...
53             # This needs to be done before ifup otherwise ifup will get
54             # confused by the name changed and because iface need to be
55             # down to change its name.
56             if [ -x /sbin/nameif ] && [ -r /etc/mactab ]; then
57                 debug_mesg invoke nameif for $INTERFACE
58                 NEWNAME=`/sbin/nameif`
59             fi
60
61             # conform to network service (AUTOMATIC_IFCFG)
62             [ -r /etc/sysconfig/network ] && . /etc/sysconfig/network
63
64             # don't do anything for non ethernet devices
65             ethernet_check $INTERFACE || exit 0;
66
67             # automatically create an interface file
68             CFG=/etc/sysconfig/network-scripts/ifcfg-$INTERFACE
69             if [ "$AUTOMATIC_IFCFG" != no -a ! -r $CFG ]; then
70                 debug_mesg creating config file for $INTERFACE
71                 cat > $CFG <<EOF
72 DEVICE=$INTERFACE
73 BOOTPROTO=dhcp
74 ONBOOT=yes
75 EOF
76             fi
77
78             if [ ! -f /var/lock/subsys/network ] || [ ! -r $CFG ]; then
79                 # Don't do anything if the network is stopped or interface isn't configured
80                 exit 0
81             fi
82
83             if [ -x /sbin/ifup ]; then
84                 debug_mesg invoke ifup $INTERFACE
85                 exec /sbin/ifup $INTERFACE hotplug
86             fi
87             ;;
88     esac
89     mesg $1 $ACTION event not handled
90     ;;
91
92 remove|unregister)
93     case $INTERFACE in
94         # interfaces that are unregistered after being "down" (?)
95         ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*)
96             debug_mesg assuming $INTERFACE is already down
97             exit 0
98             ;;
99         *)
100             if [ -x /sbin/ifdown ]; then
101                 debug_mesg invoke ifdown $INTERFACE
102                 exec /sbin/ifdown $INTERFACE daemon
103             fi
104             ;;
105     esac
106     mesg $1 $ACTION event not handled
107     ;;
108
109 *)
110     debug_mesg NET $ACTION event for $INTERFACE not supported
111     exit 1 ;;
112
113 esac
This page took 0.063895 seconds and 4 git commands to generate.