/lib/udev/netscript-hotplug is in netscript-2.4 5.5.3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | #!/bin/sh -e
#
# run /sbin/netscript for hotplug operations
#
# Taken from ifupdown package
PATH='/sbin:/bin:/usr/sbin:/usr/bin'
if [ -x /usr/bin/logger ]; then
LOGGER=/usr/bin/logger
elif [ -x /bin/logger ]; then
LOGGER=/bin/logger
else
unset LOGGER
fi
# for diagnostics
if [ -t 1 -a -z "$LOGGER" ] || [ ! -e '/dev/log' ]; then
mesg() {
echo "$@" >&2
}
elif [ -t 1 ]; then
mesg() {
echo "$@"
$LOGGER -t "${0##*/}[$$]" "$@"
}
else
mesg() {
$LOGGER -t "${0##*/}[$$]" "$@"
}
fi
if [ -z "$INTERFACE" ]; then
mesg "Bad netscript udev helper invocation: \$INTERFACE is not set"
exit 1
fi
check_program() {
[ -x $1 ] && return 0
mesg "ERROR: $1 not found. You need to install the netscript-2.4 package."
mesg "netscript udev helper $ACTION event for $INTERFACE not handled."
exit 1
}
wait_for_interface() {
local interface=$1
local state
while :; do
read state /sys/class/net/$interface/operstate 2>/dev/null || true
if [ "$state" != down ]; then
return 0
fi
sleep 1
done
}
net_ifup() {
check_program /sbin/netscript
# Don't bring up bridge interfaces under hotplug! Can cause issues with openstack
local BRG_DEVLIST=`brctl show | sed -e '1d' | grep '^[-a-zA-Z0-9_]' | sed -e 's/^\([a-zA-Z0-9_\-]\+\)[ ].*$/\1/'`
if echo "$BRG_DEVLIST" | fgrep "$INTERFACE"; then
exit 0
fi
if [ -d /run/systemd/system ]; then
exec systemctl --no-block start $(systemd-escape --template netscript@.service $INTERFACE)
fi
#local out=$(ps -C ifup ho args)
#if [ "${out%$INTERFACE*}" != "$out" ]; then
# mesg "Already ifup-ing interface $INTERFACE"
# exit 0
#fi
#wait_for_interface lo
exec netscript ifup $INTERFACE
}
net_ifdown() {
check_program /sbin/netscript
# Don't bring down bridge interfaces under hotplug! Can cause issues with openstack
local BRG_DEVLIST=`brctl show | sed -e '1d' | grep '^[-a-zA-Z0-9_]' | sed -e 's/^\([a-zA-Z0-9_\-]\+\)[ ].*$/\1/'`
if echo "$BRG_DEVLIST" | fgrep "$INTERFACE"; then
exit 0
fi
# systemd will automatically ifdown the interface on device
# removal by binding the instanced service to the network device
if [ -d /run/systemd/system ]; then
exit 0
fi
#local out=$(ps -C ifdown ho args)
#if [ "${out%$INTERFACE*}" != "$out" ]; then
# mesg "Already ifdown-ing interface $INTERFACE"
# exit 0
#fi
exec netscript ifdown $INTERFACE
}
do_everything() {
case "$ACTION" in
add)
# these interfaces generate hotplug events *after* they are brought up
case $INTERFACE in
ppp*|ippp*|isdn*|plip*|lo|irda*|ipsec*)
exit 0 ;;
esac
net_ifup
;;
remove)
# the pppd persist option may have been used, so it should not be killed
#case $INTERFACE in
# ppp*)
# exit 0 ;;
#esac
net_ifdown
;;
*)
mesg "NET $ACTION event not supported"
exit 1
;;
esac
}
# under systemd we don't do synchronous operations, so we can run in the
# foreground; we also need to, as forked children get killed right away under
# systemd
if [ -d /run/systemd/system ]; then
do_everything
else
# under sysvinit/upstart we need to fork as we start the long-running
# "ifup". but there, forked processes won't get killed.
# When udev_log="debug" stdout and stderr are pipes connected to udevd.
# They need to be closed or udevd will wait for this process which will
# deadlock with udevsettle until the timeout.
exec > /dev/null 2> /dev/null
do_everything &
fi
|