Am 05.05.2014 02:19, schrieb Michael Biebl: > On 5. Mai 2014 00:41:19 MESZ, Gero Treuner <[email protected]> > wrote:
>> If a network device contains a '-' character, ifup is not executed by > Nah, we just need to escape the interface name. Will send you an updated > net.agent which does that Please try the attached net.agent (copy it to /lib/udev/net.agent and make it executable). It escapes the interface name before starting an instance of the service. If you want to run systemctl status, make sure to quote the name like this: systemctl status "ifup@veth\x2ddevmachine.service" Please report if that works for you. Michael Cheers, Michael -- Why is it that all of the instruments seeking intelligent life in the universe are pointed away from Earth?
#!/bin/sh -e
#
# run /sbin/{ifup,ifdown} with the --allow=hotplug option.
#
. /lib/udev/hotplug.functions
if [ -z "$INTERFACE" ]; then
mesg "Bad net.agent invocation: \$INTERFACE is not set"
exit 1
fi
check_program() {
[ -x $1 ] && return 0
mesg "ERROR: $1 not found. You need to install the ifupdown package."
mesg "net.agent $ACTION event for $INTERFACE not handled."
exit 1
}
wait_for_interface() {
local interface=$1
while :; do
local state="$(cat /sys/class/net/$interface/operstate 2>/dev/null ||
true)"
if [ "$state" != down ]; then
return 0
fi
sleep 1
done
}
net_ifup() {
check_program /sbin/ifup
if grep -q '^auto[[:space:]].*\<'"$INTERFACE"'\>' \
/etc/network/interfaces; then
# this $INTERFACE is marked as "auto"
IFUPARG='\('$INTERFACE'\|-a\|--all\)'
else
IFUPARG=$INTERFACE
fi
if ps -C ifup ho args | grep -q "$IFUPARG"; then
debug_mesg "Already ifup-ing interface $INTERFACE"
exit 0
fi
wait_for_interface lo
if [ -d /run/systemd/system ]; then
ESCAPED_INTERFACE="$(echo $INTERFACE | sed -s 's/-/\\x2d/')"
exec systemctl start "ifup@${ESCAPED_INTERFACE}.service"
else
exec ifup --allow=hotplug $INTERFACE
fi
}
net_ifdown() {
check_program /sbin/ifdown
# 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
if ps -C ifdown ho args | grep -q $INTERFACE; then
debug_mesg "Already ifdown-ing interface $INTERFACE"
exit 0
fi
exec ifdown --allow=hotplug $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
;;
*)
debug_mesg "NET $ACTION event not supported"
exit 1
;;
esac
}
# 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.
do_everything > /dev/null 2> /dev/null &
exit 0
signature.asc
Description: OpenPGP digital signature

