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 add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" 45 ip route add default dev "$2" metric "$METRIC" scope link ||: 46 ;; 47 48 CONFLICT|UNBIND|STOP) 49 ip route del default dev "$2" metric "$METRIC" scope link ||: 50 ip addr del "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" 51 ;; 52 53 *) 54 echo "Unknown event $1" >&2 55 exit 1 56 ;; 57 esac 58 59elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then 60 61 # We have the old ifconfig tool 62 63 case "$1" in 64 BIND) 65 ifconfig "$2:avahi" inet "$3" netmask 255.255.0.0 broadcast 169.254.255.255 up 66 route add default dev "$2:avahi" metric "$METRIC" ||: 67 ;; 68 69 CONFLICT|STOP|UNBIND) 70 route del default dev "$2:avahi" metric "$METRIC" ||: 71 ifconfig "$2:avahi" down 72 ;; 73 74 *) 75 echo "Unknown event $1" >&2 76 exit 1 77 ;; 78 esac 79 80else 81 82 echo "No network configuration tool found." >&2 83 exit 1 84 85fi 86 87exit 0 88