__RCSID("$NetBSD: print-tcp.c,v 1.8 2007/07/24 11:53:48 drochner Exp $");
#endif
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include "netdissect-stdinc.h"
{ TH_URG, "U" },
{ TH_ECNECHO, "E" },
{ TH_CWR, "W" },
+ { TH_AE, "e" },
{ 0, NULL }
};
{
const struct tcphdr *tp;
const struct ip *ip;
- u_char flags;
+ uint16_t flags;
u_int hlen;
char ch;
uint16_t sport, dport, win, urp;
return;
}
- flags = GET_U_1(tp->th_flags);
+ flags = tcp_get_flags(tp);
ND_PRINT("Flags [%s]", bittok2str_nosep(tcp_flag_values, "none", flags));
if (!ndo->ndo_Sflag && (flags & TH_ACK)) {
}
}
- if (flags & TH_ACK) {
+ if (flags & TH_ACK)
ND_PRINT(", ack %u", ack);
- }
+ else
+ if (ndo->ndo_vflag > 1 && ack != 0)
+ ND_PRINT(", [ack %u != 0 while ACK flag not set]", ack);
ND_PRINT(", win %u", win);
if (flags & TH_URG)
ND_PRINT(", urg %u", urp);
+ else
+ if (ndo->ndo_vflag > 1 && urp != 0)
+ ND_PRINT(", [urg %u != 0 while URG flag not set]", urp);
/*
* Handle any options.
*/
hlen -= sizeof(*tp);
cp = (const u_char *)tp + sizeof(*tp);
ND_PRINT(", options [");
- while (hlen > 0) {
+ while (hlen != 0) {
if (ch != '\0')
ND_PRINT("%c", ch);
opt = GET_U_1(cp);