From 936c1b9424ec53f450a3b62ac2d8a9155d45ae88 Mon Sep 17 00:00:00 2001
From: Jo-Philipp Wich <jow@openwrt.org>
Date: Wed, 10 Oct 2012 13:22:18 +0000
Subject: [PATCH] iputils: move to trunk and add myself as maintainer

SVN-Revision: 33704
---
 package/network/utils/iputils/Makefile        | 180 ++++++++++++++++
 .../utils/iputils/patches/001-iputils.patch   |  14 ++
 .../utils/iputils/patches/002-fix-ipv6.patch  |  14 ++
 .../iputils/patches/003-fix-makefile.patch    |  18 ++
 .../patches/010-ping6_uclibc_resolv.patch     | 200 ++++++++++++++++++
 .../patches/011-ping6_use_gnu_source.patch    |  11 +
 6 files changed, 437 insertions(+)
 create mode 100644 package/network/utils/iputils/Makefile
 create mode 100644 package/network/utils/iputils/patches/001-iputils.patch
 create mode 100644 package/network/utils/iputils/patches/002-fix-ipv6.patch
 create mode 100644 package/network/utils/iputils/patches/003-fix-makefile.patch
 create mode 100644 package/network/utils/iputils/patches/010-ping6_uclibc_resolv.patch
 create mode 100644 package/network/utils/iputils/patches/011-ping6_use_gnu_source.patch

