summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-dns')
-rw-r--r--net-dns/dnsmasq/dnsmasq-2.76-r1.ebuild193
-rw-r--r--net-dns/dnsmasq/files/dnsmasq-2.76-handle-binding-upstream-servers-to-an-interface.patch135
2 files changed, 0 insertions, 328 deletions
diff --git a/net-dns/dnsmasq/dnsmasq-2.76-r1.ebuild b/net-dns/dnsmasq/dnsmasq-2.76-r1.ebuild
deleted file mode 100644
index 8a754fc363b3..000000000000
--- a/net-dns/dnsmasq/dnsmasq-2.76-r1.ebuild
+++ /dev/null
@@ -1,193 +0,0 @@
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=6
-
-inherit eutils toolchain-funcs flag-o-matic user systemd
-
-DESCRIPTION="Small forwarding DNS server"
-HOMEPAGE="http://www.thekelleys.org.uk/dnsmasq/doc.html"
-SRC_URI="http://www.thekelleys.org.uk/dnsmasq/${P}.tar.xz"
-
-LICENSE="|| ( GPL-2 GPL-3 )"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd"
-IUSE="auth-dns conntrack dbus +dhcp dhcp-tools dnssec idn +inotify ipv6 lua nls script selinux static tftp"
-DM_LINGUAS="de es fi fr id it no pl pt_BR ro"
-for dm_lingua in ${DM_LINGUAS}; do
- IUSE+=" linguas_${dm_lingua}"
-done
-
-CDEPEND="dbus? ( sys-apps/dbus )
- idn? ( net-dns/libidn )
- lua? ( dev-lang/lua:* )
- conntrack? ( net-libs/libnetfilter_conntrack )
- nls? (
- sys-devel/gettext
- net-dns/libidn
- )
-"
-
-DEPEND="${CDEPEND}
- app-arch/xz-utils
- dnssec? (
- dev-libs/nettle[gmp]
- static? (
- dev-libs/nettle[static-libs(+)]
- )
- )
- virtual/pkgconfig"
-
-RDEPEND="${CDEPEND}
- dnssec? (
- !static? (
- dev-libs/nettle[gmp]
- )
- )
- selinux? ( sec-policy/selinux-dnsmasq )
-"
-
-REQUIRED_USE="dhcp-tools? ( dhcp )
- lua? ( script )"
-
-PATCHES=(
- "${FILESDIR}/${P}-handle-binding-upstream-servers-to-an-interface.patch"
-)
-
-use_have() {
- local useflag no_only uword
- if [[ $1 == '-n' ]]; then
- no_only=1
- shift
- fi
- useflag="${1}"
- shift
-
- uword="${1:-${useflag}}"
- shift
-
- while [[ ${uword} ]]; do
- uword="${uword^^}"
-
- if ! use "${useflag}"; then
- printf " -DNO_%s" "${uword}"
- elif [[ -z "${no_only}" ]]; then
- printf " -DHAVE_%s" "${uword}"
- fi
- uword="${1}"
- shift
- done
-}
-
-pkg_pretend() {
- if use static; then
- einfo "Only sys-libs/gmp and dev-libs/nettle are statically linked."
- use dnssec || einfo "Thus, ${P}[!dnssec,static] makes no sense; the static USE flag is ignored."
- fi
-}
-
-pkg_setup() {
- enewgroup dnsmasq
- enewuser dnsmasq -1 -1 /dev/null dnsmasq
-}
-
-src_prepare() {
- default
-
- sed -i -r 's:lua5.[0-9]+:lua:' Makefile
- sed -i "s:%%PREFIX%%:${EPREFIX}/usr:" dnsmasq.conf.example
-}
-
-src_configure() {
- COPTS="$(use_have -n auth-dns auth)"
- COPTS+="$(use_have conntrack)"
- COPTS+="$(use_have dbus)"
- COPTS+="$(use_have idn)"
- COPTS+="$(use_have -n inotify)"
- COPTS+="$(use_have -n dhcp dhcp dhcp6)"
- COPTS+="$(use_have -n ipv6 ipv6 dhcp6)"
- COPTS+="$(use_have lua luascript)"
- COPTS+="$(use_have -n script)"
- COPTS+="$(use_have -n tftp)"
- COPTS+="$(use_have dnssec)"
- COPTS+="$(use_have static dnssec_static)"
-}
-
-src_compile() {
- emake \
- PREFIX="${EPREFIX}/usr" \
- MANDIR="${EPREFIX}/usr/share/man" \
- CC="$(tc-getCC)" \
- PKG_CONFIG="$(tc-getPKG_CONFIG)" \
- CFLAGS="${CFLAGS}" \
- LDFLAGS="${LDFLAGS}" \
- COPTS="${COPTS}" \
- CONFFILE="${EPREFIX}/etc/${PN}.conf" \
- all$(use nls && echo "-i18n")
-
- use dhcp-tools && emake -C contrib/lease-tools \
- PREFIX="${EPREFIX}/usr" \
- MANDIR="${EPREFIX}/usr/share/man" \
- CC="$(tc-getCC)" \
- PKG_CONFIG="$(tc-getPKG_CONFIG)" \
- CFLAGS="${CFLAGS}" \
- LDFLAGS="${LDFLAGS}" \
- all
-}
-
-src_install() {
- local lingua puid
- emake \
- PREFIX=/usr \
- MANDIR=/usr/share/man \
- COPTS="${COPTS}" \
- DESTDIR="${ED}" \
- install$(use nls && echo "-i18n")
-
- for lingua in ${DM_LINGUAS}; do
- use linguas_${lingua} || rm -rf "${D}"/usr/share/locale/${lingua}
- done
- [[ -d "${ED}"/usr/share/locale/ ]] && rmdir --ignore-fail-on-non-empty "${ED}"/usr/share/locale/
-
- dodoc CHANGELOG CHANGELOG.archive FAQ dnsmasq.conf.example
- dodoc -r logo
-
- docinto html/
- dodoc *.html
-
- newinitd "${FILESDIR}"/dnsmasq-init-r2 ${PN}
- newconfd "${FILESDIR}"/dnsmasq.confd-r1 ${PN}
-
- insinto /etc
- newins dnsmasq.conf.example dnsmasq.conf
-
- insinto /usr/share/dnsmasq
- doins trust-anchors.conf
-
- if use dhcp; then
- dodir /var/lib/misc
- newinitd "${FILESDIR}"/dnsmasq-init-dhcp-r1 ${PN}
- fi
- if use dbus; then
- insinto /etc/dbus-1/system.d
- doins dbus/dnsmasq.conf
- fi
-
- if use dhcp-tools; then
- dosbin contrib/lease-tools/{dhcp_release,dhcp_lease_time}
- doman contrib/lease-tools/{dhcp_release,dhcp_lease_time}.1
- fi
-
- systemd_newunit "${FILESDIR}"/${PN}.service-r1 ${PN}.service
-}
-
-pkg_preinst() {
- # temporary workaround to (hopefully) prevent leases file from being removed
- [[ -f /var/lib/misc/dnsmasq.leases ]] && cp /var/lib/misc/dnsmasq.leases "${T}"
-}
-
-pkg_postinst() {
- # temporary workaround to (hopefully) prevent leases file from being removed
- [[ -f "${T}"/dnsmasq.leases ]] && cp "${T}"/dnsmasq.leases /var/lib/misc/dnsmasq.leases
-}
diff --git a/net-dns/dnsmasq/files/dnsmasq-2.76-handle-binding-upstream-servers-to-an-interface.patch b/net-dns/dnsmasq/files/dnsmasq-2.76-handle-binding-upstream-servers-to-an-interface.patch
deleted file mode 100644
index 463c9358cbfb..000000000000
--- a/net-dns/dnsmasq/files/dnsmasq-2.76-handle-binding-upstream-servers-to-an-interface.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 2675f2061525bc954be14988d64384b74aa7bf8b Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Sun, 28 Aug 2016 20:44:05 +0100
-Subject: [PATCH] Handle binding upstream servers to an interface
- (--server=1.2.3.4@eth0) when the named interface is
- destroyed and recreated in the kernel.
-
----
- CHANGELOG | 5 +++++
- src/dnsmasq.h | 1 +
- src/network.c | 31 +++++++++++++++++++++++++++++--
- 3 files changed, 35 insertions(+), 2 deletions(-)
-
-diff --git a/CHANGELOG b/CHANGELOG
-index 2731cc4..5bcce38 100644
---- a/CHANGELOG
-+++ b/CHANGELOG
-@@ -30,6 +30,11 @@ version 2.77
- and are now converted to names like
- <prefix>--ffff-1-2-3-4.<domain>
-
-+ Handle binding upstream servers to an interface
-+ (--server=1.2.3.4@eth0) when the named interface
-+ is destroyed and recreated in the kernel. Thanks to
-+ Beniamino Galvani for the patch.
-+
-
- version 2.76
- Include 0.0.0.0/8 in DNS rebind checks. This range
-diff --git a/src/dnsmasq.h b/src/dnsmasq.h
-index 27385a9..f239ce5 100644
---- a/src/dnsmasq.h
-+++ b/src/dnsmasq.h
-@@ -488,6 +488,7 @@ struct serverfd {
- int fd;
- union mysockaddr source_addr;
- char interface[IF_NAMESIZE+1];
-+ unsigned int ifindex, used;
- struct serverfd *next;
- };
-
-diff --git a/src/network.c b/src/network.c
-index e7722fd..ddf8d31 100644
---- a/src/network.c
-+++ b/src/network.c
-@@ -1204,6 +1204,7 @@ int local_bind(int fd, union mysockaddr *addr, char *intname, int is_tcp)
- static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname)
- {
- struct serverfd *sfd;
-+ unsigned int ifindex = 0;
- int errsave;
-
- /* when using random ports, servers which would otherwise use
-@@ -1224,11 +1225,15 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname)
- return NULL;
- #endif
- }
-+
-+ if (intname && strlen(intname) != 0)
-+ ifindex = if_nametoindex(intname); /* index == 0 when not binding to an interface */
-
- /* may have a suitable one already */
- for (sfd = daemon->sfds; sfd; sfd = sfd->next )
- if (sockaddr_isequal(&sfd->source_addr, addr) &&
-- strcmp(intname, sfd->interface) == 0)
-+ strcmp(intname, sfd->interface) == 0 &&
-+ ifindex == sfd->ifindex)
- return sfd;
-
- /* need to make a new one. */
-@@ -1250,11 +1255,13 @@ static struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname)
- errno = errsave;
- return NULL;
- }
--
-+
- strcpy(sfd->interface, intname);
- sfd->source_addr = *addr;
- sfd->next = daemon->sfds;
-+ sfd->ifindex = ifindex;
- daemon->sfds = sfd;
-+
- return sfd;
- }
-
-@@ -1429,12 +1436,16 @@ void check_servers(void)
- {
- struct irec *iface;
- struct server *serv;
-+ struct serverfd *sfd, *tmp, **up;
- int port = 0, count;
-
- /* interface may be new since startup */
- if (!option_bool(OPT_NOWILD))
- enumerate_interfaces(0);
-
-+ for (sfd = daemon->sfds; sfd; sfd = sfd->next)
-+ sfd->used = 0;
-+
- #ifdef HAVE_DNSSEC
- /* Disable DNSSEC validation when using server=/domain/.... servers
- unless there's a configured trust anchor. */
-@@ -1505,6 +1516,8 @@ void check_servers(void)
- serv->flags |= SERV_MARK;
- continue;
- }
-+
-+ serv->sfd->used = 1;
- }
-
- if (!(serv->flags & SERV_NO_REBIND) && !(serv->flags & SERV_LITERAL_ADDRESS))
-@@ -1547,6 +1560,20 @@ void check_servers(void)
- if (count - 1 > SERVERS_LOGGED)
- my_syslog(LOG_INFO, _("using %d more nameservers"), count - SERVERS_LOGGED - 1);
-
-+ /* Remove unused sfds */
-+ for (sfd = daemon->sfds, up = &daemon->sfds; sfd; sfd = tmp)
-+ {
-+ tmp = sfd->next;
-+ if (!sfd->used)
-+ {
-+ *up = sfd->next;
-+ close(sfd->fd);
-+ free(sfd);
-+ }
-+ else
-+ up = &sfd->next;
-+ }
-+
- cleanup_servers();
- }
-
---
-1.7.10.4
-