• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
22test "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
36if [ -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
46elif [ -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
56elif [ -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
67else
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
80fi
81