zeek/src/analyzer/protocol/tcp/TCP_Flags.h
2015-10-26 16:58:44 -07:00

55 lines
884 B
C++

#ifndef ANALYZER_PROTOCOL_TCP_TCP_FLAGS_H
#define ANALYZER_PROTOCOL_TCP_TCP_FLAGS_H
namespace analyzer { namespace tcp {
class TCP_Flags {
public:
TCP_Flags(const struct tcphdr* tp) { flags = tp->th_flags; }
TCP_Flags() { flags = 0; }
bool SYN() const { return flags & TH_SYN; }
bool FIN() const { return flags & TH_FIN; }
bool RST() const { return flags & TH_RST; }
bool ACK() const { return flags & TH_ACK; }
bool URG() const { return flags & TH_URG; }
bool PUSH() const { return flags & TH_PUSH; }
string AsString() const;
protected:
u_char flags;
};
inline string TCP_Flags::AsString() const
{
char tcp_flags[10];
char* p = tcp_flags;
if ( SYN() )
*p++ = 'S';
if ( FIN() )
*p++ = 'F';
if ( RST() )
*p++ = 'R';
if ( ACK() )
*p++ = 'A';
if ( PUSH() )
*p++ = 'P';
if ( URG() )
*p++ = 'U';
*p++ = '\0';
return tcp_flags;
}
}
}
#endif