mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-03-19 00:21:40 +00:00
extra/bind to 9.13.3-2
This commit is contained in:
parent
ee625a50c3
commit
500ec8cdda
2 changed files with 139 additions and 8 deletions
|
@ -11,13 +11,13 @@ pkgbase=bind
|
||||||
pkgname=(bind bind-tools)
|
pkgname=(bind bind-tools)
|
||||||
_pkgver=9.13.3
|
_pkgver=9.13.3
|
||||||
pkgver=${_pkgver//-/.}
|
pkgver=${_pkgver//-/.}
|
||||||
pkgrel=1
|
pkgrel=2
|
||||||
url='https://www.isc.org/software/bind/'
|
url='https://www.isc.org/software/bind/'
|
||||||
license=('MPL2')
|
license=('MPL2')
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
options=('!emptydirs' '!makeflags')
|
options=('!emptydirs' '!makeflags')
|
||||||
makedepends=('libcap' 'libxml2' 'zlib' 'krb5' 'e2fsprogs' 'openssl' 'readline'
|
makedepends=('libcap' 'libxml2' 'zlib' 'krb5' 'e2fsprogs' 'openssl' 'readline'
|
||||||
'idnkit' 'geoip' 'dnssec-anchors' 'python' 'json-c' 'python-ply' 'libseccomp')
|
'libidn2' 'geoip' 'dnssec-anchors' 'python' 'json-c' 'python-ply' 'libseccomp')
|
||||||
validpgpkeys=('2B48A38AE1CF9886435F89EE45AC7857189CDBC5'
|
validpgpkeys=('2B48A38AE1CF9886435F89EE45AC7857189CDBC5'
|
||||||
'ADBE9446286C794905F1E0756FA6EBC9911A4C02' #ISC, Inc)
|
'ADBE9446286C794905F1E0756FA6EBC9911A4C02' #ISC, Inc)
|
||||||
'BE0E9748B718253A28BB89FFF1B11BF05CF02E57' #Internet Systems Consortium, Inc.
|
'BE0E9748B718253A28BB89FFF1B11BF05CF02E57' #Internet Systems Consortium, Inc.
|
||||||
|
@ -30,7 +30,8 @@ source=("https://ftp.isc.org/isc/bind9/${_pkgver}/bind-${_pkgver}.tar.gz"{,.asc}
|
||||||
'localhost.zone'
|
'localhost.zone'
|
||||||
'localhost.ip6.zone'
|
'localhost.ip6.zone'
|
||||||
'127.0.0.zone'
|
'127.0.0.zone'
|
||||||
'empty.zone')
|
'empty.zone'
|
||||||
|
'fix-FS#60286.patch')
|
||||||
sha1sums=('eed41fd32887bd163935fe14b94afad4a8b287c2'
|
sha1sums=('eed41fd32887bd163935fe14b94afad4a8b287c2'
|
||||||
'SKIP'
|
'SKIP'
|
||||||
'c5a2bcd9b0f009ae71f3a03fbdbe012196962a11'
|
'c5a2bcd9b0f009ae71f3a03fbdbe012196962a11'
|
||||||
|
@ -40,7 +41,8 @@ sha1sums=('eed41fd32887bd163935fe14b94afad4a8b287c2'
|
||||||
'6704303a6ed431a29b1d8fe7b12decd4d1f2f50f'
|
'6704303a6ed431a29b1d8fe7b12decd4d1f2f50f'
|
||||||
'52da8f1c0247a11b16daa4e03d920e8f09315cbe'
|
'52da8f1c0247a11b16daa4e03d920e8f09315cbe'
|
||||||
'9c33726088342207ad06d33b2c13408290a0c8ad'
|
'9c33726088342207ad06d33b2c13408290a0c8ad'
|
||||||
'4f4457b310cbbeadca2272eced062a9c2b2b42fe')
|
'4f4457b310cbbeadca2272eced062a9c2b2b42fe'
|
||||||
|
'90b8362f8be53a025e204ddf5f202fc872846f1e')
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
msg2 'Getting a fresh version of root DNS'
|
msg2 'Getting a fresh version of root DNS'
|
||||||
|
@ -97,7 +99,7 @@ package_bind() {
|
||||||
cd "bind-$_pkgver"
|
cd "bind-$_pkgver"
|
||||||
install -dm755 "$pkgdir/usr/share/licenses/$pkgname/"
|
install -dm755 "$pkgdir/usr/share/licenses/$pkgname/"
|
||||||
install -Dm644 LICENSE COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/"
|
install -Dm644 LICENSE COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/"
|
||||||
for _d in bin/{check,confgen,named,rndc}; do
|
for _d in bin/{check,named,rndc}; do
|
||||||
(cd "$_d" && make DESTDIR="$pkgdir" install)
|
(cd "$_d" && make DESTDIR="$pkgdir" install)
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -119,8 +121,8 @@ package_bind() {
|
||||||
package_bind-tools() {
|
package_bind-tools() {
|
||||||
pkgdesc='The ISC DNS tools'
|
pkgdesc='The ISC DNS tools'
|
||||||
depends=('glibc' 'libcap' 'libseccomp' 'libxml2' 'zlib' 'krb5' 'e2fsprogs'
|
depends=('glibc' 'libcap' 'libseccomp' 'libxml2' 'zlib' 'krb5' 'e2fsprogs'
|
||||||
'openssl' 'readline' 'geoip' 'idnkit' 'dnssec-anchors' 'json-c')
|
'openssl' 'readline' 'geoip' 'libidn2' 'dnssec-anchors' 'json-c'
|
||||||
optdepends=('python: for python scripts')
|
'python')
|
||||||
conflicts=('dnsutils')
|
conflicts=('dnsutils')
|
||||||
replaces=('dnsutils' 'host')
|
replaces=('dnsutils' 'host')
|
||||||
provides=("dnsutils=$pkgver")
|
provides=("dnsutils=$pkgver")
|
||||||
|
@ -129,7 +131,7 @@ package_bind-tools() {
|
||||||
install -Dm644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
install -Dm644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||||
make DESTDIR="$pkgdir" SUBDIRS="" install
|
make DESTDIR="$pkgdir" SUBDIRS="" install
|
||||||
(cd lib && make DESTDIR="$pkgdir" install)
|
(cd lib && make DESTDIR="$pkgdir" install)
|
||||||
for _d in bin/{dig,dnssec,delv,nsupdate,python,tools}; do
|
for _d in bin/{confgen,dig,dnssec,delv,nsupdate,python,tools}; do
|
||||||
(cd "$_d" && make DESTDIR="$pkgdir" install)
|
(cd "$_d" && make DESTDIR="$pkgdir" install)
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
129
extra/bind/fix-FS#60286.patch
Normal file
129
extra/bind/fix-FS#60286.patch
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
diff --git a/lib/irs/getaddrinfo.c b/lib/irs/getaddrinfo.c
|
||||||
|
index 1b2df6d71c9a3df0e75c1f336833a136e0d6a06c..d5481c7afa605880b7c9e5ca17815d5f80e6ea5a 100644
|
||||||
|
--- a/lib/irs/getaddrinfo.c
|
||||||
|
+++ b/lib/irs/getaddrinfo.c
|
||||||
|
@@ -181,6 +181,47 @@ static void _freeaddrinfo(struct addrinfo *ai);
|
||||||
|
#define FOUND_IPV6 0x2
|
||||||
|
#define FOUND_MAX 2
|
||||||
|
|
||||||
|
+/*%
|
||||||
|
+ * Try converting the scope identifier in 'src' to a network interface index.
|
||||||
|
+ * Upon success, return true and store the resulting index in 'dst'. Upon
|
||||||
|
+ * failure, return false.
|
||||||
|
+ */
|
||||||
|
+static bool
|
||||||
|
+parse_scopeid(const char *src, uint32_t *dst) {
|
||||||
|
+ uint32_t scopeid = 0;
|
||||||
|
+
|
||||||
|
+ REQUIRE(src != NULL);
|
||||||
|
+ REQUIRE(dst != NULL);
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_IF_NAMETOINDEX
|
||||||
|
+ /*
|
||||||
|
+ * Try using if_nametoindex() first if it is available. As it does not
|
||||||
|
+ * handle numeric scopes, we do not simply return if it fails.
|
||||||
|
+ */
|
||||||
|
+ scopeid = (uint32_t)if_nametoindex(src);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Fall back to numeric scope processing if if_nametoindex() either
|
||||||
|
+ * fails or is unavailable.
|
||||||
|
+ */
|
||||||
|
+ if (scopeid == 0) {
|
||||||
|
+ char *endptr = NULL;
|
||||||
|
+ scopeid = (uint32_t)strtoul(src, &endptr, 10);
|
||||||
|
+ /*
|
||||||
|
+ * The scope identifier must not be empty and no trailing
|
||||||
|
+ * characters are allowed after it.
|
||||||
|
+ */
|
||||||
|
+ if (src == endptr || endptr == NULL || *endptr != '\0') {
|
||||||
|
+ return (false);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ *dst = scopeid;
|
||||||
|
+
|
||||||
|
+ return (true);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#define ISC_AI_MASK (AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST)
|
||||||
|
/*%
|
||||||
|
* Get a list of IP addresses and port numbers for host hostname and
|
||||||
|
@@ -365,39 +406,24 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||||
|
char abuf[sizeof(struct in6_addr)];
|
||||||
|
char nbuf[NI_MAXHOST];
|
||||||
|
int addrsize, addroff;
|
||||||
|
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||||
|
- char *p, *ep;
|
||||||
|
char ntmp[NI_MAXHOST];
|
||||||
|
- uint32_t scopeid;
|
||||||
|
-#endif
|
||||||
|
+ uint32_t scopeid = 0;
|
||||||
|
|
||||||
|
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||||
|
/*
|
||||||
|
* Scope identifier portion.
|
||||||
|
*/
|
||||||
|
ntmp[0] = '\0';
|
||||||
|
if (strchr(hostname, '%') != NULL) {
|
||||||
|
+ char *p;
|
||||||
|
strlcpy(ntmp, hostname, sizeof(ntmp));
|
||||||
|
p = strchr(ntmp, '%');
|
||||||
|
- ep = NULL;
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Vendors may want to support non-numeric
|
||||||
|
- * scopeid around here.
|
||||||
|
- */
|
||||||
|
|
||||||
|
- if (p != NULL)
|
||||||
|
- scopeid = (uint32_t)strtoul(p + 1,
|
||||||
|
- &ep, 10);
|
||||||
|
- if (p != NULL && ep != NULL && ep[0] == '\0')
|
||||||
|
+ if (p != NULL && parse_scopeid(p + 1, &scopeid)) {
|
||||||
|
*p = '\0';
|
||||||
|
- else {
|
||||||
|
+ } else {
|
||||||
|
ntmp[0] = '\0';
|
||||||
|
- scopeid = 0;
|
||||||
|
}
|
||||||
|
- } else
|
||||||
|
- scopeid = 0;
|
||||||
|
-#endif
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (inet_pton(AF_INET, hostname, (struct in_addr *)abuf)
|
||||||
|
== 1) {
|
||||||
|
@@ -415,7 +441,6 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||||
|
addroff = offsetof(struct sockaddr_in, sin_addr);
|
||||||
|
family = AF_INET;
|
||||||
|
goto common;
|
||||||
|
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||||
|
} else if (ntmp[0] != '\0' &&
|
||||||
|
inet_pton(AF_INET6, ntmp, abuf) == 1) {
|
||||||
|
if (family && family != AF_INET6)
|
||||||
|
@@ -424,7 +449,6 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||||
|
addroff = offsetof(struct sockaddr_in6, sin6_addr);
|
||||||
|
family = AF_INET6;
|
||||||
|
goto common;
|
||||||
|
-#endif
|
||||||
|
} else if (inet_pton(AF_INET6, hostname, abuf) == 1) {
|
||||||
|
if (family != 0 && family != AF_INET6)
|
||||||
|
return (EAI_NONAME);
|
||||||
|
@@ -444,12 +468,10 @@ getaddrinfo(const char *hostname, const char *servname,
|
||||||
|
ai->ai_socktype = socktype;
|
||||||
|
SIN(ai->ai_addr)->sin_port = port;
|
||||||
|
memmove((char *)ai->ai_addr + addroff, abuf, addrsize);
|
||||||
|
+ if (ai->ai_family == AF_INET6) {
|
||||||
|
+ SIN6(ai->ai_addr)->sin6_scope_id = scopeid;
|
||||||
|
+ }
|
||||||
|
if ((flags & AI_CANONNAME) != 0) {
|
||||||
|
-#ifdef IRS_HAVE_SIN6_SCOPE_ID
|
||||||
|
- if (ai->ai_family == AF_INET6)
|
||||||
|
- SIN6(ai->ai_addr)->sin6_scope_id =
|
||||||
|
- scopeid;
|
||||||
|
-#endif
|
||||||
|
if (getnameinfo(ai->ai_addr,
|
||||||
|
(socklen_t)ai->ai_addrlen,
|
||||||
|
nbuf, sizeof(nbuf), NULL, 0,
|
Loading…
Reference in a new issue