diff options
author | Jon Portnoy <avenj@gentoo.org> | 2006-09-13 04:39:52 +0000 |
---|---|---|
committer | Jon Portnoy <avenj@gentoo.org> | 2006-09-13 04:39:52 +0000 |
commit | 0d4685f313503c4aeeaed24ca70678b99de2095e (patch) | |
tree | 8304bd5f6834eaeb9a0f8e440320fe9e3af85689 /net-dns | |
parent | Add resolvconf flag for dnsmasq (diff) | |
download | gentoo-2-0d4685f313503c4aeeaed24ca70678b99de2095e.tar.gz gentoo-2-0d4685f313503c4aeeaed24ca70678b99de2095e.tar.bz2 gentoo-2-0d4685f313503c4aeeaed24ca70678b99de2095e.zip |
Added resolvconf support
(Portage version: 2.1.1_rc1)
Diffstat (limited to 'net-dns')
-rw-r--r-- | net-dns/dnsmasq/ChangeLog | 5 | ||||
-rw-r--r-- | net-dns/dnsmasq/dnsmasq-2.33.ebuild | 12 | ||||
-rw-r--r-- | net-dns/dnsmasq/files/resolvconf.dnsmasq | 89 |
3 files changed, 102 insertions, 4 deletions
diff --git a/net-dns/dnsmasq/ChangeLog b/net-dns/dnsmasq/ChangeLog index e97bf5204809..646012b97fe2 100644 --- a/net-dns/dnsmasq/ChangeLog +++ b/net-dns/dnsmasq/ChangeLog @@ -1,6 +1,9 @@ # ChangeLog for net-dns/dnsmasq # Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-dns/dnsmasq/ChangeLog,v 1.99 2006/09/04 05:47:15 kumba Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-dns/dnsmasq/ChangeLog,v 1.100 2006/09/13 04:39:52 avenj Exp $ + + 13 Sep 2006; Jon Portnoy <avenj@gentoo.org> dnsmasq-2.33.ebuild : + Added net-dns/resolvconf support 04 Sep 2006; Joshua Kinard <kumba@gentoo.org> dnsmasq-2.31.ebuild: Marked stable on mips. diff --git a/net-dns/dnsmasq/dnsmasq-2.33.ebuild b/net-dns/dnsmasq/dnsmasq-2.33.ebuild index e27c21d275a9..001a0e858ca5 100644 --- a/net-dns/dnsmasq/dnsmasq-2.33.ebuild +++ b/net-dns/dnsmasq/dnsmasq-2.33.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-dns/dnsmasq/dnsmasq-2.33.ebuild,v 1.1 2006/08/07 16:51:56 avenj Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-dns/dnsmasq/dnsmasq-2.33.ebuild,v 1.2 2006/09/13 04:39:52 avenj Exp $ inherit eutils toolchain-funcs @@ -13,11 +13,12 @@ SRC_URI="http://www.thekelleys.org.uk/dnsmasq/${MY_P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~s390 ~sh ~sparc ~x86" -IUSE="" +IUSE="resolvconf" RDEPEND="" DEPEND="${RDEPEND} - >=sys-apps/portage-2.0.51" + >=sys-apps/portage-2.0.51 + resolvconf? ( net-dns/resolvconf-gentoo )" S=${WORKDIR}/${PN}-${MY_PV} @@ -43,4 +44,9 @@ src_install() { newconfd "${FILESDIR}"/dnsmasq.confd dnsmasq insinto /etc newins dnsmasq.conf.example dnsmasq.conf + + if use resolvconf ; then + insinto /etc/resolvconf/update.d + newins ${FILESDIR}/resolvconf.dnsmasq dnsmasq + fi } diff --git a/net-dns/dnsmasq/files/resolvconf.dnsmasq b/net-dns/dnsmasq/files/resolvconf.dnsmasq new file mode 100644 index 000000000000..423769a0dd5c --- /dev/null +++ b/net-dns/dnsmasq/files/resolvconf.dnsmasq @@ -0,0 +1,89 @@ +#!/bin/bash +# Copyright 2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# dnsmasq-resolv.conf updater +# Written by Roy Marples (uberlord@gentoo.org) + +# This is very important! +# We assume that we are a local dns cache - after all, why would a server +# use resolvconf? +# Now that we have assumed this, we also assume that generic DHCP clients +# will enter their domains and search domains ONLY in the "search" field +# in their resolv.confs and VPN clients will put the domain they are for +# into the domain field only. +# This allows dnsmasq to forward domains for a specific VPN domain to the +# VPN nameserver and everything else to the standard name servers. + +# A sample dnsmasq config that works as above is like so +#domain-needed +#interface=lo +#conf-file=/etc/dnsmasq-resolvconf.conf +#resolv-file=/etc/dnsmasq-resolv.conf + +# The last step is to configure dns configuration for /etc/resolv.conf +# for the lo interface. In Gentoo we set it up like so in /etc/conf.d/net +#dns_servers_lo=( "127.0.0.1" ) + +# Load generic Gentoo functions +source /etc/init.d/functions.sh + +# Load our variables from resolvconf +VARS="$(resolvconf -v)" +eval "${VARS}" + +DNSMASQRESOLV="/etc/dnsmasq-resolv.conf" +DNSMASQCONF="/etc/dnsmasq-resolvconf.conf" + +NEWCONF="# Generated by resolvconf" +NEWRESOLV="${NEWCONF}\nsearch" + +# If we only have domain information then put it in search too +[[ -z ${NEWSEARCH} && -z ${NEWNS} ]] && NEWSEARCH="${NEWDOMAIN}" + +for N in ${NEWSEARCH} ; do + if [[ " ${NEWSL} " != *" ${N%,*} "* ]] ; then + NEWSL="${NEWSL} ${N%,*}" + fi + if [[ "\n${NEWRESOLV}\n" != *"\nnameserver ${N#*,}\n"* ]] ; then + NEWRESOLV="${NEWRESOLV}\nnameserver ${N#*,}" + fi +done +for N in ${NEWNS} ; do + if [[ "\n${NEWRESOLV}\n" != *"\nnameserver ${N}\n" ]] ; then + NEWRESOLV="${NEWRESOLV}\nnameserver ${N}" + fi +done +NEWRESOLV="${NEWRESOLV//\\nsearch/${NEWSL:+\nsearch${NEWSL}}}" + +for DN in $(uniqify ${NEWDOMAIN}) ; do + NEWCONF="${NEWCONF}\nserver=/${DN%,*}/${DN#*,}" +done + +RELOAD="no" +if [[ -e ${DNSMASQCONF} ]] ; then + if [[ $(< "${DNSMASQCONF}") != "$(echo -e "${NEWCONF}")" ]] ; then + RELOAD="yes" + echo -e "${NEWCONF}" > "${DNSMASQCONF}" + fi +else + RELOAD="yes" + echo -e "${NEWCONF}" > "${DNSMASQCONF}" +fi +if [[ -e ${DNSMASQRESOLV}} ]] ; then + if [[ $(< "${DNSMASQRESOLV}") != "$(echo -e "${NEWRESOLV}")" ]] ; then + RELOAD="yes" + echo -e "${NEWRESOLV}" > "${DNSMASQRESOLV}" + fi +else + # dnsmasq polls this file so no need to set RELOAD="yes" + echo -e "${NEWRESOLV}" > "${DNSMASQRESOLV}" +fi + +if [[ ${RELOAD} == "yes" && -x /etc/init.d/dnsmasq ]] ; then + if /etc/init.d/dnsmasq --quiet status ; then + /etc/init.d/dnsmasq --quiet --nodeps restart + fi +fi + +# vim: ts=4 : |