X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-autoipd%2Favahi-autoipd.action.linux;h=c2db9942c32c191c665c6e7c7d0be287ea0a0967;hb=0e8a4f32e3182d5a2337ca679f7a144cbe341f17;hp=27f00bb08c3102ebbfb549678c76065d07881a3e;hpb=f10b82b26456f44d03d0c28d93c5118b859d3891;p=catta diff --git a/avahi-autoipd/avahi-autoipd.action.linux b/avahi-autoipd/avahi-autoipd.action.linux index 27f00bb..c2db994 100755 --- a/avahi-autoipd/avahi-autoipd.action.linux +++ b/avahi-autoipd/avahi-autoipd.action.linux @@ -1,9 +1,7 @@ #!/bin/sh -# $Id$ -# # This file is part of avahi. -# +# # avahi is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation; either version 2 of the @@ -30,17 +28,26 @@ set -e # $2 interface name # $3 IP adddress +PATH="$PATH:/usr/bin:/usr/sbin:/bin:/sbin" + +# Use a different metric for each interface, so that we can set +# identical routes to multiple interfaces. + +METRIC=$((1000 + `cat "/sys/class/net/$2/ifindex" 2>/dev/null || echo 0`)) + if [ -x /bin/ip -o -x /sbin/ip ] ; then # We have the Linux ip tool from the iproute package case "$1" in BIND) - ip addr add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" + ip addr add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" + ip route add default dev "$2" metric "$METRIC" scope link ||: ;; CONFLICT|UNBIND|STOP) - ip addr del "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" + ip route del default dev "$2" metric "$METRIC" scope link ||: + ip addr del "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" ;; *) @@ -55,11 +62,13 @@ elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then case "$1" in BIND) - ifconfig "$2:3" inet "$3" netmask 255.255.0.0 broadcast 169.254.255.255 up + ifconfig "$2:avahi" inet "$3" netmask 255.255.0.0 broadcast 169.254.255.255 up + route add default dev "$2:avahi" metric "$METRIC" ||: ;; CONFLICT|STOP|UNBIND) - ifconfig "$2:3" down + route del default dev "$2:avahi" metric "$METRIC" ||: + ifconfig "$2:avahi" down ;; *)