diff --git a/package/network/utils/iputils/Makefile b/package/network/utils/iputils/Makefile
new file mode 100644
index 0000000000..ff7505b607
--- /dev/null
+++ b/package/network/utils/iputils/Makefile
@@ -0,0 +1,180 @@
+# 
+# Copyright (C) 2006-2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=iputils
+PKG_VERSION:=20101006
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-s$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=http://www.skbuff.net/iputils
+PKG_MD5SUM:=a36c25e9ec17e48be514dc0485e7376c
+
+PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
+
+PKG_BUILD_DEPENDS:=sysfsutils
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-s$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+
+define Package/iputils/Default
+  SECTION:=net
+  CATEGORY:=Network
+  URL:=http://www.skbuff.net/iputils
+endef
+
+
+define Package/iputils-arping
+$(call Package/iputils/Default)
+  TITLE:=iputils - arping
+  DEPENDS+= +libsysfs
+endef
+
+define Package/iputils-arping/description
+  Program arping from iputils.
+  Sends ARP REQUEST to a neighbour host.
+endef
+
+
+define Package/iputils-clockdiff
+$(call Package/iputils/Default)
+  TITLE:=iputils - clockdiff
+endef
+
+define Package/iputils-clockdiff/description
+  Program clockdiff from iputils.
+  Measures clock difference between hosts.
+endef
+
+
+define Package/iputils-ping
+$(call Package/iputils/Default)
+  TITLE:=iputils - ping
+endef
+
+define Package/iputils-ping/description
+  Program ping from iputils.
+  Sends ICMP ECHO_REQUEST to network hosts (IPv4).
+endef
+
+
+define Package/iputils-ping6
+$(call Package/iputils/Default)
+  TITLE:=iputils - ping6
+  DEPENDS+= @IPV6
+endef
+
+define Package/iputils-ping6/description
+  Program ping6 from iputils.
+  Sends ICMP ECHO_REQUEST to network hosts (IPv6).
+endef
+
+
+define Package/iputils-tftpd
+$(call Package/iputils/Default)
+  TITLE:=iputils - tftpd
+endef
+
+define Package/iputils-tftpd/description
+  Program tftpd from iputils
+  Trivial File Transfer Protocol server.
+endef
+
+
+define Package/iputils-tracepath
+$(call Package/iputils/Default)
+  TITLE:=iputils - tracepath
+endef
+
+define Package/iputils-tracepath/description
+  Program tracepath from iputils.
+  Traces path to a network host discovering MTU along this path (IPv4).
+endef
+
+
+define Package/iputils-tracepath6
+$(call Package/iputils/Default)
+  TITLE:=iputils - tracepath6
+  DEPENDS+= @IPV6
+endef
+
+define Package/iputils-tracepath6/description
+  Program tracepath6 from iputils.
+  Traces path to a network host discovering MTU along this path (IPv6).
+endef
+
+
+define Package/iputils-traceroute6
+$(call Package/iputils/Default)
+  TITLE:=iputils - traceroute6
+  DEPENDS+= @IPV6
+endef
+
+define Package/iputils-traceroute6/description
+  Program traceroute6 from iputils.
+  Traces path to a network host (IPv6).
+endef
+
+ifeq ($(BOARD),brcm47xx)
+  TARGET_CFLAGS += -O2 
+endif
+
+MAKE_FLAGS += \
+	CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_LDFLAGS)" \
+	CONFIG_IPV6="$(CONFIG_IPV6)" \
+	CONFIG_USE_UCLIBC="$(CONFIG_USE_UCLIBC)" \
+
+define Package/iputils-arping/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/arping $(1)/usr/bin/
+endef
+
+define Package/iputils-clockdiff/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/clockdiff $(1)/usr/bin/
+endef
+
+define Package/iputils-ping/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/ping $(1)/usr/bin/
+endef
+
+define Package/iputils-ping6/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/ping6 $(1)/usr/bin/
+endef
+
+define Package/iputils-tftpd/install
+	$(INSTALL_DIR) $(1)/usr/sbin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/tftpd $(1)/usr/sbin/
+endef
+
+define Package/iputils-tracepath/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/tracepath $(1)/usr/bin/
+endef
+
+define Package/iputils-tracepath6/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/tracepath6 $(1)/usr/bin/
+endef
+
+define Package/iputils-traceroute6/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/traceroute6 $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,iputils-arping))
+$(eval $(call BuildPackage,iputils-clockdiff))
+$(eval $(call BuildPackage,iputils-ping))
+$(eval $(call BuildPackage,iputils-tftpd))
+$(eval $(call BuildPackage,iputils-tracepath))
+$(eval $(call BuildPackage,iputils-ping6))
+$(eval $(call BuildPackage,iputils-tracepath6))
+$(eval $(call BuildPackage,iputils-traceroute6))
diff --git a/package/network/utils/iputils/patches/001-iputils.patch b/package/network/utils/iputils/patches/001-iputils.patch
new file mode 100644
index 0000000000..e57db1379e
--- /dev/null
+++ b/package/network/utils/iputils/patches/001-iputils.patch
@@ -0,0 +1,14 @@
+diff -ur a/Makefile b/Makefile
+--- a/Makefile	2002-09-20 18:23:55.000000000 +0000
++++ b/Makefile	2007-05-17 13:59:55.000000000 +0000
+@@ -16,8 +16,8 @@
+ CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
+ CFLAGS=$(CCOPT) $(GLIBCFIX) $(DEFINES) 
+ 
+-IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
+-IPV6_TARGETS=tracepath6 traceroute6 ping6
++IPV4_TARGETS=tracepath ping clockdiff arping tftpd
++IPV6_TARGETS=tracepath6 traceroute6 ping6
+ TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS)
+ 
+ LASTTAG:=`git describe HEAD | sed -e 's/-.*//'`
diff --git a/package/network/utils/iputils/patches/002-fix-ipv6.patch b/package/network/utils/iputils/patches/002-fix-ipv6.patch
new file mode 100644
index 0000000000..4411ca7ef3
--- /dev/null
+++ b/package/network/utils/iputils/patches/002-fix-ipv6.patch
@@ -0,0 +1,14 @@
+--- a/Makefile
++++ b/Makefile
+@@ -18,7 +18,10 @@ CFLAGS=$(CCOPT) $(GLIBCFIX) $(DEFINES)
+ 
+ IPV4_TARGETS=tracepath ping clockdiff arping tftpd
+ IPV6_TARGETS=tracepath6 traceroute6 ping6
+-TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS)
++TARGETS=$(IPV4_TARGETS)
++ifeq ($(CONFIG_IPV6),y)
++	TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS)
++endif
+ 
+ LASTTAG:=`git describe HEAD | sed -e 's/-.*//'`
+ TAG:=`date +s%Y%m%d`
diff --git a/package/network/utils/iputils/patches/003-fix-makefile.patch b/package/network/utils/iputils/patches/003-fix-makefile.patch
new file mode 100644
index 0000000000..926c685519
--- /dev/null
+++ b/package/network/utils/iputils/patches/003-fix-makefile.patch
@@ -0,0 +1,18 @@
+--- a/Makefile
++++ b/Makefile
+@@ -30,9 +30,13 @@ all: $(TARGETS)
+ 
+ 
+ tftpd: tftpd.o tftpsubs.o
+-arping: arping.o -lsysfs
++arping: arping.o 
++	$(CC) $(CFLAGS) -o $@ arping.o -lsysfs
+ ping: ping.o ping_common.o
+-ping6: ping6.o ping_common.o -lresolv -lcrypto
++ping6: ping6.o ping_common.o
++ifneq ($(CONFIG_USE_UCLIBC),y)
++	$(CC) $(CFLAGS) -o $@ ping6.o ping_common.o -lresolv -lcrypto
++endif
+ ping.o ping6.o ping_common.o: ping_common.h
+ tftpd.o tftpsubs.o: tftp.h
+ 
diff --git a/package/network/utils/iputils/patches/010-ping6_uclibc_resolv.patch b/package/network/utils/iputils/patches/010-ping6_uclibc_resolv.patch
new file mode 100644
index 0000000000..695580347b
--- /dev/null
+++ b/package/network/utils/iputils/patches/010-ping6_uclibc_resolv.patch
@@ -0,0 +1,200 @@
+diff --git a/ping6.c b/ping6.c
+index c5ff881..ef2243f 100644
+--- a/ping6.c
++++ b/ping6.c
+@@ -71,9 +71,11 @@ char copyright[] =
+ #include <linux/filter.h>
+ #include <netinet/ip6.h>
+ #include <netinet/icmp6.h>
++#ifndef __UCLIBC__
+ #include <resolv.h>
+ 
+ #include "ping6_niquery.h"
++#endif /* __UCLIBC__ */
+ 
+ #ifndef SOL_IPV6
+ #define SOL_IPV6 IPPROTO_IPV6
+@@ -154,6 +156,7 @@ int pmtudisc=-1;
+ 
+ static int icmp_sock;
+ 
++#ifndef __UCLIBC__
+ #include <openssl/md5.h>
+ 
+ /* Node Information query */
+@@ -165,6 +168,7 @@ int ni_subject_type = 0;
+ char *ni_group;
+ 
+ __u8 ni_nonce[8];
++#endif /* __UCLIBC__ */
+ 
+ static struct in6_addr in6_anyaddr;
+ static __inline__ int ipv6_addr_any(struct in6_addr *addr)
+@@ -223,6 +227,7 @@ unsigned int if_name2index(const char *ifname)
+ 	return i;
+ }
+ 
++#ifndef __UCLIBC__
+ struct niquery_option {
+ 	char *name;
+ 	int namelen;
+@@ -512,6 +517,7 @@ char *ni_groupaddr(const char *name)
+ 		strcat(nigroup_buf, q);
+ 	return nigroup_buf;
+ }
++#endif /* __UCLIBC__ */
+ 
+ int main(int argc, char *argv[])
+ {
+@@ -595,12 +601,14 @@ int main(int argc, char *argv[])
+ 		case 'V':
+ 			printf("ping6 utility, iputils-ss%s\n", SNAPSHOT);
+ 			exit(0);
++#ifndef __UCLIBC__
+ 		case 'N':
+ 			if (niquery_option_handler(optarg) < 0) {
+ 				usage();
+ 				break;
+ 			}
+ 			break;
++#endif /* __UCLIBC__ */
+ 		COMMON_OPTIONS
+ 			common_options(ch);
+ 			break;
+@@ -663,6 +671,7 @@ int main(int argc, char *argv[])
+ 		argc--;
+ 	}
+ 
++#ifndef __UCLIBC__
+ 	if (ni_query >= 0) {
+ 		int i;
+ 		for (i = 0; i < 8; i++)
+@@ -674,15 +683,20 @@ int main(int argc, char *argv[])
+ 			ni_subject_type = NI_SUBJ_IPV6;
+ 		}
+ 	}
++#endif /* __UCLIBC__ */
+ 
+ 	if (argc > 1)
+ 		usage();
+ 	else if (argc == 1) {
+ 		target = *argv;
+ 	} else {
++#ifndef __UCLIBC__
+ 		if (ni_query < 0 && ni_subject_type != NI_SUBJ_NAME)
++#endif /* __UCLIBC__ */
+ 			usage();
++#ifndef __UCLIBC__
+ 		target = ni_group;
++#endif /* __UCLIBC__ */
+ 	}
+ 
+ 	memset(&hints, 0, sizeof(hints));
+@@ -817,7 +831,11 @@ int main(int argc, char *argv[])
+ 		exit(2);
+ 	}
+ 
++#ifndef __UCLIBC__
+ 	if (datalen >= sizeof(struct timeval) && (ni_query < 0)) {
++#else
++	if (datalen >= sizeof(struct timeval)) {
++#endif /* __UCLIBC__ */
+ 		/* can we time transfer */
+ 		timing = 1;
+ 	}
+@@ -866,9 +884,11 @@ int main(int argc, char *argv[])
+ 		ICMP6_FILTER_SETPASS(ICMP6_PARAM_PROB, &filter);
+ 	}
+ 
++#ifndef __UCLIBC__
+ 	if (ni_query >= 0)
+ 		ICMP6_FILTER_SETPASS(ICMPV6_NI_REPLY, &filter);
+ 	else
++#endif /* __UCLIBC__ */
+ 		ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY, &filter);
+ 
+ 	err = setsockopt(icmp_sock, IPPROTO_ICMPV6, ICMP6_FILTER, &filter,
+@@ -1100,6 +1120,7 @@ int build_echo(__u8 *_icmph)
+ 	return cc;
+ }
+ 
++#ifndef __UCLIBC__
+ int build_niquery(__u8 *_nih)
+ {
+ 	struct ni_hdr *nih;
+@@ -1125,6 +1146,7 @@ int build_niquery(__u8 *_nih)
+ 
+ 	return cc;
+ }
++#endif /* __UCLIBC__ */
+ 
+ int send_probe(void)
+ {
+@@ -1132,9 +1154,11 @@ int send_probe(void)
+ 
+ 	CLR((ntransmitted+1) % mx_dup_ck);
+ 
++#ifndef __UCLIBC__
+ 	if (ni_query >= 0)
+ 		len = build_niquery(outpack);
+ 	else
++#endif /* __UCLIBC__ */
+ 		len = build_echo(outpack);
+ 
+ 	if (cmsglen == 0) {
+@@ -1176,6 +1200,7 @@ static void putchar_safe(char c)
+ 		printf("\\%03o", c);
+ }
+ 
++#ifndef __UCLIBC__
+ void pr_niquery_reply_name(struct ni_hdr *nih, int len)
+ {
+ 	__u8 *h = (__u8 *)(nih + 1);
+@@ -1304,6 +1329,7 @@ void pr_niquery_reply(__u8 *_nih, int len)
+ 	}
+ 	putchar(';');
+ }
++#endif /* __UCLIBC__ */
+ 
+ /*
+  * parse_reply --
+@@ -1353,6 +1379,7 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv)
+ 				      hops, 0, tv, pr_addr(&from->sin6_addr),
+ 				      pr_echo_reply))
+ 			return 0;
++#ifndef __UCLIBC__
+ 	} else if (icmph->icmp6_type == ICMPV6_NI_REPLY) {
+ 		struct ni_hdr *nih = (struct ni_hdr *)icmph;
+ 		__u16 seq = ntohs(*(__u16 *)nih->ni_nonce);
+@@ -1363,6 +1390,7 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv)
+ 				      hops, 0, tv, pr_addr(&from->sin6_addr),
+ 				      pr_niquery_reply))
+ 			return 0;
++#endif /* __UCLIBC__ */
+ 	} else {
+ 		int nexthdr;
+ 		struct ip6_hdr *iph1 = (struct ip6_hdr*)(icmph+1);
+@@ -1557,7 +1585,9 @@ void usage(void)
+ "Usage: ping6 [-LUdfnqrvVaAD] [-c count] [-i interval] [-w deadline]\n"
+ "             [-p pattern] [-s packetsize] [-t ttl] [-I interface]\n"
+ "             [-M pmtudisc-hint] [-S sndbuf] [-F flowlabel] [-Q tclass]\n"
++#ifndef __UCLIBC__
+ "             [[-N nodeinfo-option] ...]\n"
++#endif /* __UCLIBC__ */
+ "             [hop1 ...] destination\n");
+ 	exit(2);
+ }
+diff --git a/ping6_niquery.h b/ping6_niquery.h
+index 61a5cfa..34c31f8 100644
+--- a/ping6_niquery.h
++++ b/ping6_niquery.h
+@@ -1,3 +1,4 @@
++#ifndef __UCLIBC__
+ #include <asm/byteorder.h>
+ 
+ /* Node Information Query */
+@@ -45,3 +46,4 @@ struct ni_hdr {
+ #define NI_IPV4ADDR_F_TRUNCATE		NI_IPV6ADDR_F_TRUNCATE
+ #define NI_IPV4ADDR_F_ALL		NI_IPV6ADDR_F_ALL
+ 
++#endif /* __UCLIBC__ */
diff --git a/package/network/utils/iputils/patches/011-ping6_use_gnu_source.patch b/package/network/utils/iputils/patches/011-ping6_use_gnu_source.patch
new file mode 100644
index 0000000000..dc61b8c22f
--- /dev/null
+++ b/package/network/utils/iputils/patches/011-ping6_use_gnu_source.patch
@@ -0,0 +1,11 @@
+--- a/ping6.c
++++ b/ping6.c
+@@ -66,6 +66,8 @@ char copyright[] =
+  *	More statistics could always be gathered.
+  *	This program has to run SUID to ROOT to access the ICMP socket.
+  */
++
++#define _GNU_SOURCE
+ #include "ping_common.h"
+ 
+ #include <linux/filter.h>
-- 
2.30.2