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