#!/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 # License, or (at your option) any later version. # # avahi is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with avahi; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA. set -e # Command line arguments: # $1 event that happened: # BIND: Successfully claimed address # CONFLICT: An IP address conflict happened # UNBIND: The IP address is no longer needed # STOP: The daemon is terminating # $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 route add default dev "$2" metric "$METRIC" scope link ||: ;; CONFLICT|UNBIND|STOP) 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" ;; *) echo "Unknown event $1" >&2 exit 1 ;; esac elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then # We have the old ifconfig tool 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 ;; *) echo "Unknown event $1" >&2 exit 1 ;; esac else echo "No network configuration tool found." >&2 exit 1 fi exit 0