📄 packetccp.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 + -