2011-07-27 46 views
0

我在我的頭文件中'tcp_seq'之前不斷收到此錯誤:預期說明符 - 限定符列表。C:「tcp_seq」之前的預期說明符 - 限定符列表

這裏是頭文件:

#include <netinet/ip.h> 

/* TCP header */ 
struct sniff_tcp { 
    u_short th_sport; /* source port */ 
    u_short th_dport; /* destination port */ 
    tcp_seq th_seq; /* sequence number */ 
    tcp_seq th_ack; /* acknowledgement number */ 
    #if BYTE_ORDER == LITTLE_ENDIAN 
    u_int th_x2:4, /* (unused) */ 
    th_off:4; /* data offset */ 
    #endif 
    #if BYTE_ORDER == BIG_ENDIAN 
    u_int th_off:4, /* data offset */ 
    th_x2:4; /* (unused) */ 
    #endif 
    u_char th_flags; 
    #define TH_FIN 0x01 
    #define TH_SYN 0x02 
    #define TH_RST 0x04 
    #define TH_PUSH 0x08 
    #define TH_ACK 0x10 
    #define TH_URG 0x20 
    #define TH_ECE 0x40 
    #define TH_CWR 0x80 
    #define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR) 
    u_short th_win; /* window */ 
    u_short th; /* checksum */ 
    u_short th_urp; /* urgent pointer */ 
}; 


/* Ethernet header */ 
struct sniff_ethernet { 
    u_char ether_dhost[ETHER_ADDR_LEN]; /* Destination host address */ 
    u_char ether_shost[ETHER_ADDR_LEN]; /* Source host address */ 
    u_short ether_type;     /* IP? ARP? RARP? etc */ 
}; 

/* IP header */ 
struct sniff_ip { 
    #if BYTE_ORDER == LITTLE_ENDIAN 
    u_int ip_hl:4,      /* header length */ 
    ip_v:4;        /* version */ 
    #if BYTE_ORDER == BIG_ENDIAN 
    u_int ip_v:4,      /* version */ 
    ip_hl:4;       /* header length */ 
    #endif 
    #endif        /* not _IP_VHL */ 
    u_char ip_tos;      /* type of service */ 
    u_short ip_len;      /* total length */ 
    u_short ip_id;      /* identification */ 
    u_short ip_off;      /* fragment offset field */ 
    #define IP_RF 0x8000    /* reserved fragment flag */ 
    #define IP_DF 0x4000    /* dont fragment flag */ 
    #define IP_MF 0x2000    /* more fragments flag */ 
    #define IP_OFFMASK 0x1fff   /* mask for fragmenting bits */ 
    u_char ip_ttl;      /* time to live */ 
    u_char ip_p;      /* protocol */ 
    u_short ip_sum;      /* checksum */ 
    struct in_addr ip_src,ip_dst;  /* source and dest address */ 
}; 

我不能得到它的底部,即使谷歌。

我希望有人有一些建議。

提前許多感謝,

回答

3

貌似複製從netinet/tcp.h複製tcphdr結構。

您收到的錯誤消息只是一種複雜的說法,即tcp_seq類型未知。對我來說,這是由netinet/tcp.h定義的,如果定義了預處理器宏__FAVOR_BSD

或者,您可以使用u_long或任何其他無符號的32位整數類型。

+1

嗨,謝謝你的洞察力。是 - 複製了tcphdr結構。我只是做了一個'typedef u_int32_t tcp_seq;',它工作正常... – Eamorr

相關問題