From 13494b8f95b29baa07d287cc0d6cfe77fa129058 Mon Sep 17 00:00:00 2001 From: basebuilder_pel7x64builder0 Date: Thu, 16 Aug 2018 14:58:56 +0200 Subject: [PATCH] iputils package update Signed-off-by: basebuilder_pel7x64builder0 --- SOURCES/ifenslave.tar.gz | Bin 0 -> 42304 bytes SOURCES/iputils-20121221-caps.patch | 67 ++ SOURCES/iputils-arping-doc.patch | 24 + SOURCES/iputils-arping-network-down.patch | 21 + SOURCES/iputils-bind-I-interface.patch | 36 + SOURCES/iputils-fix-I-setsockopt.patch | 25 + SOURCES/iputils-fix-ping-t-multicast.patch | 29 + SOURCES/iputils-fix-ping6-return-value.patch | 23 + SOURCES/iputils-fix-pmtu.patch | 63 ++ .../iputils-fix-possible-double-free.patch | 20 + SOURCES/iputils-ifenslave.patch | 13 + SOURCES/iputils-oversized-packets.patch | 46 ++ SOURCES/iputils-ping-eacces.patch | 26 + SOURCES/iputils-ping-hang.patch | 48 ++ SOURCES/iputils-reorder-I-parsing.patch | 37 + SOURCES/iputils-rh-ping-ipv4-by-default.patch | 31 + SOURCES/iputils-rh.patch | 20 + SOURCES/ninfod.service | 10 + SOURCES/rdisc.initd | 87 +++ SOURCES/rdisc.service | 11 + SOURCES/rdisc.sysconfig | 1 + SPECS/iputils.spec | 720 ++++++++++++++++++ 22 files changed, 1358 insertions(+) create mode 100644 SOURCES/ifenslave.tar.gz create mode 100644 SOURCES/iputils-20121221-caps.patch create mode 100644 SOURCES/iputils-arping-doc.patch create mode 100644 SOURCES/iputils-arping-network-down.patch create mode 100644 SOURCES/iputils-bind-I-interface.patch create mode 100644 SOURCES/iputils-fix-I-setsockopt.patch create mode 100644 SOURCES/iputils-fix-ping-t-multicast.patch create mode 100644 SOURCES/iputils-fix-ping6-return-value.patch create mode 100644 SOURCES/iputils-fix-pmtu.patch create mode 100644 SOURCES/iputils-fix-possible-double-free.patch create mode 100644 SOURCES/iputils-ifenslave.patch create mode 100644 SOURCES/iputils-oversized-packets.patch create mode 100644 SOURCES/iputils-ping-eacces.patch create mode 100644 SOURCES/iputils-ping-hang.patch create mode 100644 SOURCES/iputils-reorder-I-parsing.patch create mode 100644 SOURCES/iputils-rh-ping-ipv4-by-default.patch create mode 100644 SOURCES/iputils-rh.patch create mode 100644 SOURCES/ninfod.service create mode 100644 SOURCES/rdisc.initd create mode 100644 SOURCES/rdisc.service create mode 100644 SOURCES/rdisc.sysconfig create mode 100644 SPECS/iputils.spec diff --git a/SOURCES/ifenslave.tar.gz b/SOURCES/ifenslave.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a15341a143194760b341547661bc950c2f36fdb GIT binary patch literal 42304 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ȸPx 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

