summaryrefslogtreecommitdiffstats
path: root/avahi-autoipd
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-06-25 20:59:47 +0200
committerLennart Poettering <lennart@poettering.net>2010-06-25 20:59:47 +0200
commit27172e415a0b77465018e5cff6d980dc3265fc95 (patch)
tree7eff65fef7fd5ce8d3d525919639f8cdf0b17c5f /avahi-autoipd
parent22d4df25cb5093a878dca5132b316c27ba47bd83 (diff)
avahi-autopid: set metric for default route in action script
Diffstat (limited to 'avahi-autoipd')
-rw-r--r--avahi-autoipd/Makefile.am8
-rwxr-xr-xavahi-autoipd/avahi-autoipd.action.linux17
2 files changed, 18 insertions, 7 deletions
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
;;