X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/edb0e92cdcaf06168a38e632847b8fd2c0a62a2d..58b04f7f360c33a8058d0b9a2d1314e34dff8403:/print-rx.c diff --git a/print-rx.c b/print-rx.c index 20ea3b33..b48da39f 100644 --- a/print-rx.c +++ b/print-rx.c @@ -34,7 +34,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-rx.c,v 1.33 2002-09-05 00:00:19 guy Exp $"; + "@(#) $Header: /tcpdump/master/tcpdump/print-rx.c,v 1.35 2003-01-25 23:49:04 guy Exp $"; #endif #ifdef HAVE_CONFIG_H @@ -375,6 +375,7 @@ static struct tok rx_ack_reasons[] = { { 6, "ping" }, { 7, "ping response" }, { 8, "delay" }, + { 9, "idle" }, { 0, NULL }, }; @@ -398,11 +399,10 @@ static struct rx_cache_entry rx_cache[RX_CACHE_SIZE]; static int rx_cache_next = 0; static int rx_cache_hint = 0; -static void rx_cache_insert(const u_char *, const struct ip *, int, int); +static void rx_cache_insert(const u_char *, const struct ip *, int); static int rx_cache_find(const struct rx_header *, const struct ip *, int, int32_t *); -static void ack_print(const u_char *, int); static void fs_print(const u_char *, int); static void fs_reply_print(const u_char *, int, int32_t); static void acl_print(u_char *, int, u_char *); @@ -418,7 +418,7 @@ static void vol_print(const u_char *, int); static void vol_reply_print(const u_char *, int, int32_t); static void bos_print(const u_char *, int); static void bos_reply_print(const u_char *, int, int32_t); -static void ubik_print(const u_char *, int); +static void ubik_print(const u_char *); static void ubik_reply_print(const u_char *, int, int32_t); static void rx_ack_print(const u_char *, int); @@ -489,9 +489,7 @@ rx_print(register const u_char *bp, int length, int sport, int dport, * as well. */ - if (rxh->type == RX_PACKET_TYPE_ACK) - ack_print(bp, length); - else if (rxh->type == RX_PACKET_TYPE_DATA && + if (rxh->type == RX_PACKET_TYPE_DATA && EXTRACT_32BITS(&rxh->seq) == 1 && rxh->flags & RX_CLIENT_INITIATED) { @@ -500,7 +498,7 @@ rx_print(register const u_char *bp, int length, int sport, int dport, * have a chance to print out replies */ - rx_cache_insert(bp, (const struct ip *) bp2, dport, length); + rx_cache_insert(bp, (const struct ip *) bp2, dport); switch (dport) { case FS_RX_PORT: /* AFS file service */ @@ -586,8 +584,7 @@ rx_print(register const u_char *bp, int length, int sport, int dport, */ static void -rx_cache_insert(const u_char *bp, const struct ip *ip, int dport, - int length) +rx_cache_insert(const u_char *bp, const struct ip *ip, int dport) { struct rx_cache_entry *rxent; const struct rx_header *rxh = (const struct rx_header *) bp; @@ -766,75 +763,6 @@ rx_cache_find(const struct rx_header *rxh, const struct ip *ip, int sport, printf("\""); \ } -static void -ack_print(register const u_char *bp, int length) -{ - u_char nAcks; - int i; - - if (vflag <= 1) - return; - - if (length <= (int)sizeof(struct rx_header)) - return; - - bp += sizeof(struct rx_header); - - /* - * Packets < firstPacket are implicitly acknowledged and may - * be discarded by the sender. - * - * Packets >= firstPacket+nAcks are implicitly NOT acknowledged. - * - * No packets with sequence numbers >= firstPacket should be - * discarded by the sender (they may thrown out at any time by - * the receiver) - */ -#define RX_ACK_REASONS "RDOXSprn" - /* Requested, Duplicate, Out_of_sequence, eXceeds_window, no_Space, - * Ping, ping_Response, No_{progress, particular_reason}. - */ -#if 0 - struct rx_ackPacket { - u_short bufferSpace; /* Skip! */ - u_short maxSkew; /* Skip! */ - u_long firstPacket; - u_long previousPacket; /* Obsolete! */ - u_long serial; /* Serial that prompted the ack, */ - u_char reason; /* and the reason why. */ - u_char nAcks; - u_char acks[RX_MAXACKS]; /* Selective acks (not a bitmap). */ - }; -#endif -#define RX_ACK_TYPE_NACK 0 - - TCHECK2(bp[0], 8); /* bufferSpace and maxSkew */ - bp += 4; - printf(" fir %u", (unsigned)EXTRACT_32BITS(bp)); - bp += 4; - TCHECK2(bp[0], 8); /* previousPacket and serial */ - bp += 4; - printf(" %u", (unsigned)EXTRACT_32BITS(bp)); - bp += 4; - TCHECK2(bp[0], 1); - printf("%c", RX_ACK_REASONS[(*bp - 1) & 07u]); - bp += 1; /* reason */ - TCHECK2(bp[0], 1); - nAcks = *bp; - bp += 1; /* nAcks */ - - for (i = 0; i < nAcks; i++) { - TCHECK2(bp[0], 1); - putchar(*bp == RX_ACK_TYPE_NACK? '-' : '*'); - bp += 1; - } - - return; - -trunc: - printf(" [|ack]"); -} - /* * Handle calls to the AFS file service (fs) */ @@ -1308,7 +1236,7 @@ prot_print(register const u_char *bp, int length) printf(" pt"); if (is_ubik(pt_op)) { - ubik_print(bp, length); + ubik_print(bp); return; } @@ -1562,7 +1490,7 @@ vldb_print(register const u_char *bp, int length) printf(" vldb"); if (is_ubik(vldb_op)) { - ubik_print(bp, length); + ubik_print(bp); return; } printf(" call %s", tok2str(vldb_req, "op#%d", vldb_op)); @@ -1841,7 +1769,7 @@ kauth_print(register const u_char *bp, int length) printf(" kauth"); if (is_ubik(kauth_op)) { - ubik_print(bp, length); + ubik_print(bp); return; } @@ -2195,7 +2123,7 @@ is_ubik(u_int32_t opcode) */ static void -ubik_print(register const u_char *bp, int length) +ubik_print(register const u_char *bp) { int ubik_op; int32_t temp;