--- mtrace.c.orig 1998-12-04 04:48:19 UTC +++ mtrace.c @@ -147,8 +147,9 @@ static char rcsid[] = #ifdef SUNOS5 #include #endif +#include +typedef uint32_t u_int32; -typedef unsigned int u_int32; /* XXX */ #include "mtrace.h" #define DEFAULT_TIMEOUT 3 /* How long to wait before retrying requests */ @@ -283,7 +284,7 @@ extern char * sys_errlist[]; #endif #define RECV_BUF_SIZE 8192 -char *send_buf, *recv_buf; +u_char *send_buf, *recv_buf; int igmp_socket; u_int32 allrtrs_group; char router_alert[4]; /* Router Alert IP Option */ @@ -309,7 +310,7 @@ int ip_addlen = 0; /* Workaround #endif typedef int (*callback_t) __P((int, u_char *, int, struct igmp *, int, - struct sockaddr *, int *, struct timeval *)); + struct sockaddr *, socklen_t *, struct timeval *)); void init_igmp __P((void)); void send_igmp __P((u_int32 src, u_int32 dst, int type, @@ -380,10 +381,10 @@ init_igmp() { struct ip *ip; - recv_buf = (char *)malloc(RECV_BUF_SIZE); + recv_buf = (u_char *)malloc(RECV_BUF_SIZE); if (recv_buf == 0) log(LOG_ERR, 0, "Out of memory allocating recv_buf!"); - send_buf = (char *)malloc(RECV_BUF_SIZE); + send_buf = (u_char *)malloc(RECV_BUF_SIZE); if (send_buf == 0) log(LOG_ERR, 0, "Out of memory allocating send_buf!"); @@ -1196,7 +1197,8 @@ send_recv(dst, type, code, tries, save, u_int32 local, group; int ipdatalen, iphdrlen, igmpdatalen; int datalen; - int count, recvlen, socklen = sizeof(recvaddr); + int count, recvlen; + socklen_t socklen = sizeof(recvaddr); int len; int i; @@ -1486,7 +1488,8 @@ passive_mode() struct sockaddr_in recvaddr; struct tm *now; char timebuf[32]; - int socklen; + time_t tr_sec; + socklen_t socklen; int ipdatalen, iphdrlen, igmpdatalen; int len, recvlen; int qid; @@ -1593,7 +1596,8 @@ passive_mode() } } - now = localtime(&tr.tv_sec); + tr_sec = tr.tv_sec; + now = localtime(&tr_sec); strftime(timebuf, sizeof(timebuf) - 1, "%b %e %k:%M:%S", now); printf("Mtrace %s at %s", len == 0 ? "query" : @@ -1972,11 +1976,12 @@ stat_line(r, s, have_next, rst) break; case NEITHER: - if (ghave != NEITHER) + if (ghave != NEITHER) { if (tunstats) printf(" "); else printf(" "); + } break; } @@ -2027,17 +2032,21 @@ stat_line(r, s, have_next, rst) if (debug > 2) { - printf("\t\t\t\tv_in: %ld ", ntohl(s->tr_vifin)); - printf("v_out: %ld ", ntohl(s->tr_vifout)); - printf("pkts: %ld\n", ntohl(s->tr_pktcnt)); - printf("\t\t\t\tv_in: %ld ", ntohl(r->tr_vifin)); - printf("v_out: %ld ", ntohl(r->tr_vifout)); - printf("pkts: %ld\n", ntohl(r->tr_pktcnt)); - printf("\t\t\t\tv_in: %ld ",ntohl(s->tr_vifin)-ntohl(r->tr_vifin)); - printf("v_out: %ld ", ntohl(s->tr_vifout) - ntohl(r->tr_vifout)); - printf("pkts: %ld ", ntohl(s->tr_pktcnt) - ntohl(r->tr_pktcnt)); + printf("\t\t\t\tv_in: %jd ", (uintmax_t)ntohl(s->tr_vifin)); + printf("v_out: %jd ", (uintmax_t)ntohl(s->tr_vifout)); + printf("pkts: %jd\n", (uintmax_t)ntohl(s->tr_pktcnt)); + printf("\t\t\t\tv_in: %jd ", (uintmax_t)ntohl(r->tr_vifin)); + printf("v_out: %jd ", (uintmax_t)ntohl(r->tr_vifout)); + printf("pkts: %jd\n", (uintmax_t)ntohl(r->tr_pktcnt)); + printf("\t\t\t\tv_in: %jd ", + (uintmax_t)(ntohl(s->tr_vifin)-ntohl(r->tr_vifin))); + printf("v_out: %jd ", + (uintmax_t)(ntohl(s->tr_vifout) - ntohl(r->tr_vifout))); + printf("pkts: %jd ", + (uintmax_t)(ntohl(s->tr_pktcnt) - ntohl(r->tr_pktcnt))); printf("time: %d\n", timediff); - printf("\t\t\t\treset: %x hoptime: %lx\n", *rst, ntohl(s->tr_qarr)); + printf("\t\t\t\treset: %x hoptime: %lx\n", *rst, + (u_long)ntohl(s->tr_qarr)); } } @@ -2148,8 +2157,10 @@ fixup_stats(base, prev, new, bugs) if (debug > 2) { printf("\t\tip=%s, r=%d, res=%d\n", inet_fmt(b->tr_inaddr, s1), *r, res); if (res) - printf("\t\tbase=%ld, prev=%ld, new=%ld\n", ntohl(b->tr_pktcnt), - ntohl(p->tr_pktcnt), ntohl(n->tr_pktcnt)); + printf("\t\tbase=%jd, prev=%jd, new=%jd\n", + (uintmax_t)ntohl(b->tr_pktcnt), + (uintmax_t)ntohl(p->tr_pktcnt), + (uintmax_t)ntohl(n->tr_pktcnt)); } if (*r & BUG_RESET) { if (res || (*r & BUG_RESET2X)) { @@ -2286,16 +2297,20 @@ print_stats(base, prev, new, bugs, names printf(" v ^\n"); } if (debug > 2) { - printf("\t\t\t\tv_in: %ld ", ntohl(n->tr_vifin)); - printf("v_out: %ld ", ntohl(n->tr_vifout)); - printf("pkts: %ld\n", ntohl(n->tr_pktcnt)); - printf("\t\t\t\tv_in: %ld ", ntohl(b->tr_vifin)); - printf("v_out: %ld ", ntohl(b->tr_vifout)); - printf("pkts: %ld\n", ntohl(b->tr_pktcnt)); - printf("\t\t\t\tv_in: %ld ", ntohl(n->tr_vifin) - ntohl(b->tr_vifin)); - printf("v_out: %ld ", ntohl(n->tr_vifout) - ntohl(b->tr_vifout)); - printf("pkts: %ld\n", ntohl(n->tr_pktcnt) - ntohl(b->tr_pktcnt)); - printf("\t\t\t\treset: %x hoptime: %lx\n", *r, ntohl(n->tr_qarr)); + printf("\t\t\t\tv_in: %jd ", (uintmax_t)ntohl(n->tr_vifin)); + printf("v_out: %jd ", (uintmax_t)ntohl(n->tr_vifout)); + printf("pkts: %jd\n", (uintmax_t)ntohl(n->tr_pktcnt)); + printf("\t\t\t\tv_in: %jd ", (uintmax_t)ntohl(b->tr_vifin)); + printf("v_out: %jd ", (uintmax_t)ntohl(b->tr_vifout)); + printf("pkts: %jd\n", (uintmax_t)ntohl(b->tr_pktcnt)); + printf("\t\t\t\tv_in: %jd ", + (uintmax_t)(ntohl(n->tr_vifin) - ntohl(b->tr_vifin))); + printf("v_out: %jd ", + (uintmax_t)(ntohl(n->tr_vifout) - ntohl(b->tr_vifout))); + printf("pkts: %jd\n", + (uintmax_t)(ntohl(n->tr_pktcnt) - ntohl(b->tr_pktcnt))); + printf("\t\t\t\treset: %x hoptime: %lx\n", *r, + (u_long)ntohl(n->tr_qarr)); } while (TRUE) { @@ -2386,7 +2401,7 @@ char *argv[]; { int udp; struct sockaddr_in addr; - int addrlen = sizeof(addr); + socklen_t addrlen = sizeof(addr); int recvlen; struct timeval tv; struct resp_buf *prev, *new; @@ -2957,7 +2972,7 @@ continuehop: if (base.rtime == 0) { printf("Timed out receiving responses\n"); - if (IN_MULTICAST(ntohl(tdst))) + if (IN_MULTICAST(ntohl(tdst))) { if (tdst == query_cast) printf("Perhaps no local router has a route for source %s\n", inet_fmt(qsrc, s1)); @@ -2967,6 +2982,7 @@ or no router local to it has a route for or multicast at ttl %d doesn't reach its last-hop router for that source\n", inet_fmt(qdst, s2), inet_fmt(qgrp, s3), inet_fmt(qsrc, s1), qttl ? qttl : MULTICAST_TTL1); + } exit(1); }