ak>2a)71bOd{>JORZnse%7QZ7;Oy&8aIK_?{B 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 literal 0 HcmV?d00001 diff --git a/SOURCES/iputils-20121221-caps.patch b/SOURCES/iputils-20121221-caps.patch new file mode 100644 index 00000000..f46883b8 --- /dev/null +++ b/SOURCES/iputils-20121221-caps.patch @@ -0,0 +1,67 @@ +diff -rup iputils-s20121221/clockdiff.c iputils-s20121221-new/clockdiff.c +--- iputils-s20121221/clockdiff.c 2012-12-21 15:01:07.000000000 +0100 ++++ iputils-s20121221-new/clockdiff.c 2015-03-23 10:17:29.190895413 +0100 +@@ -21,6 +21,7 @@ + #include + #include + #ifdef CAPABILITIES ++#include + #include + #endif + +@@ -534,12 +535,51 @@ usage() { + + void drop_rights(void) { + #ifdef CAPABILITIES +- cap_t caps = cap_init(); +- if (cap_set_proc(caps)) { +- perror("clockdiff: cap_set_proc"); ++ cap_t cap_cur_p; ++ cap_t cap_p; ++ cap_value_t cap_raw = CAP_NET_RAW; ++ cap_flag_value_t cap_ok; ++ ++ cap_cur_p = cap_get_proc(); ++ if (!cap_cur_p) { ++ perror("ping: cap_get_proc"); + exit(-1); + } +- cap_free(caps); ++ ++ cap_p = cap_init(); ++ if (!cap_p) { ++ perror("ping: cap_init"); ++ exit(-1); ++ } ++ ++ cap_ok = CAP_CLEAR; ++ cap_get_flag(cap_cur_p, CAP_NET_RAW, CAP_PERMITTED, &cap_ok); ++ ++ if (cap_ok != CAP_CLEAR) ++ cap_set_flag(cap_p, CAP_PERMITTED, 1, &cap_raw, CAP_SET); ++ ++ if (cap_set_proc(cap_p) < 0) { ++ perror("ping: cap_set_proc"); ++ exit(-1); ++ } ++ ++ if (prctl(PR_SET_KEEPCAPS, 1) < 0) { ++ perror("ping: prctl"); ++ exit(-1); ++ } ++ ++ if (setuid(getuid()) < 0) { ++ perror("setuid"); ++ exit(-1); ++ } ++ ++ if (prctl(PR_SET_KEEPCAPS, 0) < 0) { ++ perror("ping: prctl"); ++ exit(-1); ++ } ++ ++ cap_free(cap_p); ++ cap_free(cap_cur_p); + #endif + if (setuid(getuid())) { + perror("clockdiff: setuid"); diff --git a/SOURCES/iputils-arping-doc.patch b/SOURCES/iputils-arping-doc.patch new file mode 100644 index 00000000..7e41a1f8 --- /dev/null +++ b/SOURCES/iputils-arping-doc.patch @@ -0,0 +1,24 @@ +The -I option is actually optional when a suitable device is found. + +--- iputils-s20160308/arping.c 2016-03-08 13:58:56.000000000 +0100 ++++ iputils-s20160308-new/arping.c 2016-09-05 12:59:22.746617891 +0200 +@@ -1086,7 +1086,7 @@ main(int argc, char **argv) + fprintf(stderr, "arping: Device %s not available.\n", device.name); + exit(2); + } +- fprintf(stderr, "arping: device (option -I) is required.\n"); ++ fprintf(stderr, "arping: Suitable device could not be determined. Please, use option -I.\n"); + usage(); + } + +--- iputils-s20160308/doc/arping.sgml 2016-03-08 13:58:56.000000000 +0100 ++++ iputils-s20160308-new/doc/arping.sgml 2016-09-05 12:58:03.425799308 +0200 +@@ -19,7 +19,7 @@ + -c + -w + -s +--I ++-I + + + diff --git a/SOURCES/iputils-arping-network-down.patch b/SOURCES/iputils-arping-network-down.patch new file mode 100644 index 00000000..7594e9b5 --- /dev/null +++ b/SOURCES/iputils-arping-network-down.patch @@ -0,0 +1,21 @@ +commit 66b793822d475bb40aa370c9ef7fc0499b22a5e2 +Author: Jan Synacek +Date: Thu Feb 23 12:59:46 2017 +0100 + + arping: exit if network disappears while running + + Originally reported at https://bugzilla.redhat.com/show_bug.cgi?id=1387542 + +diff --git a/arping.c b/arping.c +index 1a3f40b..dce8f7b 100644 +--- a/arping.c ++++ b/arping.c +@@ -1227,6 +1227,8 @@ main(int argc, char **argv) + if ((cc = recvfrom(s, packet, sizeof(packet), 0, + (struct sockaddr *)&from, &alen)) < 0) { + perror("arping: recvfrom"); ++ if (errno == ENETDOWN) ++ exit(2); + continue; + } + diff --git a/SOURCES/iputils-bind-I-interface.patch b/SOURCES/iputils-bind-I-interface.patch new file mode 100644 index 00000000..d35ce338 --- /dev/null +++ b/SOURCES/iputils-bind-I-interface.patch @@ -0,0 +1,36 @@ +commit fd79cc90c4af117e3fa41466151cdd289e460569 +Author: Jan Synacek +Date: Fri Sep 9 08:52:45 2016 +0200 + + ping: fix ping -6 -I + + ping passes the device variable to ping6_common.c, but it's not visible + there. + + Original patch by Xin Long . + +diff --git a/ping.c b/ping.c +index 34eb436..43acc2f 100644 +--- a/ping.c ++++ b/ping.c +@@ -106,7 +106,7 @@ static struct { + int cmsg_len; + + static struct sockaddr_in source = { .sin_family = AF_INET }; +-static char *device; ++char *device; + static int pmtudisc = -1; + + static void create_socket(socket_st *sock, int family, int socktype, int protocol, int requisite) +diff --git a/ping.h b/ping.h +index 6f5d64c..749f3ff 100644 +--- a/ping.h ++++ b/ping.h +@@ -167,6 +167,7 @@ extern volatile int exiting; + extern volatile int status_snapshot; + extern int confirm; + extern int confirm_flag; ++extern char *device; + + extern volatile int in_pr_addr; /* pr_addr() is executing */ + extern jmp_buf pr_addr_jmp; diff --git a/SOURCES/iputils-fix-I-setsockopt.patch b/SOURCES/iputils-fix-I-setsockopt.patch new file mode 100644 index 00000000..c2df236e --- /dev/null +++ b/SOURCES/iputils-fix-I-setsockopt.patch @@ -0,0 +1,25 @@ +Resolves: #1351540 + +--- a/ping.c ++++ b/ping.c +@@ -569,6 +569,7 @@ int ping4_run(int argc, char **argv, struct addrinfo *ai, socket_st *sock) + strncpy(ifr.ifr_name, device, IFNAMSIZ-1); + + enable_capability_raw(); ++ setsockopt(sock->fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1); + rc = setsockopt(probe_fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1); + disable_capability_raw(); + +--- a/ping6_common.c ++++ b/ping6_common.c +@@ -797,8 +797,10 @@ int ping6_run(int argc, char **argv, struct addrinfo *ai, struct socket_st *sock + enable_capability_raw(); + if ( + #ifdef IPV6_RECVPKTINFO ++ setsockopt(sock->fd, IPPROTO_IPV6, IPV6_PKTINFO, &ipi, sizeof ipi) == -1 && + setsockopt(probe_fd, IPPROTO_IPV6, IPV6_PKTINFO, &ipi, sizeof ipi) == -1 && + #endif ++ setsockopt(sock->fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1) == -1 && + setsockopt(probe_fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1) == -1) { + perror("setsockopt(SO_BINDTODEVICE)"); + exit(2); diff --git a/SOURCES/iputils-fix-ping-t-multicast.patch b/SOURCES/iputils-fix-ping-t-multicast.patch new file mode 100644 index 00000000..ca2fff4f --- /dev/null +++ b/SOURCES/iputils-fix-ping-t-multicast.patch @@ -0,0 +1,29 @@ +commit c5932dc918040504880258e777c9428331269291 +Author: Jan Synacek +Date: Wed Feb 22 10:29:33 2017 +0100 + + fix multicast setsockopt calls on big endian + + Originally reported at https://bugzilla.redhat.com/show_bug.cgi?id=1373333. + +diff --git a/ping.c b/ping.c +index 6f67d2d..45cca8d 100644 +--- a/ping.c ++++ b/ping.c +@@ -850,14 +850,14 @@ int ping4_run(int argc, char **argv, struct addrinfo *ai, socket_st *sock) + + if (options & F_NOLOOP) { + int loop = 0; +- if (setsockopt(sock->fd, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, 1) == -1) { ++ if (setsockopt(sock->fd, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof loop) == -1) { + perror ("ping: can't disable multicast loopback"); + exit(2); + } + } + if (options & F_TTL) { + int ittl = ttl; +- if (setsockopt(sock->fd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, 1) == -1) { ++ if (setsockopt(sock->fd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof ttl) == -1) { + perror ("ping: can't set multicast time-to-live"); + exit(2); + } diff --git a/SOURCES/iputils-fix-ping6-return-value.patch b/SOURCES/iputils-fix-ping6-return-value.patch new file mode 100644 index 00000000..5dbe7845 --- /dev/null +++ b/SOURCES/iputils-fix-ping6-return-value.patch @@ -0,0 +1,23 @@ +commit e25568f5e580d5631f533ae8474bcca40a011690 +Author: Jan Synacek +Date: Thu Aug 4 11:20:25 2016 +0200 + + correctly initialize first hop + + When the sin6_family was set to 0, the initial probe connect() + could have succeeded instead of failing. + + Fixes #57. + +diff --git a/ping6_common.c b/ping6_common.c +index fa01292..d6965dc 100644 +--- a/ping6_common.c ++++ b/ping6_common.c +@@ -805,6 +805,7 @@ int ping6_run(int argc, char **argv, struct addrinfo *ai, struct socket_st *sock + } + disable_capability_raw(); + } ++ firsthop.sin6_family = AF_INET6; + firsthop.sin6_port = htons(1025); + if (connect(probe_fd, (struct sockaddr*)&firsthop, sizeof(firsthop)) == -1) { + perror("connect"); diff --git a/SOURCES/iputils-fix-pmtu.patch b/SOURCES/iputils-fix-pmtu.patch new file mode 100644 index 00000000..1ebe5db6 --- /dev/null +++ b/SOURCES/iputils-fix-pmtu.patch @@ -0,0 +1,63 @@ +Resolves: #1444281 + +commit f3c189e26b3ba803b703d724e831e59390d0af13 +Author: Jan Synacek +Date: Mon May 15 12:07:59 2017 +0200 + + ping: fix pmtu discovery for ipv6 + + Fixes: #40 + +diff --git a/ping.c b/ping.c +index 45cca8d..fade2c9 100644 +--- a/ping.c ++++ b/ping.c +@@ -107,7 +107,7 @@ int cmsg_len; + + static struct sockaddr_in source = { .sin_family = AF_INET }; + char *device; +-static int pmtudisc = -1; ++int pmtudisc = -1; + + static void create_socket(socket_st *sock, int family, int socktype, int protocol, int requisite) + { +@@ -498,8 +498,14 @@ main(int argc, char **argv) + enable_capability_raw(); + if (hints.ai_family != AF_INET6) + create_socket(&sock4, AF_INET, hints.ai_socktype, IPPROTO_ICMP, hints.ai_family == AF_INET); +- if (hints.ai_family != AF_INET) ++ if (hints.ai_family != AF_INET) { + create_socket(&sock6, AF_INET6, hints.ai_socktype, IPPROTO_ICMPV6, sock4.fd == -1); ++ /* This may not be needed if both protocol versions always had the same value, but ++ * since I don't know that, it's better to be safe than sorry. */ ++ pmtudisc = pmtudisc == IP_PMTUDISC_DO ? IPV6_PMTUDISC_DO : ++ pmtudisc == IP_PMTUDISC_DONT ? IPV6_PMTUDISC_DONT : ++ pmtudisc == IP_PMTUDISC_WANT ? IPV6_PMTUDISC_WANT : pmtudisc; ++ } + disable_capability_raw(); + + /* Limit address family on single-protocol systems */ +diff --git a/ping.h b/ping.h +index 1253fa0..78e3853 100644 +--- a/ping.h ++++ b/ping.h +@@ -168,6 +168,7 @@ extern volatile int status_snapshot; + extern int confirm; + extern int confirm_flag; + extern char *device; ++extern int pmtudisc; + + extern volatile int in_pr_addr; /* pr_addr() is executing */ + extern jmp_buf pr_addr_jmp; +diff --git a/ping6_common.c b/ping6_common.c +index a5627ae..f5c81fd 100644 +--- a/ping6_common.c ++++ b/ping6_common.c +@@ -101,7 +101,6 @@ void ping6_usage(unsigned) __attribute((noreturn)); + + struct sockaddr_in6 source6 = { .sin6_family = AF_INET6 }; + char *device; +-int pmtudisc=-1; + + #if defined(USE_GCRYPT) || defined(USE_OPENSSL) || defined(USE_NETTLE) + #include "iputils_md5dig.h" diff --git a/SOURCES/iputils-fix-possible-double-free.patch b/SOURCES/iputils-fix-possible-double-free.patch new file mode 100644 index 00000000..11de2057 --- /dev/null +++ b/SOURCES/iputils-fix-possible-double-free.patch @@ -0,0 +1,20 @@ +commit df7d2d83345e2e547c2cb3a83d3a8a099339a742 +Author: Jan Synacek +Date: Fri Jan 6 13:28:04 2017 +0100 + + ping: prevent possible double free after cap_free() + + Original bugreport: https://bugzilla.redhat.com/show_bug.cgi?id=1410114 + +diff --git a/ping_common.c b/ping_common.c +index 0b32d6a..b0825e3 100644 +--- a/ping_common.c ++++ b/ping_common.c +@@ -159,6 +159,7 @@ int modify_capability(cap_value_t cap, cap_flag_value_t on) + } + + cap_free(cap_p); ++ cap_p = NULL; + + rc = 0; + out: diff --git a/SOURCES/iputils-ifenslave.patch b/SOURCES/iputils-ifenslave.patch new file mode 100644 index 00000000..662d69da --- /dev/null +++ b/SOURCES/iputils-ifenslave.patch @@ -0,0 +1,13 @@ +--- iputils/ifenslave.c.addr 2006-03-29 15:00:24.000000000 +0200 ++++ iputils/ifenslave.c 2006-03-29 15:02:01.000000000 +0200 +@@ -524,8 +524,8 @@ + if (ioctl(skfd, SIOCGIFADDR, &ifr) < 0) + return -1; + printf("The result of SIOCGIFADDR is %2.2x.%2.2x.%2.2x.%2.2x.\n", +- ifr.ifr_addr.sa_data[0], ifr.ifr_addr.sa_data[1], +- ifr.ifr_addr.sa_data[2], ifr.ifr_addr.sa_data[3]); ++ ifr.ifr_addr.sa_data[2], ifr.ifr_addr.sa_data[3], ++ ifr.ifr_addr.sa_data[4], ifr.ifr_addr.sa_data[5]); + + strcpy(ifr.ifr_name, ifname); + if (ioctl(skfd, SIOCGIFHWADDR, &ifr) < 0) diff --git a/SOURCES/iputils-oversized-packets.patch b/SOURCES/iputils-oversized-packets.patch new file mode 100644 index 00000000..464b8a04 --- /dev/null +++ b/SOURCES/iputils-oversized-packets.patch @@ -0,0 +1,46 @@ +From 61ed3913790901f2ad4973de60b373150fde01e0 Mon Sep 17 00:00:00 2001 +From: Jan Synacek +Date: Wed, 20 Apr 2016 09:51:12 +0200 +Subject: [PATCH] ping: do not allow oversized packets to root + +The code later fails anyways (as the original comment suggests), which +results in a weird recvmsg() loop that times out eventually. + +Reproducer: + +./ping -c 1 -s 65530 127.0.0.1 +--- + ping.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +diff --git a/ping.c b/ping.c +index f435fe2..ea37c4f 100644 +--- a/ping.c ++++ b/ping.c +@@ -80,8 +80,6 @@ ping_func_set_st ping4_func_set = { + #define NROUTES 9 /* number of record route slots */ + #define TOS_MAX 255 /* 8-bit TOS field */ + +-static const int max_ping4_packet = 0x10000; +- + static int ts_type; + static int nroute = 0; + static __u32 route[10]; +@@ -806,12 +804,8 @@ int ping4_run(int argc, char **argv, struct addrinfo *ai, socket_st *sock) + } + + if (datalen > 0xFFFF - 8 - optlen - 20) { +- if (uid || datalen > max_ping4_packet-8 || datalen > MAXPACKET-8) { +- fprintf(stderr, "Error: packet size %d is too large. Maximum is %d\n", datalen, 0xFFFF-8-20-optlen); +- exit(2); +- } +- /* Allow small oversize to root yet. It will cause EMSGSIZE. */ +- fprintf(stderr, "WARNING: packet size %d is too large. Maximum is %d\n", datalen, 0xFFFF-8-20-optlen); ++ fprintf(stderr, "Error: packet size %d is too large. Maximum is %d\n", datalen, 0xFFFF-8-20-optlen); ++ exit(2); + } + + if (datalen >= sizeof(struct timeval)) /* can we time transfer */ +-- +2.7.4 + diff --git a/SOURCES/iputils-ping-eacces.patch b/SOURCES/iputils-ping-eacces.patch new file mode 100644 index 00000000..5c1b0356 --- /dev/null +++ b/SOURCES/iputils-ping-eacces.patch @@ -0,0 +1,26 @@ +commit 6702a95f2ea1a6a5b7c94437a87c1be6d0677733 +Author: Jan Synacek +Date: Mon Sep 12 12:50:58 2016 +0200 + + ping: fix error message when getting EACCES from connect() + + According to man connect(2), EACCES can be set either when pinging a + broadcast address, or when a local firewall rule is in place. + + Easily reproduced by running "ip route add prohibit " and then + trying to ping the address. + +diff --git a/ping.c b/ping.c +index 34eb436..52b0f0e 100644 +--- a/ping.c ++++ b/ping.c +@@ -655,7 +655,8 @@ int ping4_run(int argc, char **argv, struct addrinfo *ai, socket_st *sock) + if (connect(probe_fd, (struct sockaddr*)&dst, sizeof(dst)) == -1) { + if (errno == EACCES) { + if (broadcast_pings == 0) { +- fprintf(stderr, "Do you want to ping broadcast? Then -b\n"); ++ fprintf(stderr, ++ "Do you want to ping broadcast? Then -b. If not, check your local firewall rules.\n"); + exit(2); + } + fprintf(stderr, "WARNING: pinging broadcast address\n"); diff --git a/SOURCES/iputils-ping-hang.patch b/SOURCES/iputils-ping-hang.patch new file mode 100644 index 00000000..dca82284 --- /dev/null +++ b/SOURCES/iputils-ping-hang.patch @@ -0,0 +1,48 @@ +commit 1c97ab2b9bf401d8c4db9f4f4a4e13e1002c2d64 +Author: Robert Schiele +Date: Mon Mar 14 08:59:56 2016 +0100 + + Revert "ping_common.c: fix message flood when EPERM is encountered in ping" + + This reverts commit a60ad56a18b660ea8158e6ce8d782fb0290329f8. + + The reason for this revert is that while the patch above fixed + https://bugzilla.redhat.com/show_bug.cgi?id=1061867 it had weird behavior + with other types of EPERM responses where it could end up in an endless + loop despite the fact that -c flag was specified. In addition to that the + mentioned bug is also fixed with + commit 8b75f100bbc84aa32a2c35b54c53f48071af6e95 + "ping: ICMP error replies while errno < 0 is a hard error" + by Jason A. Donenfeld + such that this one should no longer be needed anyway. + + Signed-off-by: Robert Schiele + +diff --git a/ping_common.c b/ping_common.c +index fe7d6e3..7ea1fb3 100644 +--- a/ping_common.c ++++ b/ping_common.c +@@ -373,11 +373,10 @@ resend: + if (i > 0) { + /* Apparently, it is some fatal bug. */ + abort(); +- } else if (errno == ENOBUFS || errno == ENOMEM || errno == EPERM) { ++ } else if (errno == ENOBUFS || errno == ENOMEM) { + int nores_interval; + +- /* Device queue overflow, OOM or operation not permitted. +- * Packet is not sent. */ ++ /* Device queue overflow or OOM. Packet is not sent. */ + tokens = 0; + /* Slowdown. This works only in adaptive mode (option -A) */ + rtt_addend += (rtt < 8*50000 ? rtt/8 : 50000); +@@ -386,8 +385,7 @@ resend: + nores_interval = SCHINT(interval/2); + if (nores_interval > 500) + nores_interval = 500; +- if (errno != EPERM) +- oom_count++; ++ oom_count++; + if (oom_count*nores_interval < lingertime) + return nores_interval; + i = 0; diff --git a/SOURCES/iputils-reorder-I-parsing.patch b/SOURCES/iputils-reorder-I-parsing.patch new file mode 100644 index 00000000..e6469557 --- /dev/null +++ b/SOURCES/iputils-reorder-I-parsing.patch @@ -0,0 +1,37 @@ +commit 1f6f39b84f81cfa6bc243557a68eebeeac7e8ea3 +Author: Robert Schiele +Date: Mon Mar 14 09:18:08 2016 +0100 + + reorder -I option parsing + + This changes -I option parsing in a way that device is only assigned + if neither an IPv4 nor an IPv6 address is detected. Otherwise those + addresses are misinterpreted as device names and as such will cause + error messages later in the code. + + Signed-off-by: Robert Schiele + +diff --git a/ping.c b/ping.c +index c42d6eb..498c0e8 100644 +--- a/ping.c ++++ b/ping.c +@@ -279,10 +279,6 @@ main(int argc, char **argv) + break; + } + case 'I': +- if (inet_pton(AF_INET, optarg, &source.sin_addr) > 0) +- options |= F_STRICTSOURCE; +- else +- device = optarg; + /* IPv6 */ + if (strchr(optarg, ':')) { + char *p, *addr = strdup(optarg); +@@ -306,6 +302,8 @@ main(int argc, char **argv) + options |= F_STRICTSOURCE; + + free(addr); ++ } else if (inet_pton(AF_INET, optarg, &source.sin_addr) > 0) { ++ options |= F_STRICTSOURCE; + } else { + device = optarg; + } diff --git a/SOURCES/iputils-rh-ping-ipv4-by-default.patch b/SOURCES/iputils-rh-ping-ipv4-by-default.patch new file mode 100644 index 00000000..1804cfed --- /dev/null +++ b/SOURCES/iputils-rh-ping-ipv4-by-default.patch @@ -0,0 +1,31 @@ +RHEL only. + +Resolves: #1317796 + +From b2cc1e501531d5d66988ce8b6ab3e8a7b359f040 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pavel=20=C5=A0imerda?= +Date: Mon, 21 Mar 2016 14:13:56 +0100 +Subject: [PATCH] rhel-7.3: keep good old IPv4 ping + +--- + ping.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ping.c b/ping.c +index 498c0e8..5474b9d 100644 +--- a/ping.c ++++ b/ping.c +@@ -443,6 +443,10 @@ main(int argc, char **argv) + + target = argv[argc-1]; + ++ /* RHEL-7.3 rebase: Disable the new dual-stack feature. */ ++ if (hints.ai_family == AF_UNSPEC) ++ hints.ai_family = AF_INET; ++ + /* Create sockets */ + enable_capability_raw(); + if (hints.ai_family != AF_INET6) +-- +2.7.2 + diff --git a/SOURCES/iputils-rh.patch b/SOURCES/iputils-rh.patch new file mode 100644 index 00000000..f66f8854 --- /dev/null +++ b/SOURCES/iputils-rh.patch @@ -0,0 +1,20 @@ +--- iputils-s20160308/Makefile 2016-03-08 13:58:56.000000000 +0100 ++++ iputils-s20160308-new/Makefile 2016-03-09 10:09:02.295409179 +0100 +@@ -36,7 +36,7 @@ WITHOUT_IFADDRS=no + ARPING_DEFAULT_DEVICE= + + # nettle library for ipv6 ping [yes|no|static] +-USE_NETTLE=yes ++USE_NETTLE=no + # libgcrypt library for ipv6 ping [no|yes|static] + USE_GCRYPT=no + # Crypto library for ping6 [shared|static|no] +@@ -53,7 +53,7 @@ ENABLE_RDISC_SERVER=no + # What a pity, all new gccs are buggy and -Werror does not work. Sigh. + # CFLAGS+=-fno-strict-aliasing -Wstrict-prototypes -Wall -Werror -g + CFLAGS?=-O3 -g +-CFLAGS+=-fno-strict-aliasing -Wstrict-prototypes -Wall ++CFLAGS+=$(RPM_OPT_FLAGS) -fno-strict-aliasing -Wstrict-prototypes -Wall + CPPFLAGS+=-D_GNU_SOURCE + LDLIB= + diff --git a/SOURCES/ninfod.service b/SOURCES/ninfod.service new file mode 100644 index 00000000..8c1df65c --- /dev/null +++ b/SOURCES/ninfod.service @@ -0,0 +1,10 @@ +[Unit] +Description=Node Information Query Daemon +After=syslog.target network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/ninfod + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/rdisc.initd b/SOURCES/rdisc.initd new file mode 100644 index 00000000..a70e0da5 --- /dev/null +++ b/SOURCES/rdisc.initd @@ -0,0 +1,87 @@ +#!/bin/bash +# +# $Id: rdisc,v 1.5 2005/04/05 10:06:01 bastian Exp $ +# +### BEGIN INIT INFO +# Provides: rdisc +# Short-Description: This is a daemon which discovers routers on the local subnet. +# Description: This is a daemon which discovers routers on the local subnet. +### END INIT INFO + +# chkconfig: - 41 89 +# config: /etc/sysconfig/rdisc + +# Source function library. +. /etc/init.d/functions +. /etc/sysconfig/network + +LOCKFILE=/var/lock/subsys/rdisc + +# Set default options in /etc/sysconfig/rdisc +[ -f /etc/sysconfig/rdisc ] && . /etc/sysconfig/rdisc +RDISCOPTS=${RDISCOPTS:-"-s"} + +start() { + # Check that networking is configured. + [ ${NETWORKING} = "no" ] && exit 1 + + echo -n $"Starting router discovery: " + if [ $UID -ne 0 ]; then + RETVAL=4 + failure + else + daemon /sbin/rdisc $RDISCOPTS + RETVAL=$? + [ $RETVAL -eq 0 ] && touch $LOCKFILE + fi; + echo + return $RETVAL +} + +stop() { + echo -n $"Shutting down router discovery services: " + if [ $UID -ne 0 ]; then + RETVAL=4 + failure + else + killproc /sbin/rdisc + RETVAL=$? + [ $RETVAL -eq 0 ] && rm -f $LOCKFILE + fi; + echo + return $RETVAL +} + +restart() { + stop + start +} + +RETVAL=0 + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status rdisc + ;; + restart|reload) + restart + ;; + condrestart) + if status $prog > /dev/null; then + stop + start + fi + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|reload}" + exit 2 +esac + +exit $? diff --git a/SOURCES/rdisc.service b/SOURCES/rdisc.service new file mode 100644 index 00000000..47f741f8 --- /dev/null +++ b/SOURCES/rdisc.service @@ -0,0 +1,11 @@ +[Unit] +Description=rdisc daemon which discovers routers on the local subnet +After=syslog.target network.target + +[Service] +Type=forking +EnvironmentFile=/etc/sysconfig/rdisc +ExecStart=/sbin/rdisc $RDISCOPTS + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/rdisc.sysconfig b/SOURCES/rdisc.sysconfig new file mode 100644 index 00000000..bd11c2ad --- /dev/null +++ b/SOURCES/rdisc.sysconfig @@ -0,0 +1 @@ +RDISCOPTS="-s" diff --git a/SPECS/iputils.spec b/SPECS/iputils.spec new file mode 100644 index 00000000..354e5459 --- /dev/null +++ b/SPECS/iputils.spec @@ -0,0 +1,720 @@ +%global _hardened_build 1 + +Summary: Network monitoring tools including ping +Name: iputils +Version: 20160308 +Release: 10%{?dist} +# some parts are under the original BSD (ping.c) +# some are under GPLv2+ (tracepath.c) +License: BSD and GPLv2+ +URL: https://github.com/iputils/iputils +Group: System Environment/Daemons + +Source0: https://github.com/iputils/iputils/archive/s%{version}.tar.gz#/%{name}-s%{version}.tar.gz +Source1: ifenslave.tar.gz +Source3: rdisc.initd +Source4: rdisc.service +Source5: rdisc.sysconfig +Source6: ninfod.service + +Patch0: iputils-rh.patch +Patch1: iputils-ifenslave.patch +Patch2: iputils-20121221-caps.patch +Patch3: iputils-rh-ping-ipv4-by-default.patch +Patch4: iputils-oversized-packets.patch +Patch5: iputils-reorder-I-parsing.patch +Patch6: iputils-fix-I-setsockopt.patch +Patch7: iputils-ping-hang.patch +Patch8: iputils-arping-doc.patch +Patch9: iputils-fix-ping6-return-value.patch +Patch10: iputils-bind-I-interface.patch +Patch11: iputils-fix-possible-double-free.patch +Patch12: iputils-ping-eacces.patch +Patch13: iputils-fix-ping-t-multicast.patch +Patch14: iputils-arping-network-down.patch +Patch15: iputils-fix-pmtu.patch + +BuildRequires: docbook-utils perl-SGMLSpm +BuildRequires: glibc-kernheaders >= 2.4-8.19 +BuildRequires: libidn-devel +BuildRequires: openssl-devel +BuildRequires: libcap-devel +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +BuildRequires: systemd +Requires: filesystem >= 3 +Provides: /bin/ping +Provides: /bin/ping6 +Provides: /sbin/arping +Provides: /sbin/rdisc + +%description +The iputils package contains basic utilities for monitoring a network, +including ping. The ping command sends a series of ICMP protocol +ECHO_REQUEST packets to a specified network host to discover whether +the target machine is alive and receiving network traffic. + +%package sysvinit +Group: System Environment/Daemons +Summary: SysV initscript for rdisc daemon +Requires: %{name} = %{version}-%{release} +Requires(preun): /sbin/service +Requires(postun): /sbin/service + +%description sysvinit +The iputils-sysvinit contains SysV initscritps support. + +%package ninfod +Group: System Environment/Daemons +Summary: Node Information Query Daemon +Requires: %{name} = %{version}-%{release} +Provides: %{_sbindir}/ninfod + +%description ninfod +Node Information Query (RFC4620) daemon. Responds to IPv6 Node Information +Queries. + +%prep +%setup -q -a 1 -n %{name}-s%{version} + +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 + +%build +%ifarch s390 s390x + export CFLAGS="-fPIE" +%else + export CFLAGS="-fpie" +%endif +export LDFLAGS="-pie -Wl,-z,relro,-z,now" + +make %{?_smp_mflags} arping clockdiff ping rdisc tracepath tracepath6 \ + ninfod +gcc -Wall $RPM_OPT_FLAGS ifenslave.c -o ifenslave +make -C doc man + +%install +mkdir -p ${RPM_BUILD_ROOT}%{_sbindir} +mkdir -p ${RPM_BUILD_ROOT}%{_bindir} +mkdir -p $RPM_BUILD_ROOT/%{_unitdir} +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig + +install -c clockdiff ${RPM_BUILD_ROOT}%{_sbindir}/ +install -cp arping ${RPM_BUILD_ROOT}%{_sbindir}/ +install -cp ping ${RPM_BUILD_ROOT}%{_bindir}/ +install -cp ifenslave ${RPM_BUILD_ROOT}%{_sbindir}/ +install -cp rdisc ${RPM_BUILD_ROOT}%{_sbindir}/ +install -cp tracepath ${RPM_BUILD_ROOT}%{_bindir}/ +install -cp tracepath6 ${RPM_BUILD_ROOT}%{_bindir}/ +install -cp ninfod/ninfod ${RPM_BUILD_ROOT}%{_sbindir}/ + +mkdir -p ${RPM_BUILD_ROOT}%{_bindir} +ln -sf ping ${RPM_BUILD_ROOT}%{_bindir}/ping6 +ln -sf ../bin/ping ${RPM_BUILD_ROOT}%{_sbindir}/ping6 +ln -sf ../bin/tracepath ${RPM_BUILD_ROOT}%{_sbindir} +ln -sf ../bin/tracepath6 ${RPM_BUILD_ROOT}%{_sbindir} + +mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man8 +install -cp doc/clockdiff.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/ +install -cp doc/arping.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/ +install -cp doc/ping.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/ +install -cp doc/rdisc.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/ +install -cp doc/tracepath.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/ +install -cp doc/ninfod.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/ +install -cp ifenslave.8 ${RPM_BUILD_ROOT}%{_mandir}/man8/ +ln -s ping.8.gz ${RPM_BUILD_ROOT}%{_mandir}/man8/ping6.8.gz +ln -s tracepath.8.gz ${RPM_BUILD_ROOT}%{_mandir}/man8/tracepath6.8.gz + +install -dp ${RPM_BUILD_ROOT}%{_sysconfdir}/rc.d/init.d +install -m 755 -p %SOURCE3 ${RPM_BUILD_ROOT}%{_sysconfdir}/rc.d/init.d/rdisc +install -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/rdisc +install -m 644 %SOURCE4 ${RPM_BUILD_ROOT}/%{_unitdir} +install -m 644 %SOURCE6 ${RPM_BUILD_ROOT}/%{_unitdir} + +iconv -f ISO88591 -t UTF8 RELNOTES -o RELNOTES.tmp +touch -r RELNOTES RELNOTES.tmp +mv -f RELNOTES.tmp RELNOTES + +%post +%systemd_post rdisc.service + +%preun +%systemd_preun rdisc.service + +%postun +%systemd_postun_with_restart rdisc.service + +%post ninfod +%systemd_post ninfod.service + +%preun ninfod +%systemd_preun ninfod.service + +%postun ninfod +%systemd_postun_with_restart ninfod.service + +%files +%doc RELNOTES README.bonding +%{_unitdir}/rdisc.service +%attr(0755,root,root) %caps(cap_net_raw=p) %{_sbindir}/clockdiff +%attr(0755,root,root) %caps(cap_net_raw=p) %{_sbindir}/arping +%attr(0755,root,root) %caps(cap_net_raw=p cap_net_admin=p) %{_bindir}/ping +%{_sbindir}/ifenslave +%{_sbindir}/rdisc +%{_bindir}/tracepath +%{_bindir}/tracepath6 +%{_bindir}/ping6 +%{_sbindir}/ping6 +%{_sbindir}/tracepath +%{_sbindir}/tracepath6 +%attr(644,root,root) %{_mandir}/man8/clockdiff.8.gz +%attr(644,root,root) %{_mandir}/man8/arping.8.gz +%attr(644,root,root) %{_mandir}/man8/ping.8.gz +%attr(644,root,root) %{_mandir}/man8/ping6.8.gz +%attr(644,root,root) %{_mandir}/man8/rdisc.8.gz +%attr(644,root,root) %{_mandir}/man8/tracepath.8.gz +%attr(644,root,root) %{_mandir}/man8/tracepath6.8.gz +%attr(644,root,root) %{_mandir}/man8/ifenslave.8.gz +%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/sysconfig/rdisc + +%files sysvinit +%{_sysconfdir}/rc.d/init.d/rdisc + +%files ninfod +%attr(0755,root,root) %caps(cap_net_raw=ep) %{_sbindir}/ninfod +%{_unitdir}/ninfod.service +%attr(644,root,root) %{_mandir}/man8/ninfod.8.gz + +%changelog +* Mon May 22 2017 Jan Synáček - 20160308-10 +- fix pmtu discovery for ipv6 (#1444281) + +* Tue Feb 21 2017 Jan Synáček - 20160308-9 +- IPv4 vs IPv6 inconsistency on return value of ping (#1362388) +- ping6 does not use device specified with -I parameter (#1371824, #1424965) +- double cap_free call in ping_common.c (#1410114) +- ping assumes EACCESS errors are due to broadcast addresses (#1387315) +- ping -t with multicast address without effect on ppc64 (#1373333) +- arping -c does not exit when the device is deleted (#1387542) + +* Mon Sep 5 2016 Jan Synáček - 20160308-8 +- arping documentation inconsistency (#1351704) + +* Mon Aug 29 2016 Jan Synáček - 20160308-7 +- ping hung when it cannot receive echo reply (#1362463) +- arping documentation inconsistency (#1351704) + +* Fri Jul 29 2016 Jan Synáček - 20160308-6 +- ping does not use device specified with -I parameter (#1351540) + +* Tue Jul 12 2016 Jan Synáček - 20160308-5 +- add missing /bin/ping6 (#1355674) + +* Fri Jun 3 2016 Jan Synáček - 20160308-4 +- reorder -I option parsing (#1337598) + +* Wed May 11 2016 Jan Synáček - 20160308-3 +- inconsistent ping behaviour and hang with too large packet size (#1172084) + +* Tue Mar 29 2016 Jan Synáček - 20160308-2 +- ping IPv4 addresses by default when given a name (#1317796) + +* Mon Mar 14 2016 Jan Synáček - 20160308-1 +- Update to iputils-s20160308 (#1273336) + +* Tue Mar 1 2016 Jan Synáček - 20150815-1 +- Update to iputils-s20150815 (#1273336) + +* Wed Apr 29 2015 Jan Synáček - 20121221-7 +- ping returns odd results with options inet6 in resolv.conf (#1210331) +- count of "back" is not correct in tracepath (#1208372) + +* Mon Mar 23 2015 Jan Synáček - 20121221-7 +- ping does not work in dkr images (#1142311) + +* Fri Jan 24 2014 Daniel Mach - 20121221-6 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 20121221-5 +- Mass rebuild 2013-12-27 + +* Thu Oct 31 2013 Jan Synáček - 20121221-4 +- Harden the package even more (full RELRO) (#983259) + +* Mon Jul 15 2013 Jan Synáček - 20121221-3 +- Harden the package + +* Fri Feb 01 2013 Jan Synáček - 20121221-2 +- Always use posix locale when reading -i (#905840) +- Set correct ninfod capabilities + +* Mon Jan 07 2013 Jan Synáček - 20121221-1 +- Update to iputils-s20121207 (#890397) and remove unnecessary patches + +* Fri Dec 07 2012 Jan Synáček - 20121207-1 +- Update to iputils-s20121207 (#884983) - fixes a ping segfault introduced + by the previous update +- Update ninfod-minor patch +- Renumber patches +- Fix -F switch (flowlabel patch) + +* Thu Dec 06 2012 Jan Synáček - 20121205-1 +- Update to iputils-s20121205 (#884436) and remove unnecessary patches + +* Thu Dec 06 2012 Jan Synáček - 20121125-3 +- Package ninfod (#877530) +- Update systemd requirements + +* Mon Nov 26 2012 Jan Synáček - 20121125-2 +- Comment patches and cleanup +- Update ifaddrs patch +- Call usage() before limiting capabilities +- Correct ifaddrs patch +- Drop corr_type patch (gcc 4.4 build hack) +- Fix missing end tags in sgml documentation + +* Mon Nov 26 2012 Jan Synáček - 20121125-1 +- Update to iputils-s20121125 (#879952) + +* Mon Nov 26 2012 Jan Synáček - 20121121-2 +- Re-fix arping's default device search logic (#879807) + +* Thu Nov 22 2012 Jan Synáček - 20121121-1 +- Update to iputils-s20121121, drop unnecessary patches +- Add capabilities to clockdiff and arping +- Renumber patches +- Fix arping's default device search logic + +* Mon Nov 19 2012 Jan Synáček - 20121112-2 +- Update License field + +* Tue Nov 13 2012 Jan Synáček - 20121112-1 +- Update to iputils-s20121112 (#875767) + + drop unnecessary patches + + update patches + + wrap SO_BINDTODEVICE with the correct capability + + fix incorrect free (hits when -lidn is used) + +* Thu Nov 08 2012 Jan Synáček - 20121106-2 +- Update ifenslave tarball (#859182) + +* Tue Nov 06 2012 Jan Synáček - 20121106-1 +- Update to iputils-s20121106 (#873571) and update patches + +* Mon Oct 15 2012 Jan Synáček - 20121011-1 +- Update to iputils-s20121011 + + drop unnecessary patches + + update patches + + improve spec + +* Wed Aug 22 2012 Jan Synáček - 20101006-18 +- Improve spec for fedora +- Add systemd-rpm macros (#850167) + +* Mon Jul 23 2012 Jan Synáček 20101006-17 +- Minor update: capabilities patch + +* Fri Jul 20 2012 Jan Synáček 20101006-16 +- Make fedora-review friendly + +* Thu Jul 19 2012 Fedora Release Engineering - 20101006-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jun 25 2012 Jan Synáček 20101006-15 +- Ping fixes: + + enable marking packets when the correct capabilities are set (#802197) + + integer overflow (#834661) + + Fallback to numeric addresses while exiting (#834661) + +* Wed Jan 25 2012 Harald Hoyer 20101006-14 +- install everything in /usr + https://fedoraproject.org/wiki/Features/UsrMove + +* Fri Jan 13 2012 Fedora Release Engineering - 20101006-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Nov 24 2011 Jiri Skala - 20101006-12 +- fixes #756439 - ping Record Route report incorrect (same route) + +* Thu Nov 10 2011 Jiri Skala - 20101006-11 +- fixes #752397 - arping uses eth0 as default interface + +* Mon Aug 01 2011 Jiri Skala - 20101006-10 +- rebuild for libcap + +* Mon Jun 27 2011 Jiri Skala - 20101006-9 +- fixes #697532 - The SysV initscript should be packaged into subpackage + +* Tue Mar 29 2011 Jiri Skala - 20101006-8 +- fixes #663734 - ping/ping6 man page fixes +- fixes #673831 - tracepath/tracepath6 manpage fixes + +* Wed Feb 09 2011 Jiri Skala - 20101006-7 +- fixes build errors due to unused variables + +* Wed Feb 09 2011 Fedora Release Engineering - 20101006-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jan 19 2011 Jiri Skala - 20101006-5 +- fixes #670380 - added /etc/sysconfig/rdisc, modified initscript +- initscript moved to git + +* Wed Dec 15 2010 Jiri Skala - 20101006-4 +- fixes #662720 - Providing native systemd file +- freeing memory when capabilities are dropped + +* Mon Nov 08 2010 Jiri Skala - 20101006-3 +- applied patch dropping capabilities of Ludwig Nussel +- fixes building ping, pinpg6 with -pie option +- moves most CFLAGS options from spec to Makefile + +* Wed Oct 27 2010 Jiri Skala - 20101006-2 +- fixes #646444 - Replace SETUID in spec file with the correct file capabilities + +* Mon Oct 11 2010 Jiri Skala - 20101006-1 +- update to latest upstream + +* Tue Jul 13 2010 Jiri Skala - 20100418-3 +- applied patch preventing ping against dos attack + +* Wed May 19 2010 Jiri Skala - 20100418-2 +- fixes #593641 - update bonding files (updated ifenslave tarball) + +* Tue Apr 20 2010 Jiri Skala - 20100418-1 +- update to latest upstream +- enables flowlabel feature (-F option) + +* Fri Mar 05 2010 Jiri Skala - 20071127-10 +- fixes #557308 - arping ignores the deadline option + +* Fri Jul 24 2009 Fedora Release Engineering - 20071127-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Jiri Skala - 20071127-8 +- remake type conversions to gcc4.4 requirements + +* Wed Feb 25 2009 Fedora Release Engineering - 20071127-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Sep 26 2008 Jiri Skala - 20071127-6 +- #455713 not accepted - suid is back + +* Fri Aug 15 2008 Jiri Skala - 20071127-5 +- removed a dependency on libsysfs library in arping + +* Wed Aug 06 2008 Jiri Skala - 20071127-4 +- Resolves: #455713 remove suid from ping +- corrected typing error in man + +* Tue Jun 03 2008 Martin Nagy - 20071127-3 +- major patch cleanup so it will be easier to get patches upstream +- fix for #68212, previous fix actually didn't work for ping6 +- renewed the ia64 align patches +- update README.bonding +- clear up the code from warnings +- spec file cleanup + +* Tue Mar 25 2008 Martin Nagy - 20071127-2 +- fix inconsistent behaviour of ping (#360881) + +* Mon Feb 25 2008 Martin Nagy - 20071127-1 +- update to new upstream version + +* Mon Feb 18 2008 Martin Nagy - 20070202-9 +- rebuild + +* Mon Feb 18 2008 Martin Nagy - 20070202-8 +- correctly fix the -w option and return code of arping (#387881) + +* Fri Feb 01 2008 Martin Nagy - 20070202-7 +- fix -Q option of ping6 (#213544) + +* Mon Jan 14 2008 Martin Nagy - 20070202-6 +- fix absolute symlinks and character encoding for RELNOTES (#225909) +- preserve file timestamps (#225909) +- use %%{?_smp_mflags} (#225909) +- fix service rdisc stop removing of lock file + +* Fri Sep 14 2007 Martin Bacovsky - 20070202-5 +- rebuild + +* Fri Aug 3 2007 Martin Bacovsky - 20070202-4 +- resolves: #236725: ping does not work for subsecond intervals for ordinary user +- resolves: #243197: RFE: Please sync ifenslave with current kernel +- resolves: #246954: Initscript Review +- resolves: #251124: can't build rdisc - OPEN_MAX undeclared + +* Fri Apr 6 2007 Martin Bacovsky - 20070202-3 +- resolves: #235374: Update of iputils starts rdisc, breaking connectivity + +* Tue Mar 27 2007 Martin Bacovsky - 20070202-2 +- Resolves: #234060: [PATCH] IDN (umlaut domains) support for ping and ping6 + patch provided by Robert Scheck + +* Thu Mar 15 2007 Martin Bacovsky - 20070202-1 +- upgarde to new upstream iputils-s20070202 +- Resolves: #229995 +- Resolves: #225909 - Merge Review: iputils +- patches revision + +* Thu Feb 22 2007 Martin Bacovsky - 20020927-42 +- Resolves: #218706 - now defines the destination address along RFC3484 +- Resolves: #229630 - ifenslave(8) man page added +- Resolves: #213716 - arping doesn't work on InfiniBand ipoib interfaces + +* Wed Sep 13 2006 Radek Vokal - 20020927-41 +- new ifenslave/bonding documentation + +* Mon Aug 21 2006 Martin Bacovsky - 20020927-40 +- tracepath doesn't continue past destination host (#174032) + previous patch replaced by new one provided by + option -c added + +* Mon Jul 17 2006 Radek Vokal - 20020927-39 +- rebuilt + +* Mon Jul 10 2006 Radek Vokal - 20020927-38 +- tracepath doesn't continue past destination host (#174032) + +* Wed Mar 29 2006 Radek Vokál - 20020927-37 +- fix ifenslave, shows interface addresses +- add RPM_OPT_FLAGS to ifenslave + +* Sun Mar 12 2006 Radek Vokál - 20020927-36 +- fix ifenslave man page (#185223) + +* Fri Feb 24 2006 Radek Vokál - 20020927-35 +- add PreReq: chkconfig (#182799,#182798) + +* Fri Feb 10 2006 Jesse Keating - 20020927-34.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 20020927-34.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Feb 06 2006 Radek Vokál 20020927-34 +- ping clean-up, added new ICMP warning messages + +* Wed Jan 25 2006 Radek Vokál 20020927-33 +- gcc patch, warnings cleaned-up + +* Tue Dec 13 2005 Radek Vokal 20020927-32 +- fix HOPLIMIT option for setsockopt() (#175471) + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Dec 05 2005 Radek Vokal 20020927-31 +- ifenslave.8 from debian.org +- separate ifenslave to its own tarball + +* Tue Nov 08 2005 Radek Vokal 20020927-30 +- don't ship traceroute6, now part of traceroute package + +* Wed Oct 05 2005 Radek Vokal 20020927-29 +- add ping6 and tracepath6 manpages, fix attributes. + +* Fri Sep 30 2005 Radek Vokal 20020927-28 +- memset structure before using it (#168166) + +* Mon Sep 26 2005 Radek Vokal 20020927-27 +- fixed ping -f, flooding works again (#134859,#169141) + +* Thu Sep 08 2005 Radek Vokal 20020927-26 +- tracepath6 and tracepath fix, use getaddrinfo instead of gethostbyname(2) + (#100778,#167735) + +* Fri Aug 12 2005 Radek Vokal 20020927-25 +- fixed arping timeout (#165715) + +* Mon Jul 18 2005 Radek Vokal 20020927-24 +- fixed arping buffer overflow (#163383) + +* Fri May 27 2005 Radek Vokal 20020927-23 +- fixed un-initialized "device" (#158914) + +* Thu Apr 07 2005 Radek Vokal 20020927-22 +- don't start rdisc as default (#154075) + +* Tue Apr 05 2005 Radek Vokal 20020927-21 +- rdisc init script added (#151614) + +* Fri Mar 04 2005 Radek Vokal 20020927-20 +- arping fix for infiniband (#150156) + +* Tue Dec 07 2004 Radek Vokal 20020927-19 +- return values fixed - patch from suse.de + +* Mon Oct 18 2004 Radek Vokal +- ifenslave.c and README.bonding updated from kernel-2.6.8-1.521 (#136059) + +* Mon Oct 11 2004 Radek Vokal +- spec file updated, source fixed (#135193) + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Wed May 12 2004 Phil Knirsch 20020927-15 +- Updated rh patch to enable PIE build of binaries. + +* Thu Apr 22 2004 Phil Knirsch 20020927-14 +- Fixed bug with wrong return code check of inet_pton() in traceroute6 (#100684) + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Oct 02 2003 Phil Knirsch 20020927-12 +- Fixed unaligned access problem on ia64 (#101417) + +* Wed Sep 10 2003 Phil Knirsch 20020927-11 +- Don't use own headers, use glibc and kernheaders. + +* Thu Sep 04 2003 Bill Nottingham 20020927-10 +- fix build with new glibc-kernheaders + +* Wed Sep 03 2003 Phil Knirsch 20020927-9.1 +- rebuilt + +* Wed Sep 03 2003 Phil Knirsch 20020927-9 +- Start icmp_seq from 0 instead of 1 (Conform with debian and Solaris #100609). + +* Thu Jul 31 2003 Phil Knirsch 20020927-8 +- One more update to ifenslave.c + +* Mon Jun 16 2003 Phil Knirsch 20020927-7 +- Updated ifenslave.c and README.bonding to latest version. + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Thu May 15 2003 Phil Knirsch 20020927-5 +- Bumped release and rebuilt + +* Thu May 15 2003 Phil Knirsch 20020927-4 +- Fixed DNS lookup problems (#68212). +- Added warning if binding problem failed on subinterface (#81640). + +* Tue May 13 2003 Phil Knirsch 20020927-3 +- Removed bonding tarball and replaced it with ifenslave.c and README +- FHS compliance for all tools, now to be found in /bin with compat symlinks to + old places. + +* Wed Jan 22 2003 Tim Powers 20020927-2 +- rebuilt + +* Fri Nov 29 2002 Phil Knirsch 20020927-1 +- Updated to latest upstream version. + +* Fri Jun 21 2002 Tim Powers 20020124-8 +- automated rebuild + +* Tue Jun 18 2002 Phil Knirsch 20020124-7 +- Added new BuildPreReqs for docbook-utils and perl-SGMLSpm (#66661) +- Fixed ipv6 error printing problem (#66659). + +* Sun May 26 2002 Tim Powers +- automated rebuild + +* Tue May 21 2002 Phil Knirsch +- Added a patch to activate the rdisc server (#64270). +- Display the countermeasures warning only in verbose (#55236) + +* Thu Apr 18 2002 Bill Nottingham +- quit trying to build HTML versions of the man pages + +* Thu Mar 14 2002 Phil Knirsch +- Added fix by Tom "spot" Callaway to fix buffer overflow problems in stats. + +* Wed Feb 27 2002 Phil Knirsch +- Update to iputils-ss020124. + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Mon Aug 27 2001 Philipp Knirsch 20001110-6 +- Fixed buffer overflow problem in traceroute6.c (#51135) + +* Mon Jul 02 2001 Philipp Knirsch +- Made ping6 and traceroute6 setuid (safe as they drop it VERY early) (#46769) + +* Thu Jun 28 2001 Philipp Knirsch +- Fixed ping statistics overflow bug (#43801) + +* Tue Jun 26 2001 Philipp Knirsch +- Fixed a bunch of compiler warnings (#37131) +- Fixed wrong exit code for no packets and deadline (#40323) +- Moved arping to /sbin from /usr/sbin due to ifup call (#45785). Symlink from + /usr/sbin/ provided for backwards compatibility. + +* Mon Apr 30 2001 Preston Brown +- install in.rdisc.8c as rdisc.8 + +* Tue Jan 16 2001 Jeff Johnson +- update to ss001110 +- doco fixes (#23844). + +* Sun Oct 8 2000 Jeff Johnson +- update to ss001007. + +* Tue Aug 8 2000 Tim Waugh +- fix spelling mistake (#15714). + +* Tue Aug 8 2000 Tim Waugh +- turn on -U on machines without TSC (#15223). + +* Tue Aug 1 2000 Jeff Johnson +- better doco patch (#15050). + +* Tue Jul 25 2000 Jakub Jelinek +- fix include-glibc/ to work with new glibc 2.2 resolver headers + +* Thu Jul 13 2000 Prospector +- automatic rebuild + +* Sun Jun 18 2000 Jeff Johnson +- FHS packaging. +- update to ss000418. +- perform reverse DNS lookup only once for same input. + +* Sun Mar 5 2000 Jeff Johnson +- include README.ifenslave doco. +- "ping -i N" was broke for N >= 3 (#9929). +- update to ss000121: +-- clockdiff: preserve raw socket errno. +-- ping: change error exit code to 1 (used to be 92,93, ...) +-- ping,ping6: if -w specified, transmit until -c limit is reached. +-- ping,ping6: exit code non-zero if some packets not received within deadline. + +* Tue Feb 22 2000 Jeff Johnson +- man page corrections (#9690). + +* Wed Feb 9 2000 Jeff Johnson +- add ifenslave. + +* Thu Feb 3 2000 Elliot Lee +- List /usr/sbin/rdisc in %%files list. + +* Thu Jan 27 2000 Jeff Johnson +- add remaining binaries. +- casts to remove compilation warnings. +- terminate if -w deadline is reached exactly (#8724). + +* Fri Dec 24 1999 Jeff Johnson +- create (only ping for now, traceroute et al soon).