Am 05.05.2014 02:19, schrieb Michael Biebl: > On 5. Mai 2014 00:41:19 MESZ, Gero Treuner <gt_72_debian....@innocircle.com> > 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