diff --git a/net/iputils/Config_ping.in b/net/iputils/Config_ping.in deleted file mode 100644 index 8b360914..00000000 --- a/net/iputils/Config_ping.in +++ /dev/null @@ -1,17 +0,0 @@ -if PACKAGE_iputils-ping - -config PING_LEGACY_SYMLINKS - bool - default n - prompt "Install legacy ping4 and ping6 symlinks" - help - Iputils previously generated separate "ping" and "ping6" - binaries for supporting IPv4 and IPv6 communication, - respectively. Recent versions of iputils have merged - support for both address families into a single program. - Select this option to install "ping6" and "ping4" symlinks - to the unified binary to support compatibility with - existing tools that may still expect to find the old - names. - -endif diff --git a/net/iputils/Config_tracepath.in b/net/iputils/Config_tracepath.in deleted file mode 100644 index 51a78dd4..00000000 --- a/net/iputils/Config_tracepath.in +++ /dev/null @@ -1,16 +0,0 @@ -if PACKAGE_iputils-tracepath - -config TRACEPATH_LEGACY_SYMLINKS - bool - default n - prompt "Install legacy tracepath4 and tracepath6 symlinks" - help - Iputils previously generated separate "tracepath" and - "tracepath6" binaries for supporting IPv4 and IPv6 - communication, respectively. Recent versions of iputils - have merged support for both address families into a - single tracepath program. Select this option to install - "tracepath6" and "tracepath4" symlinks to the unified - binary to support compatibility with existing tools that - may still expect to find the old names. -endif diff --git a/net/iputils/Makefile b/net/iputils/Makefile index 4ca98b39..03ad7d20 100644 --- a/net/iputils/Makefile +++ b/net/iputils/Makefile @@ -1,150 +1,182 @@ # # Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2019 Noah Meyerhans -# # # 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:=20190709 +PKG_VERSION:=20101006 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/iputils/iputils/tar.gz/s$(PKG_VERSION)? -PKG_HASH:=a15720dd741d7538dd2645f9f516d193636ae4300ff7dbc8bfca757bf166490a +PKG_SOURCE:=$(PKG_NAME)-s$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://www.skbuff.net/iputils +PKG_HASH:=fd3af46c80ebb99607c2ca1f2a3608b6fe828e25bbec6e54f2afd25f6ddb6ee7 -PKG_MAINTAINER:=Noah Meyerhans -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_CPE_ID:=cpe:/a:iputils_project:iputils +PKG_MAINTAINER:=Jo-Philipp Wich +PKG_LICENSE:=GPL-2.0+ +PKG_CPE_ID:=cpe:/a:skbuff:iputils + +PKG_BUILD_DEPENDS:=sysfsutils +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-s$(PKG_VERSION) -PKG_BUILD_DIR:=$(BUILD_DIR)/iputils-s$(PKG_VERSION) -PKG_BUILD_DEPENDS:=meson/host include $(INCLUDE_DIR)/package.mk -include ../../devel/meson/meson.mk -MESON_ARGS:=-DBUILD_MANS=false \ - -DBUILD_HTML_MANS=false \ - -DUSE_CAP=false \ - -DUSE_CRYPTO=kernel \ - -DUSE_IDN=false \ - -DUSE_GETTEXT=false \ - -DNO_SETCAP_OR_SUID=true \ - -DBUILD_PING=true \ - -DBUILD_ARPING=true \ - -DBUILD_CLOCKDIFF=true \ - -DBUILD_TRACEPATH=true \ - -DBUILD_TFTPD=true define Package/iputils/Default SECTION:=net CATEGORY:=Network - TITLE:=iputils - URL:=https://github.com/iputils/iputils + URL:=http://www.skbuff.net/iputils endef -### ping - -define Package/iputils-ping - $(call Package/iputils/Default) - TITLE:=iputils-ping - DEPENDS:=+kmod-crypto-md5 -endef - -define Package/iputils-ping/config - source "$(SOURCE)/Config_ping.in" -endef - -define Package/iputils-ping/description - Send ICMP_ECHOREQUEST packets to IP hosts and report on replies -endef - -define Package/iputils-ping/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_SUID) $(MESON_BUILD_DIR)/ping $(1)/usr/bin/ -ifdef CONFIG_PING_LEGACY_SYMLINKS - ln -s ping $(1)/usr/bin/ping4 - ln -s ping $(1)/usr/bin/ping6 -endif -endef - -### arping define Package/iputils-arping - $(call Package/iputils/Default) - TITLE:=iputils-arping +$(call Package/iputils/Default) + TITLE:=iputils - arping + DEPENDS+= +libsysfs endef define Package/iputils-arping/description - Send ARP REQUEST packets to a neighbor host + Program arping from iputils. + Sends ARP REQUEST to a neighbour host. endef -define Package/iputils-arping/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(MESON_BUILD_DIR)/arping $(1)/usr/bin/ -endef - -### clockdiff define Package/iputils-clockdiff - $(call Package/iputils/Default) - TITLE:=iputils-clockdiff +$(call Package/iputils/Default) + TITLE:=iputils - clockdiff endef define Package/iputils-clockdiff/description - Measure the clock difference between two hosts + 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 +USE_GLIBC:libopenssl +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 + +ifdef CONFIG_USE_MUSL + TARGET_CFLAGS += -D__UCLIBC__ +endif + +MAKE_FLAGS += \ + CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(TARGET_LDFLAGS)" \ + CONFIG_IPV6="$(CONFIG_IPV6)" \ + CONFIG_USE_UCLIBC="$(CONFIG_USE_UCLIBC)$(CONFIG_USE_MUSL)" \ + +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) $(MESON_BUILD_DIR)/clockdiff $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/clockdiff $(1)/usr/bin/ endef -### tracepath - -define Package/iputils-tracepath - $(call Package/iputils/Default) - TITLE:=iputils-tracepath +define Package/iputils-ping/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_SUID) $(PKG_BUILD_DIR)/ping $(1)/usr/bin/ endef -define Package/iputils-tracepath/description - trace network path to a host, discovering PMTU +define Package/iputils-ping6/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_SUID) $(PKG_BUILD_DIR)/ping6 $(1)/usr/bin/ endef -define Package/iputils-tracepath/config - source "$(SOURCE)/Config_tracepath.in" +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) $(MESON_BUILD_DIR)/tracepath $(1)/usr/bin/ -ifdef CONFIG_TRACEPATH_LEGACY_SYMLINKS - ln -s tracepath $(1)/usr/bin/tracepath4 - ln -s tracepath $(1)/usr/bin/tracepath6 -endif + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tracepath $(1)/usr/bin/ endef -### tftp - -define Package/iputils-tftpd - $(call Package/iputils/Default) - TITLE:=iputils-tftpd -endef - -define Package/iputils-tftpd/description - Trivial File Transfer Protocol server -endef - -define Package/iputils-tftpd/install +define Package/iputils-tracepath6/install $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(MESON_BUILD_DIR)/tftpd $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tracepath6 $(1)/usr/bin/ +endef + +define Package/iputils-traceroute6/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_SUID) $(PKG_BUILD_DIR)/traceroute6 $(1)/usr/bin/ endef -$(eval $(call BuildPackage,iputils-ping)) $(eval $(call BuildPackage,iputils-arping)) $(eval $(call BuildPackage,iputils-clockdiff)) -$(eval $(call BuildPackage,iputils-tracepath)) +$(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/net/iputils/patches/001-iputils.patch b/net/iputils/patches/001-iputils.patch new file mode 100644 index 00000000..e57db137 --- /dev/null +++ b/net/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/net/iputils/patches/002-fix-ipv6.patch b/net/iputils/patches/002-fix-ipv6.patch new file mode 100644 index 00000000..4411ca7e --- /dev/null +++ b/net/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/net/iputils/patches/003-fix-makefile.patch b/net/iputils/patches/003-fix-makefile.patch new file mode 100644 index 00000000..926c6855 --- /dev/null +++ b/net/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/net/iputils/patches/010-ping6_uclibc_resolv.patch b/net/iputils/patches/010-ping6_uclibc_resolv.patch new file mode 100644 index 00000000..69558034 --- /dev/null +++ b/net/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 + #include + #include ++#ifndef __UCLIBC__ + #include + + #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 + + /* 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 + + /* 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/net/iputils/patches/011-ping6_use_gnu_source.patch b/net/iputils/patches/011-ping6_use_gnu_source.patch new file mode 100644 index 00000000..dc61b8c2 --- /dev/null +++ b/net/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 diff --git a/net/iputils/patches/020-include_fixes.patch b/net/iputils/patches/020-include_fixes.patch new file mode 100644 index 00000000..e982dabc --- /dev/null +++ b/net/iputils/patches/020-include_fixes.patch @@ -0,0 +1,71 @@ +--- a/ping_common.h ++++ b/ping_common.h +@@ -2,6 +2,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -11,7 +12,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +@@ -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 + #include + #include +-#define TSPTYPES +-#include + #include + #include + #include +--- a/tracepath.c ++++ b/tracepath.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + #include + #include +--- 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; +