Как узнать, установлено ли поле MORE FRAGMENTS или нет? - PullRequest
1 голос
/ 23 января 2010

Учитывая этот заголовок, как мне найти, установлено ли поле MORE FRAGMENTS или нет ..

struct sniff_ip {
        u_char  ip_vhl;                 /* version << 4 | header length >> 2 */
        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 */
};

1 Ответ

2 голосов
/ 23 января 2010
struct sniff_ip ip_hdr; 
...
if(ip_hdr.ip_off & IP_MF) {
  //more fragments bit is set.
}
...