编程实现判断ip数据包是否分片,以及各种fragment 的类型。
uint16_t offset= ntoh16(iphdr->offset);
bool df= offset&IP_DF != 0;
bool mf= offset&IP_MF != 0;
offset &= IP_OFFMASK;
bool is_fragment= true;
if(mf)
{
if(offset== 0) //first.
{
}
else //middle.
{
}
}
else
{
if(offset== 0) //complete.
{
is_fragment= false;
}
else //last
{
}
}