aboutsummaryrefslogtreecommitdiffstats
path: root/main/dhcpcd
diff options
context:
space:
mode:
authorsillysausage <sillysausage@privatedemail.net>2015-11-14 00:39:18 +1030
committerCarlo Landmeter <clandmeter@gmail.com>2015-11-13 15:11:26 +0100
commitddea03d38e4b8183bb700385e4e5e4c9c35e13ca (patch)
tree8dd8c5859e94026d6944eb48d6a888fc3c9d2bf0 /main/dhcpcd
parent92f3b13a04c286663d239641284cfaf86bf5f3d8 (diff)
downloadaports-ddea03d38e4b8183bb700385e4e5e4c9c35e13ca.tar.bz2
aports-ddea03d38e4b8183bb700385e4e5e4c9c35e13ca.tar.xz
dhcpcd - Describe dhcp6 error code if no text present
Patch from upstream, will be included in dhcpcd-6.9.4 when released http://roy.marples.name/projects/dhcpcd/vpatch?from=d8f8999d1efb4376c29d7d2c13b0de1c6da52226&to=90e878f68804cb98e03e90b33233e607e6541358
Diffstat (limited to 'main/dhcpcd')
-rw-r--r--main/dhcpcd/APKBUILD15
-rw-r--r--main/dhcpcd/describe_dhcp6_error_code.patch77
2 files changed, 87 insertions, 5 deletions
diff --git a/main/dhcpcd/APKBUILD b/main/dhcpcd/APKBUILD
index 27e4406693..a0cb0e0e9d 100644
--- a/main/dhcpcd/APKBUILD
+++ b/main/dhcpcd/APKBUILD
@@ -3,7 +3,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=dhcpcd
pkgver=6.9.3
-pkgrel=1
+pkgrel=2
pkgdesc="RFC2131 compliant DHCP client"
url="http://roy.marples.name/projects/dhcpcd/"
arch="all"
@@ -15,7 +15,8 @@ install=""
subpackages="$pkgname-doc"
source="http://roy.marples.name/downloads/dhcpcd/$pkgname-$pkgver.tar.xz
busybox-logger.patch
- dhcpcd.initd"
+ dhcpcd.initd
+ describe_dhcp6_error_code.patch"
prepare() {
cd "$srcdir/$pkgname-$pkgver"
@@ -24,6 +25,7 @@ prepare() {
*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
esac
done
+
}
build() {
@@ -47,10 +49,13 @@ package() {
md5sums="8357d023c4687d27bc6ea7964236b2a6 dhcpcd-6.9.3.tar.xz
231d2b03e7e93fa6cc7406889e9945e3 busybox-logger.patch
-5cd5809d11b77b30f21df8418729d70b dhcpcd.initd"
+5cd5809d11b77b30f21df8418729d70b dhcpcd.initd
+a748946c8d88610e696ba2706cffca6d describe_dhcp6_error_code.patch"
sha256sums="6089471ed695fa62ac8351466b96b4b6365fd14ec455a120a6524663808eae53 dhcpcd-6.9.3.tar.xz
aec6c5d7a41551ca7cd3849a53621692ee0a1a6d259892beaf448eb1f2d4af01 busybox-logger.patch
-6bb9b8b0075e45e63e898ed043f3c5951dc3e95c1fa62d22cc6e0616c792ecd1 dhcpcd.initd"
+6bb9b8b0075e45e63e898ed043f3c5951dc3e95c1fa62d22cc6e0616c792ecd1 dhcpcd.initd
+53b089720c73f1565e04e36be2360f91036664b0d0a4ddb702219b4df3e88bb2 describe_dhcp6_error_code.patch"
sha512sums="0a895f17fa093ac758224bfddad003ee25f81fe96331b1952264c3623018e00048603c9a3c5ba385a93441e987b1ce4cd02ec1f42e1caca2e646a6ac4781c3d9 dhcpcd-6.9.3.tar.xz
83dc7bfd36b6b416c931775bb35a0d2951ed04c421195c45bfed80a11a7adbed7c80ade1c1246847c2fb1bf15a7b6e83100f16605ee84f750440d7bc9f7f5ef3 busybox-logger.patch
-6d3220155f2d9ed3e3a00afd378eeb70d435e19804201f8bb35498f1f7f3dfdaeaa2f4a01a18f5e96b457d9c173bc6a206b3e67ebf6d95da7e7b350dcd153fde dhcpcd.initd"
+6d3220155f2d9ed3e3a00afd378eeb70d435e19804201f8bb35498f1f7f3dfdaeaa2f4a01a18f5e96b457d9c173bc6a206b3e67ebf6d95da7e7b350dcd153fde dhcpcd.initd
+9f108e9df6a673e618abe55d70769a43a59d97c172d4721527ced6bd549cf61995e559037f8ec05657cdf76c2dfe62ff4d050d46783cdf770a4e91831f53e50a describe_dhcp6_error_code.patch"
diff --git a/main/dhcpcd/describe_dhcp6_error_code.patch b/main/dhcpcd/describe_dhcp6_error_code.patch
new file mode 100644
index 0000000000..cd72206c1a
--- /dev/null
+++ b/main/dhcpcd/describe_dhcp6_error_code.patch
@@ -0,0 +1,77 @@
+--- ./dhcp6.c
++++ ./dhcp6.c
+@@ -111,11 +111,12 @@
+ "Success",
+ "Unspecified Failure",
+ "No Addresses Available",
+ "No Binding",
+ "Not On Link",
+- "Use Multicast"
++ "Use Multicast",
++ "No Prefix Available"
+ };
+
+ struct dhcp6_ia_addr {
+ struct in6_addr addr;
+ uint32_t pltime;
+@@ -1660,11 +1661,12 @@
+ dhcp6_checkstatusok(const struct interface *ifp,
+ const struct dhcp6_message *m, const uint8_t *p, size_t len)
+ {
+ const struct dhcp6_option *o;
+ uint16_t code;
+- char *status;
++ char buf[32], *sbuf;
++ const char *status;
+
+ if (p)
+ o = dhcp6_findoption(D6_OPTION_STATUS_CODE, p, len);
+ else
+ o = dhcp6_getmoption(D6_OPTION_STATUS_CODE, m, len);
+@@ -1686,28 +1688,29 @@
+ return 1;
+
+ len -= sizeof(code);
+
+ if (len == 0) {
+- if (code < sizeof(dhcp6_statuses) / sizeof(char *)) {
+- p = (const uint8_t *)dhcp6_statuses[code];
+- len = strlen((const char *)p);
+- } else
+- p = NULL;
+- } else
+- p += sizeof(code);
++ sbuf = NULL;
++ if (code < sizeof(dhcp6_statuses) / sizeof(char *))
++ status = dhcp6_statuses[code];
++ else {
++ snprintf(buf, sizeof(buf), "Unknown Status (%d)", code);
++ status = buf;
++ }
++ } else {
++ if ((sbuf = malloc(len + 1)) == NULL) {
++ logger(ifp->ctx, LOG_ERR, "%s: %m", __func__);
++ return -1;
++ }
++ memcpy(sbuf, p + sizeof(code), len);
++ sbuf[len] = '\0';
++ status = sbuf;
++ }
+
+- status = malloc(len + 1);
+- if (status == NULL) {
+- logger(ifp->ctx, LOG_ERR, "%s: %m", __func__);
+- return -1;
+- }
+- if (p)
+- memcpy(status, p, len);
+- status[len] = '\0';
+ logger(ifp->ctx, LOG_ERR, "%s: DHCPv6 REPLY: %s", ifp->name, status);
+- free(status);
++ free(sbuf);
+ return -1;
+ }
+
+ const struct ipv6_addr *
+ dhcp6_iffindaddr(const struct interface *ifp, const struct in6_addr *addr,
+