From 9df49bbe4859c8bfa1d202d8a962fdd07f574104 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Mon, 4 Apr 2005 21:05:07 +0000
Subject: [PATCH] fix ipv6 host name lookup from /etc/hosts

git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@559 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 toolchain/uClibc/Makefile                     |  2 +-
 .../uClibc/patches/inet6_hosts_resolve.patch  | 24 +++++++++++++++++++
 toolchain/uClibc/uclibc.mk                    |  1 +
 3 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 toolchain/uClibc/patches/inet6_hosts_resolve.patch

diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile
index 06d7487a4..4fa048c5c 100644
--- a/toolchain/uClibc/Makefile
+++ b/toolchain/uClibc/Makefile
@@ -7,4 +7,4 @@ prepare: uclibc-configured
 compile: $(UCLIBC_DIR)/lib/libc.a
 install: uclibc
 	$(STRIP) $(TARGET_DIR)/lib/*.so
-clean: uclibc-clean
+clean: uclibc-toolclean
diff --git a/toolchain/uClibc/patches/inet6_hosts_resolve.patch b/toolchain/uClibc/patches/inet6_hosts_resolve.patch
new file mode 100644
index 000000000..fd1aaa1d2
--- /dev/null
+++ b/toolchain/uClibc/patches/inet6_hosts_resolve.patch
@@ -0,0 +1,24 @@
+diff -urN uClibc-0.9.27.old/libc/inet/resolv.c uClibc-0.9.27/libc/inet/resolv.c
+--- uClibc-0.9.27.old/libc/inet/resolv.c	2005-01-12 08:59:21.000000000 +0100
++++ uClibc-0.9.27/libc/inet/resolv.c	2005-04-04 22:14:38.000000000 +0200
+@@ -2029,7 +2029,7 @@
+ 		int old_errno = errno;	/* Save the old errno and reset errno */
+ 		__set_errno(0);			/* to check for missing /etc/hosts. */
+ 
+-		if ((i=__get_hosts_byname_r(name, AF_INET, result_buf,
++		if ((i=__get_hosts_byname_r(name, AF_INET6, result_buf,
+ 									buf, buflen, result, h_errnop))==0)
+ 			return i;
+ 		switch (*h_errnop) {
+diff -urN uClibc-0.9.27.old/libc/inet/resolv.c uClibc-0.9.27/libc/inet/resolv.c
+--- uClibc-0.9.27.old/libc/inet/resolv.c	2005-04-04 22:16:54.000000000 +0200
++++ uClibc-0.9.27/libc/inet/resolv.c	2005-04-04 22:46:59.000000000 +0200
+@@ -1513,7 +1513,7 @@
+ 		} else {
+ 			DPRINTF("Error\n");
+ 			ret=TRY_AGAIN;
+-			break; /* bad ip address */
++			continue; /* bad ip address, ignore */
+         }
+         
+ 		if (action!=GETHOSTENT) {
diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk
index f7b6d2be6..01c1a00e4 100644
--- a/toolchain/uClibc/uclibc.mk
+++ b/toolchain/uClibc/uclibc.mk
@@ -38,6 +38,7 @@ $(DL_DIR)/$(UCLIBC_SOURCE):
 $(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE)
 	mkdir -p $(TOOL_BUILD_DIR)
 	bzcat $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
+	$(PATCH) $(UCLIBC_DIR) ./patches
 	touch $(UCLIBC_DIR)/.unpacked
 
 $(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked
-- 
2.20.1