From 27172e415a0b77465018e5cff6d980dc3265fc95 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jun 2010 20:59:47 +0200 Subject: avahi-autopid: set metric for default route in action script --- avahi-autoipd/Makefile.am | 8 ++++---- avahi-autoipd/avahi-autoipd.action.linux | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'avahi-autoipd') diff --git a/avahi-autoipd/Makefile.am b/avahi-autoipd/Makefile.am index 1911a80..dc43b54 100644 --- a/avahi-autoipd/Makefile.am +++ b/avahi-autoipd/Makefile.am @@ -52,10 +52,10 @@ nodist_pkgsysconf_SCRIPTS = avahi-autoipd.action if TARGET_FREEBSD avahi-autoipd.action: avahi-autoipd.action.bsd - cp $< $@ + $(AM_V_GEN)cp $< $@ else avahi-autoipd.action: avahi-autoipd.action.linux - cp $< $@ + $(AM_V_GEN)cp $< $@ endif if TARGET_DEBIAN @@ -63,11 +63,11 @@ if TARGET_DEBIAN noinst_SCRIPTS = dhclient-enter-hook dhclient-exit-hook dhclient-enter-hook: dhclient-enter-hook.in - sed -e 's,@sbindir\@,$(sbindir),g' $< > $@ + $(AM_V_GEN)sed -e 's,@sbindir\@,$(sbindir),g' $< > $@ && \ chmod +x $@ dhclient-exit-hook: dhclient-exit-hook.in - sed -e 's,@sbindir\@,$(sbindir),g' $< > $@ + $(AM_V_GEN)sed -e 's,@sbindir\@,$(sbindir),g' $< > $@ && \ chmod +x $@ BUILD = dhclient-exit-hook dhclient-enter-hook diff --git a/avahi-autoipd/avahi-autoipd.action.linux b/avahi-autoipd/avahi-autoipd.action.linux index cc9238c..c2db994 100755 --- a/avahi-autoipd/avahi-autoipd.action.linux +++ b/avahi-autoipd/avahi-autoipd.action.linux @@ -1,7 +1,7 @@ #!/bin/sh # 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 @@ -28,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" ;; *) @@ -54,9 +63,11 @@ elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then case "$1" in BIND) 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) + route del default dev "$2:avahi" metric "$METRIC" ||: ifconfig "$2:avahi" down ;; -- cgit