X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/7b50febe28e54e076a9917164eeddec4bc7a170e..f5c79aedbe9c52dad10a196d805718f55a2be17a:/print-tcp.c diff --git a/print-tcp.c b/print-tcp.c index 3b0202fc..852300ce 100644 --- a/print-tcp.c +++ b/print-tcp.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-tcp.c,v 1.73 2000-09-23 08:26:38 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-tcp.c,v 1.80 2000-11-17 19:08:16 itojun Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -34,9 +34,6 @@ static const char rcsid[] = #include #include -#include -#include -#include #include #include @@ -44,16 +41,17 @@ static const char rcsid[] = #include #include -#ifdef INET6 -#include -#endif - #include "interface.h" #include "addrtoname.h" #include "extract.h" #include "tcp.h" +#include "ip.h" +#ifdef INET6 +#include "ip6.h" +#endif + static void print_tcp_rst_data(register const u_char *sp, u_int length); #define MAX_RST_DATA_LEN 30 @@ -131,6 +129,7 @@ static struct tcp_seq_hash tcp_seq_hash[TSEQ_HASHSIZE]; #define BGP_PORT 179 #endif #define NETBIOS_SSN_PORT 139 +#define BXXP_PORT 10288 #ifndef NFS_PORT #define NFS_PORT 2049 #endif @@ -230,7 +229,7 @@ static int tcp6_cksum(const struct ip6_hdr *ip6, const struct tcphdr *tp, void tcp_print(register const u_char *bp, register u_int length, - register const u_char *bp2) + register const u_char *bp2, int fragmented) { register const struct tcphdr *tp; register const struct ip *ip; @@ -247,7 +246,7 @@ tcp_print(register const u_char *bp, register u_int length, tp = (struct tcphdr *)bp; ip = (struct ip *)bp2; #ifdef INET6 - if (ip->ip_v == 6) + if (IP_V(ip) == 6) ip6 = (struct ip6_hdr *)bp2; else ip6 = NULL; @@ -264,7 +263,7 @@ tcp_print(register const u_char *bp, register u_int length, dport = ntohs(tp->th_dport); - hlen = tp->th_off * 4; + hlen = TH_OFF(tp) * 4; /* * If data present and NFS port used, assume NFS. @@ -320,7 +319,7 @@ tcp_print(register const u_char *bp, register u_int length, urp = ntohs(tp->th_urp); if (qflag) { - (void)printf("tcp %d", length - tp->th_off * 4); + (void)printf("tcp %d", length - TH_OFF(tp) * 4); return; } if ((flags = tp->th_flags) & (TH_SYN|TH_FIN|TH_RST|TH_PUSH| @@ -445,7 +444,7 @@ tcp_print(register const u_char *bp, register u_int length, return; } - if (ip->ip_v == 4 && vflag) { + if (IP_V(ip) == 4 && vflag && !fragmented) { int sum; if (TTEST2(tp->th_sport, length)) { sum = tcp_cksum(ip, tp, length); @@ -456,7 +455,7 @@ tcp_print(register const u_char *bp, register u_int length, } } #ifdef INET6 - if (ip->ip_v == 6 && ip6->ip6_plen && vflag) { + if (IP_V(ip) == 6 && ip6->ip6_plen && vflag && !fragmented) { int sum; if (TTEST2(tp->th_sport, length)) { sum = tcp6_cksum(ip6, tp, length); @@ -640,7 +639,7 @@ tcp_print(register const u_char *bp, register u_int length, /* * Decode payload if necessary. */ - bp += (tp->th_off * 4); + bp += TH_OFF(tp) * 4; if (flags & TH_RST) { if (vflag) print_tcp_rst_data(bp, length); @@ -652,6 +651,8 @@ tcp_print(register const u_char *bp, register u_int length, bgp_print(bp, length); else if (sport == NETBIOS_SSN_PORT || dport == NETBIOS_SSN_PORT) nbt_tcp_print(bp, length); + else if (sport == BXXP_PORT || dport == BXXP_PORT) + bxxp_print(bp, length); } return; bad: