]> git.meshlink.io Git - catta/blob - avahi-dnsconfd/avahi-dnsconfd.action
fix avahi_netlink_new to allow multiple netlinks per process
[catta] / avahi-dnsconfd / avahi-dnsconfd.action
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 test "x$AVAHI_INTERFACE" != "x"
23
24 # Command line arguments:
25 #   $1 "+" if a new DNS server was found, "-" if one was removed
26 #   $2 DNS Server address
27 #   $3 interface index where this server was found on
28 #   $4 protocol number where this server was found on
29
30 # Available environment variables:
31 #
32 #   $AVAHI_INTERFACE               The interface name where this DNS server was found on
33 #   $AVAHI_INTERFACE_DNS_SERVERS   A whitespace seperated list of DNS servers on $AVAHI_INTERFACE
34 #   $AVAHI_DNS_SERVERS             The complete list of all DNS servers found on all interfaces
35
36 if [ -x /sbin/netconfig ]; then
37     # SUSE method on 11.1+
38     if [ -n "$AVAHI_INTERFACE_DNS_SERVERS" ]; then
39         /sbin/netconfig modify -s avahi -i "$AVAHI_INTERFACE" <<-EOF
40         INTERFACE='$AVAHI_INTERFACE'
41         DNSSERVERS='$AVAHI_INTERFACE_DNS_SERVERS'
42         EOF
43     else
44         /sbin/netconfig remove -s avahi -i "$AVAHI_INTERFACE"
45     fi
46 elif [ -x /sbin/modify_resolvconf ] ; then
47     # method for SUSE <= 11.0
48     if [ -n "$AVAHI_DNS_SERVERS" ]; then
49         /sbin/modify_resolvconf modify -s avahi -t - -p avahi-dnsconfd -n "$AVAHI_DNS_SERVERS" <<-EOF
50         if you don't like avahi to update your Nameservers
51         disable the avahi-dnsconfd init script
52         EOF
53     else
54         /sbin/modify_resolvconf restore -s avahi
55     fi
56 elif [ -x /sbin/resolvconf ] ; then
57
58     # We have Debian's resolvconf tool
59
60     if [ "x$AVAHI_INTERFACE_DNS_SERVERS" = "x" ] ; then
61         /sbin/resolvconf -d "$AVAHI_INTERFACE.avahi"
62     else
63         for n in $AVAHI_INTERFACE_DNS_SERVERS ; do 
64             echo "nameserver $n"
65         done | /sbin/resolvconf -a "$AVAHI_INTERFACE.avahi"
66     fi
67 else
68
69     # No resolvconf tool available
70
71     if [ "x$AVAHI_DNS_SERVERS" = "x" ] ; then
72         test -f /etc/resolv.conf.avahi && mv /etc/resolv.conf.avahi /etc/resolv.conf
73     else
74         test -f /etc/resolv.conf.avahi || mv /etc/resolv.conf /etc/resolv.conf.avahi
75
76         for n in $AVAHI_DNS_SERVERS ; do 
77             echo "nameserver $n"
78         done > /etc/resolv.conf
79     fi
80 fi