Could I not do something like this:
typedef struct len_flags
{ USHORT unused : 6,
len: 4,
flags : 6;
} len_flags;
typedef struct tcp_header {
USHORT sport; // Source port
USHORT dport; // Destination port
UINT32 seq; // Sequence number
UINT32 ack; // Acknowledgement number
#define TH_FIN 0x01
#define TH_SYN 0x02
#define TH_RST 0x04
#define TH_PUSH 0x08
#define TH_ACK 0x10
#define TH_URG 0x20
len_flags lenflags; // TCP length & flags
USHORT win; // window
USHORT crc; // checksum
USHORT urp; // urgent pointer
} tcp_header;
Then test the flags like this:
// test flags
if (tcpHeader->lenflags.flags & TH_URG)
tempTCP.flags = "URG ";
if (tcpHeader->lenflags.flags & TH_ACK)
tempTCP.flags += "ACK ";
if (tcpHeader->lenflags.flags & TH_PUSH)
tempTCP.flags += "PSH ";
if (tcpHeader->lenflags.flags & TH_RST)
tempTCP.flags += "RST ";
if (tcpHeader->lenflags.flags & TH_SYN)
tempTCP.flags += "SYN ";
if (tcpHeader->lenflags.flags & TH_FIN)
tempTCP.flags += "FIN ";
But it dosent seem to work :((, something to do with #pragma pack? Regards Packetlos