私のubuntu 9.04では、/usr/include/netinet/tcp.hはtcpヘッダーを次のように定義しています
struct tcphdr
{
u_int16_t source;
u_int16_t dest;
u_int32_t seq;
u_int32_t ack_seq;
# if __BYTE_ORDER == __LITTLE_ENDIAN
u_int16_t res1:4;
u_int16_t doff:4;
u_int16_t fin:1;
u_int16_t syn:1;
u_int16_t rst:1;
u_int16_t psh:1;
u_int16_t ack:1;
u_int16_t urg:1;
u_int16_t res2:2;
# elif __BYTE_ORDER == __BIG_ENDIAN
u_int16_t doff:4;
u_int16_t res1:4;
u_int16_t res2:2;
u_int16_t urg:1;
u_int16_t ack:1;
u_int16_t psh:1;
u_int16_t rst:1;
u_int16_t syn:1;
u_int16_t fin:1;
# else
# error "Adjust your <bits/endian.h> defines"
# endif
u_int16_t window;
u_int16_t check;
u_int16_t urg_ptr;
};
フラグ セクションでは、FIN、SYN、RST、PSH、ACK、URG 値が定義されていますが、ECE および CWR フラグが見つかりません。struct tcphdr で定義されている res1、res2、doff の値は何を意味していますか? ECE および CWR フラグの値にもアクセスする方法はありますか?
ありがとう。