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 20 set -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 31 PATH="$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 36 METRIC=$((1000 + `cat "/sys/class/net/$2/ifindex" 2>/dev/null || echo 0`)) 37 38 if [ -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 59 elif [ -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 80 else 81 82 echo "No network configuration tool found." >&2 83 exit 1 84 85 fi 86 87 exit 0 88