summaryrefslogtreecommitdiff
path: root/packages/iputils/files/debian-fixes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/iputils/files/debian-fixes.patch')
-rw-r--r--packages/iputils/files/debian-fixes.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/packages/iputils/files/debian-fixes.patch b/packages/iputils/files/debian-fixes.patch
new file mode 100644
index 0000000000..1b014f07f9
--- /dev/null
+++ b/packages/iputils/files/debian-fixes.patch
@@ -0,0 +1,133 @@
+Fixes taken from the lastest debian .deb pacakge (20020927-3).
+
+--- iputils-20020927.orig/ping.c
++++ iputils-20020927/ping.c
+@@ -232,7 +232,7 @@
+ if (argc == 1)
+ options |= F_NUMERIC;
+ } else {
+- hp = gethostbyname(target);
++ hp = gethostbyname2(target, AF_INET);
+ if (!hp) {
+ fprintf(stderr, "ping: unknown host %s\n", target);
+ exit(2);
+@@ -373,8 +373,13 @@
+ (1<<ICMP_PARAMETERPROB)|
+ (1<<ICMP_REDIRECT)|
+ (1<<ICMP_ECHOREPLY));
+- if (setsockopt(icmp_sock, SOL_RAW, ICMP_FILTER, (char*)&filt, sizeof(filt)) == -1)
++ if (setsockopt(icmp_sock, SOL_RAW, ICMP_FILTER,
++ (char*)&filt, sizeof(filt)) == -1)
++ {
+ perror("WARNING: setsockopt(ICMP_FILTER)");
++ fprintf(stderr,
++ "Do you have CONFIG_SOCKET in your kernel?");
++ }
+ }
+
+ hold = 1;
+@@ -848,9 +853,36 @@
+ case ICMP_SR_FAILED:
+ printf("Source Route Failed\n");
+ break;
++ case ICMP_NET_UNKNOWN:
++ printf("Destination Net Unknown\n");
++ break;
++ case ICMP_HOST_UNKNOWN:
++ printf("Destination Host Unknown\n");
++ break;
++ case ICMP_HOST_ISOLATED:
++ printf("Source Host Isolated\n");
++ break;
++ case ICMP_NET_ANO:
++ printf("Destination Net Prohibited\n");
++ break;
++ case ICMP_HOST_ANO:
++ printf("Destination Host Prohibited\n");
++ break;
++ case ICMP_NET_UNR_TOS:
++ printf("Destination Net Unreachable for Type of Service\n");
++ break;
++ case ICMP_HOST_UNR_TOS:
++ printf("Destination Host Unreachable for Type of Service\n");
++ break;
+ case ICMP_PKT_FILTERED:
+ printf("Packet filtered\n");
+ break;
++ case ICMP_PREC_VIOLATION:
++ printf("Precedence Violation\n");
++ break;
++ case ICMP_PREC_CUTOFF:
++ printf("Precedence Cutoff\n");
++ break;
+ default:
+ printf("Dest Unreachable, Bad Code: %d\n", code);
+ break;
+--- iputils-20020927.orig/ping6.c
++++ iputils-20020927/ping6.c
+@@ -440,7 +440,6 @@
+ /*
+ * select icmp echo reply as icmp type to receive
+ */
+-
+ ICMPV6_FILTER_SETBLOCKALL(&filter);
+
+ if (!working_recverr) {
+--- iputils-20020927.orig/tracepath.c
++++ iputils-20020927/tracepath.c
+@@ -307,9 +307,9 @@
+ base_port = atoi(p+1);
+ } else
+ base_port = 44444;
+- he = gethostbyname(argv[0]);
++ he = gethostbyname2(argv[0], AF_INET);
+ if (he == NULL) {
+- herror("gethostbyname");
++ herror("gethostbyname2");
+ exit(1);
+ }
+ memcpy(&target.sin_addr, he->h_addr, 4);
+--- iputils-20020927.orig/traceroute6.c
++++ iputils-20020927/traceroute6.c
+@@ -441,7 +441,7 @@
+ * to fix something send the patch to me for sanity checking.
+ * "datalen" patch is a shit. */
+ if ((unsigned int)datalen == 0)
+- datalen == sizeof(struct pkt_format);
++ datalen = sizeof(struct pkt_format);
+ }
+
+ if (datalen < (int)sizeof(struct pkt_format) || datalen >= MAXPACKET) {
+--- iputils-20020927.orig/ping_common.c
++++ iputils-20020927/ping_common.c
+@@ -435,6 +435,7 @@
+ if (options & F_SO_DONTROUTE)
+ setsockopt(icmp_sock, SOL_SOCKET, SO_DONTROUTE, (char *)&hold, sizeof(hold));
+
++#ifndef __sparc__ /* XXX SO_TIMESTAMP seems broken on sparc */
+ #ifdef SO_TIMESTAMP
+ if (!(options&F_LATENCY)) {
+ int on = 1;
+@@ -442,6 +443,7 @@
+ fprintf(stderr, "Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP\n");
+ }
+ #endif
++#endif /* __sparc__ */
+
+ /* Set some SNDTIMEO to prevent blocking forever
+ * on sends, when device is too slow or stalls. Just put limit
+@@ -817,7 +819,8 @@
+ }
+ if (pipesize > 1)
+ printf(", pipe %d", pipesize);
+- if (ntransmitted > 1 && (!interval || (options&(F_FLOOD|F_ADAPTIVE)))) {
++ if (ntransmitted > 1 && nreceived &&
++ (!interval || (options&(F_FLOOD|F_ADAPTIVE)))) {
+ int ipg = (1000000*(long long)tv.tv_sec+tv.tv_usec)/(ntransmitted-1);
+ printf(", ipg/ewma %d.%03d/%d.%03d ms",
+ ipg/1000, ipg%1000, rtt/8000, (rtt/8)%1000);
+@@ -851,4 +854,3 @@
+ }
+ fprintf(stderr, "\n");
+ }
+-