⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packetccp.cpp

📁 protocol
💻 CPP
字号:
//---------------------------------------------------------------------------


#pragma hdrstop

#include "PacketCCP.h"
#include "Functions.h"
//---------------------------------------------------------------------------
String GetCodeString(unsigned char c)
{
  String PCCPCode;
  PCCPCode ="Not defined";

  switch(c){

       case 0 : PCCPCode ="Vendor Specific";break;
       case 1 : PCCPCode ="Configure-Request";break;
       case 2 : PCCPCode ="Configure-Ack";break;
       case 3 : PCCPCode ="Configure-Nak";break;
       case 4 : PCCPCode ="Configure-Reject";break;
       case 5 : PCCPCode ="Terminate-Request";break;
       case 6 : PCCPCode ="Terminate-Ack";break;
       case 7 : PCCPCode ="Code-Reject";break;
       case 14 : PCCPCode ="Reset-Request";break;
       case 15 : PCCPCode ="Reset-Reply";break;
  }
  if(((c>7)&&(c<14))&&(c>15)) return  "Unknown";

  return PCCPCode;
}
//---------------------------------------------------------------------------

#pragma package(smart_init)
void PacketCCPParser(unsigned char *p_data,int index,Layer layer,unsigned int datalength,Sel *SelInfo,NodeInfo *nodes0,
  NodeInfo *nodes1,NodeInfo *nodes2,TTreeView *tvPacket)
{
   TTreeNode *mmNode;
   PACKET_CCP PCCP;


    mmNode = tvPacket->Items->Add(tvPacket->Selected,"CCP(PPP Compression Control Protocol)");
    nodes0->Node[layer.layer1] = mmNode;
    SelInfo->Start1[layer.layer1] = index;
    if((index+4)>datalength){
        tvPacket->Items->AddChild(mmNode,"[ Malformed CCP packet. Remaining bytes don't fit an CCP packet. Possibly due to bad decoding ]");
        return;
    }

    PCCP.Code = *(p_data + index);
    SelInfo->Start2[layer.layer1][0] = index;
    index += 1;
    SelInfo->End2[layer.layer1][0] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Code                  : 0x"+IntToHex(PCCP.Code,2)+" ( "+PCCP.Code+" )"+GetCodeString(PCCP.Code));

    PCCP.Identifier = *(p_data + index);
    SelInfo->Start2[layer.layer1][1] = index;
    index += 1;
    SelInfo->End2[layer.layer1][1] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Identifier            : 0x"+IntToHex(PCCP.Identifier,2)+" ( "+PCCP.Identifier+" )");

    PCCP.Length = Get2Bytes(p_data,index,1);
    SelInfo->Start2[layer.layer1][2] = index;
    index += 2;
    SelInfo->End2[layer.layer1][2] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Length                : 0x"+IntToHex(PCCP.Length,4)+" ( "+PCCP.Length+" )");

    SelInfo->Start2[layer.layer1][3] = index;
    index =datalength;
    SelInfo->End2[layer.layer1][3] = index;
    nodes1->Node[layer.layer2++] = tvPacket->Items->AddChild(mmNode,"Data");

    SelInfo->End1[layer.layer1] = index;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -