diff options
author | sillysausage <sillysausage@privatedemail.net> | 2015-11-14 00:39:18 +1030 |
---|---|---|
committer | Carlo Landmeter <clandmeter@gmail.com> | 2015-11-13 15:11:26 +0100 |
commit | ddea03d38e4b8183bb700385e4e5e4c9c35e13ca (patch) | |
tree | 8dd8c5859e94026d6944eb48d6a888fc3c9d2bf0 /main/dhcpcd | |
parent | 92f3b13a04c286663d239641284cfaf86bf5f3d8 (diff) | |
download | aports-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/APKBUILD | 15 | ||||
-rw-r--r-- | main/dhcpcd/describe_dhcp6_error_code.patch | 77 |
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, + |