diff options
Diffstat (limited to 'package/network/utils/iputils')
8 files changed, 330 insertions, 101 deletions
diff --git a/package/network/utils/iputils/Makefile b/package/network/utils/iputils/Makefile index deab4bbbd1..b6799e68b5 100644 --- a/package/network/utils/iputils/Makefile +++ b/package/network/utils/iputils/Makefile @@ -13,7 +13,7 @@ PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-s$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=http://www.skbuff.net/iputils -PKG_HASH:=f813092f03d17294fd23544b129b95cdb87fe19f7970a51908a6b88509acad8a +PKG_HASH:=fd3af46c80ebb99607c2ca1f2a3608b6fe828e25bbec6e54f2afd25f6ddb6ee7 PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> PKG_LICENSE:=GPL-2.0+ @@ -68,7 +68,7 @@ endef define Package/iputils-ping6 $(call Package/iputils/Default) TITLE:=iputils - ping6 - DEPENDS+= @IPV6 +libopenssl + DEPENDS+= @IPV6 +USE_GLIBC:libopenssl endef define Package/iputils-ping6/description 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-include.patch b/package/network/utils/iputils/patches/010-include.patch deleted file mode 100644 index 0b254f19f7..0000000000 --- a/package/network/utils/iputils/patches/010-include.patch +++ /dev/null @@ -1,99 +0,0 @@ -Index: iputils-s20101006/tracepath.c -=================================================================== ---- iputils-s20101006.orig/tracepath.c -+++ iputils-s20101006/tracepath.c -@@ -14,13 +14,13 @@ - #include <unistd.h> - #include <sys/socket.h> - #include <linux/types.h> -+#include <sys/time.h> - #include <linux/errqueue.h> - #include <errno.h> - #include <string.h> - #include <netdb.h> - #include <netinet/in.h> - #include <resolv.h> --#include <sys/time.h> - #include <sys/uio.h> - #include <arpa/inet.h> - -Index: iputils-s20101006/ping_common.h -=================================================================== ---- iputils-s20101006.orig/ping_common.h -+++ iputils-s20101006/ping_common.h -@@ -7,11 +7,11 @@ - #include <linux/sockios.h> - #include <sys/file.h> - #include <sys/time.h> --#include <sys/signal.h> -+#include <signal.h> - #include <sys/ioctl.h> - #include <net/if.h> - #include <sys/uio.h> --#include <sys/poll.h> -+#include <poll.h> - #include <ctype.h> - #include <errno.h> - #include <string.h> -@@ -20,7 +20,9 @@ - #include <netinet/in.h> - #include <arpa/inet.h> - #include <linux/types.h> -+#include <sys/types.h> - #include <linux/errqueue.h> -+#include <asm/param.h> - - #include "SNAPSHOT.h" - -Index: iputils-s20101006/clockdiff.c -=================================================================== ---- iputils-s20101006.orig/clockdiff.c -+++ iputils-s20101006/clockdiff.c -@@ -14,7 +14,6 @@ - #include <netinet/ip.h> - #include <netinet/ip_icmp.h> - #define TSPTYPES --#include <protocols/timed.h> - #include <fcntl.h> - #include <netdb.h> - #include <arpa/inet.h> -Index: iputils-s20101006/Makefile -=================================================================== ---- iputils-s20101006.orig/Makefile -+++ iputils-s20101006/Makefile -@@ -16,7 +16,7 @@ CC=gcc - CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g - CFLAGS=$(CCOPT) $(GLIBCFIX) $(DEFINES) - --IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd -+IPV4_TARGETS=tracepath ping clockdiff arping tftpd - IPV6_TARGETS=tracepath6 traceroute6 ping6 - TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS) - -@@ -27,9 +27,11 @@ 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 -+ $(CC) $(CFLAGS) -o $@ ping6.o ping_common.o -lresolv -lcrypto - ping.o ping6.o ping_common.o: ping_common.h - tftpd.o tftpsubs.o: tftp.h - -Index: iputils-s20101006/arping.c -=================================================================== ---- iputils-s20101006.orig/arping.c -+++ iputils-s20101006/arping.c -@@ -15,7 +15,7 @@ - #include <linux/sockios.h> - #include <sys/file.h> - #include <sys/time.h> --#include <sys/signal.h> -+#include <signal.h> - #include <sys/ioctl.h> - #include <linux/if.h> - #include <linux/if_packet.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> diff --git a/package/network/utils/iputils/patches/020-include_fixes.patch b/package/network/utils/iputils/patches/020-include_fixes.patch new file mode 100644 index 0000000000..e982dabc37 --- /dev/null +++ b/package/network/utils/iputils/patches/020-include_fixes.patch @@ -0,0 +1,71 @@ +--- a/ping_common.h ++++ b/ping_common.h +@@ -2,6 +2,7 @@ + #include <stdlib.h> + #include <unistd.h> + #include <time.h> ++#include <sys/types.h> + #include <sys/param.h> + #include <sys/socket.h> + #include <linux/sockios.h> +@@ -11,7 +12,7 @@ + #include <sys/ioctl.h> + #include <net/if.h> + #include <sys/uio.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <ctype.h> + #include <errno.h> + #include <string.h> +@@ -24,6 +25,10 @@ + + #include "SNAPSHOT.h" + ++#ifndef HZ ++#define HZ 100 ++#endif ++ + #define DEFDATALEN (64 - 8) /* default data length */ + + #define MAXWAIT 10 /* max seconds to wait for response */ +--- a/clockdiff.c ++++ b/clockdiff.c +@@ -13,8 +13,6 @@ + #include <netinet/in.h> + #include <netinet/ip.h> + #include <netinet/ip_icmp.h> +-#define TSPTYPES +-#include <protocols/timed.h> + #include <fcntl.h> + #include <netdb.h> + #include <arpa/inet.h> +--- a/tracepath.c ++++ b/tracepath.c +@@ -13,6 +13,7 @@ + #include <stdlib.h> + #include <unistd.h> + #include <sys/socket.h> ++#include <sys/time.h> + #include <linux/types.h> + #include <linux/errqueue.h> + #include <errno.h> +--- a/ping.c ++++ b/ping.c +@@ -661,8 +661,15 @@ int send_probe() + + do { + static struct iovec iov = {outpack, 0}; +- static struct msghdr m = { &whereto, sizeof(whereto), +- &iov, 1, &cmsg, 0, 0 }; ++ static struct msghdr m = { ++ .msg_name = &whereto, ++ .msg_namelen = sizeof(whereto), ++ .msg_iov = &iov, ++ .msg_iovlen = 1, ++ .msg_control = &cmsg, ++ .msg_controllen = 0, ++ .msg_flags = 0 ++ }; + m.msg_controllen = cmsg_len; + iov.iov_len = cc; + |