gre報文長度解析

// *pTemp爲GRE報文頭指針

unsigned char getGreHdrLen(unsigned char *pTemp)
{
    unsigned char greflags1 = *(pTemp);
    unsigned char greflags2 = *(pTemp + 1);
    unsigned char sequence_num = (greflags1 >> 4) & 0x01;
    unsigned char key = (greflags1 >> 5) & 0x01;
    unsigned char acknowledge_num = (greflags2 >> 7) & 0x01;
    unsigned char grehderlen = 0;
    unsigned char flags = sequence_num + key + acknowledge_num;
    switch (flags) {
    case 0:
            grehderlen = 4;
            break;
    case 1:
            grehderlen = 8;
            break;
    case 2:
            grehderlen = 12;
            break;
    case 3:
            grehderlen = 16;
            break;
    }
    return grehderlen;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章