|
|
|
@ -44,9 +44,10 @@ |
|
|
|
#define SOL_TCP 6 |
|
|
|
#include <sys/types.h> |
|
|
|
#include <sys/socket.h> |
|
|
|
#include <stdint.h> |
|
|
|
#include <endian.h> |
|
|
|
|
|
|
|
typedef u_int32_t tcp_seq; |
|
|
|
typedef uint32_t tcp_seq; |
|
|
|
|
|
|
|
#define TH_FIN 0x01 |
|
|
|
#define TH_SYN 0x02 |
|
|
|
@ -62,53 +63,53 @@ struct tcphdr { |
|
|
|
#endif |
|
|
|
union { struct { |
|
|
|
|
|
|
|
u_int16_t source; |
|
|
|
u_int16_t dest; |
|
|
|
u_int32_t seq; |
|
|
|
u_int32_t ack_seq; |
|
|
|
uint16_t source; |
|
|
|
uint16_t dest; |
|
|
|
uint32_t seq; |
|
|
|
uint32_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; |
|
|
|
uint16_t res1:4; |
|
|
|
uint16_t doff:4; |
|
|
|
uint16_t fin:1; |
|
|
|
uint16_t syn:1; |
|
|
|
uint16_t rst:1; |
|
|
|
uint16_t psh:1; |
|
|
|
uint16_t ack:1; |
|
|
|
uint16_t urg:1; |
|
|
|
uint16_t res2:2; |
|
|
|
#else |
|
|
|
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; |
|
|
|
uint16_t doff:4; |
|
|
|
uint16_t res1:4; |
|
|
|
uint16_t res2:2; |
|
|
|
uint16_t urg:1; |
|
|
|
uint16_t ack:1; |
|
|
|
uint16_t psh:1; |
|
|
|
uint16_t rst:1; |
|
|
|
uint16_t syn:1; |
|
|
|
uint16_t fin:1; |
|
|
|
#endif |
|
|
|
u_int16_t window; |
|
|
|
u_int16_t check; |
|
|
|
u_int16_t urg_ptr; |
|
|
|
uint16_t window; |
|
|
|
uint16_t check; |
|
|
|
uint16_t urg_ptr; |
|
|
|
|
|
|
|
}; struct { |
|
|
|
#endif |
|
|
|
|
|
|
|
u_int16_t th_sport; |
|
|
|
u_int16_t th_dport; |
|
|
|
u_int32_t th_seq; |
|
|
|
u_int32_t th_ack; |
|
|
|
uint16_t th_sport; |
|
|
|
uint16_t th_dport; |
|
|
|
uint32_t th_seq; |
|
|
|
uint32_t th_ack; |
|
|
|
#if __BYTE_ORDER == __LITTLE_ENDIAN |
|
|
|
u_int8_t th_x2:4; |
|
|
|
u_int8_t th_off:4; |
|
|
|
uint8_t th_x2:4; |
|
|
|
uint8_t th_off:4; |
|
|
|
#else |
|
|
|
u_int8_t th_off:4; |
|
|
|
u_int8_t th_x2:4; |
|
|
|
uint8_t th_off:4; |
|
|
|
uint8_t th_x2:4; |
|
|
|
#endif |
|
|
|
u_int8_t th_flags; |
|
|
|
u_int16_t th_win; |
|
|
|
u_int16_t th_sum; |
|
|
|
u_int16_t th_urp; |
|
|
|
uint8_t th_flags; |
|
|
|
uint16_t th_win; |
|
|
|
uint16_t th_sum; |
|
|
|
uint16_t th_urp; |
|
|
|
|
|
|
|
#ifdef _GNU_SOURCE |
|
|
|
}; }; |
|
|
|
@ -130,37 +131,37 @@ struct tcphdr { |
|
|
|
|
|
|
|
struct tcp_info |
|
|
|
{ |
|
|
|
u_int8_t tcpi_state; |
|
|
|
u_int8_t tcpi_ca_state; |
|
|
|
u_int8_t tcpi_retransmits; |
|
|
|
u_int8_t tcpi_probes; |
|
|
|
u_int8_t tcpi_backoff; |
|
|
|
u_int8_t tcpi_options; |
|
|
|
u_int8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; |
|
|
|
u_int32_t tcpi_rto; |
|
|
|
u_int32_t tcpi_ato; |
|
|
|
u_int32_t tcpi_snd_mss; |
|
|
|
u_int32_t tcpi_rcv_mss; |
|
|
|
u_int32_t tcpi_unacked; |
|
|
|
u_int32_t tcpi_sacked; |
|
|
|
u_int32_t tcpi_lost; |
|
|
|
u_int32_t tcpi_retrans; |
|
|
|
u_int32_t tcpi_fackets; |
|
|
|
u_int32_t tcpi_last_data_sent; |
|
|
|
u_int32_t tcpi_last_ack_sent; |
|
|
|
u_int32_t tcpi_last_data_recv; |
|
|
|
u_int32_t tcpi_last_ack_recv; |
|
|
|
u_int32_t tcpi_pmtu; |
|
|
|
u_int32_t tcpi_rcv_ssthresh; |
|
|
|
u_int32_t tcpi_rtt; |
|
|
|
u_int32_t tcpi_rttvar; |
|
|
|
u_int32_t tcpi_snd_ssthresh; |
|
|
|
u_int32_t tcpi_snd_cwnd; |
|
|
|
u_int32_t tcpi_advmss; |
|
|
|
u_int32_t tcpi_reordering; |
|
|
|
u_int32_t tcpi_rcv_rtt; |
|
|
|
u_int32_t tcpi_rcv_space; |
|
|
|
u_int32_t tcpi_total_retrans; |
|
|
|
uint8_t tcpi_state; |
|
|
|
uint8_t tcpi_ca_state; |
|
|
|
uint8_t tcpi_retransmits; |
|
|
|
uint8_t tcpi_probes; |
|
|
|
uint8_t tcpi_backoff; |
|
|
|
uint8_t tcpi_options; |
|
|
|
uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; |
|
|
|
uint32_t tcpi_rto; |
|
|
|
uint32_t tcpi_ato; |
|
|
|
uint32_t tcpi_snd_mss; |
|
|
|
uint32_t tcpi_rcv_mss; |
|
|
|
uint32_t tcpi_unacked; |
|
|
|
uint32_t tcpi_sacked; |
|
|
|
uint32_t tcpi_lost; |
|
|
|
uint32_t tcpi_retrans; |
|
|
|
uint32_t tcpi_fackets; |
|
|
|
uint32_t tcpi_last_data_sent; |
|
|
|
uint32_t tcpi_last_ack_sent; |
|
|
|
uint32_t tcpi_last_data_recv; |
|
|
|
uint32_t tcpi_last_ack_recv; |
|
|
|
uint32_t tcpi_pmtu; |
|
|
|
uint32_t tcpi_rcv_ssthresh; |
|
|
|
uint32_t tcpi_rtt; |
|
|
|
uint32_t tcpi_rttvar; |
|
|
|
uint32_t tcpi_snd_ssthresh; |
|
|
|
uint32_t tcpi_snd_cwnd; |
|
|
|
uint32_t tcpi_advmss; |
|
|
|
uint32_t tcpi_reordering; |
|
|
|
uint32_t tcpi_rcv_rtt; |
|
|
|
uint32_t tcpi_rcv_space; |
|
|
|
uint32_t tcpi_total_retrans; |
|
|
|
}; |
|
|
|
|
|
|
|
#define TCP_MD5SIG_MAXKEYLEN 80 |
|
|
|
@ -168,10 +169,10 @@ struct tcp_info |
|
|
|
struct tcp_md5sig |
|
|
|
{ |
|
|
|
struct sockaddr_storage tcpm_addr; |
|
|
|
u_int16_t __tcpm_pad1; |
|
|
|
u_int16_t tcpm_keylen; |
|
|
|
u_int32_t __tcpm_pad2; |
|
|
|
u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; |
|
|
|
uint16_t __tcpm_pad1; |
|
|
|
uint16_t tcpm_keylen; |
|
|
|
uint32_t __tcpm_pad2; |
|
|
|
uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; |
|
|
|
}; |
|
|
|
|
|
|
|
#endif |
|
|
|
|