~alpine/aports

This thread contains a patchset. You're looking at the original emails, but you may wish to use the patch review UI. Review patch

[alpine-aports] [PATCH] dhcpcd - Describe dhcp6 error code if no text present

Details
Message ID
<1447423758-7701-1-git-send-email-sillysausage@privatedemail.net>
Sender timestamp
1447423758
DKIM signature
missing
Download raw message
Patch: +87 -5
Patch from upstream, will be included in dhcpcd-6.9.4 when released

http://roy.marples.name/projects/dhcpcd/vpatch?from=d8f8999d1efb4376c29d7d2c13b0de1c6da52226&to=90e878f68804cb98e03e90b33233e607e6541358
---
 main/dhcpcd/APKBUILD                        | 15 ++++--
 main/dhcpcd/describe_dhcp6_error_code.patch | 77 +++++++++++++++++++++++++++++
 2 files changed, 87 insertions(+), 5 deletions(-)
 create mode 100644 main/dhcpcd/describe_dhcp6_error_code.patch

diff --git a/main/dhcpcd/APKBUILD b/main/dhcpcd/APKBUILD
index 27e4406..a0cb0e0 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 0000000..cd72206
--- /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,

-- 
2.4.1



---
Unsubscribe:  alpine-aports+unsubscribe@lists.alpinelinux.org
Help:         alpine-aports+help@lists.alpinelinux.org
---
Reply to thread Export thread (mbox)