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