1#!/bin/sh 2 3# This file is part of avahi. 4# 5# avahi is free software; you can redistribute it and/or modify it 6# under the terms of the GNU Lesser General Public License as 7# published by the Free Software Foundation; either version 2 of the 8# License, or (at your option) any later version. 9# 10# avahi is distributed in the hope that it will be useful, but WITHOUT 11# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 13# License for more details. 14# 15# You should have received a copy of the GNU Lesser General Public 16# License along with avahi; if not, write to the Free Software 17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 18# USA. 19 20set -e 21 22# Command line arguments: 23# $1 event that happened: 24# BIND: Successfully claimed address 25# CONFLICT: An IP address conflict happened 26# UNBIND: The IP address is no longer needed 27# STOP: The daemon is terminating 28# $2 interface name 29# $3 IP adddress 30 31PATH="$PATH:/usr/bin:/usr/sbin:/bin:/sbin" 32 33# Use a different metric for each interface, so that we can set 34# identical routes to multiple interfaces. 35 36METRIC=$((1000 + `cat "/sys/class/net/$2/ifindex" 2>/dev/null || echo 0`)) 37 38if [ -x /bin/ip -o -x /sbin/ip ] ; then 39 40 # We have the Linux ip tool from the iproute package 41 42 case "$1" in 43 BIND) 44 ip addr flush dev "$2" label "$2:avahi" 45 ip addr add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" 46 ip route add default dev "$2" metric "$METRIC" scope link ||: 47 ;; 48 49 CONFLICT|UNBIND|STOP) 50 ip route del default dev "$2" metric "$METRIC" scope link ||: 51 ip addr del "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" 52 ;; 53 54 *) 55 echo "Unknown event $1" >&2 56 exit 1 57 ;; 58 esac 59 60elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then 61 62 # We have the old ifconfig tool 63 64 case "$1" in 65 BIND) 66 ifconfig "$2:avahi" inet "$3" netmask 255.255.0.0 broadcast 169.254.255.255 up 67 route add default dev "$2:avahi" metric "$METRIC" ||: 68 ;; 69 70 CONFLICT|STOP|UNBIND) 71 route del default dev "$2:avahi" metric "$METRIC" ||: 72 ifconfig "$2:avahi" down 73 ;; 74 75 *) 76 echo "Unknown event $1" >&2 77 exit 1 78 ;; 79 esac 80 81else 82 83 echo "No network configuration tool found." >&2 84 exit 1 85 86fi 87 88exit 0 89