--- iputils/ping6.c.OLD 2006-02-06 10:34:35.000000000 +0100 +++ iputils/ping6.c 2006-02-06 10:35:38.000000000 +0100 @@ -353,7 +353,7 @@ hostname = target; if (ipv6_addr_any(&source.sin6_addr)) { - int alen; + socklen_t alen; int probe_fd = socket(AF_INET6, SOCK_DGRAM, 0); if (probe_fd < 0) { --- iputils/ping.c.OLD 2006-02-06 10:34:35.000000000 +0100 +++ iputils/ping.c 2006-02-06 10:34:35.000000000 +0100 @@ -253,7 +253,7 @@ } if (source.sin_addr.s_addr == 0) { - int alen; + socklen_t alen; struct sockaddr_in dst = whereto; int probe_fd = socket(AF_INET, SOCK_DGRAM, 0); @@ -855,9 +855,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/ping_common.c.OLD 2006-02-06 10:34:35.000000000 +0100 +++ iputils/ping_common.c 2006-02-06 10:34:35.000000000 +0100 @@ -67,7 +67,7 @@ int ii, jj, kk; int pat[16]; char *cp; - char *bp = outpack+8; + unsigned char *bp = outpack+8; for (cp = patp; *cp; cp++) { if (!isxdigit(*cp)) { @@ -393,7 +393,7 @@ void sock_setbufs(int icmp_sock, int alloc) { int rcvbuf, hold; - int tmplen = sizeof(hold); + socklen_t tmplen = sizeof(hold); if (!sndbuf) sndbuf = alloc; @@ -464,7 +464,7 @@ if (!(options & F_PINGFILLED)) { int i; - char *p = outpack+8; + unsigned char *p = outpack+8; /* Do not forget about case of small datalen, * fill timestamp area too! @@ -819,7 +819,7 @@ } 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);