Пример #1
0
 //GRE协议
 #region GRE
 private void GRE(GREPacket gre)
 {
     if (gre.Version == GREVersion.GREv0)
     {
     }
     else if (gre.Version == GREVersion.GREv1)
     {
         GREv1Packet v1 = new GREv1Packet(gre.rawData);
         if (v1 != null)
         {
             GREv1(v1);
         }
     }
 }
Пример #2
0
        private void GREv1(GREv1Packet v1)
        {
            if (GREv1Node == null)
            {
                GREv1Node = CreatNode("GREv1", 12);
            }
            GREv1Node.Nodes.Clear();

            #region CRKSsFlagsVersion
            if (GREv1FlagsNode == null)
            {
                GREv1FlagsNode = new TreeNode();
            }
            GREv1FlagsNode.Nodes.Clear();
            GREv1FlagsNode.Text = "CRKSsAFlagsVersion:[0x" + v1.CRKSsAFlagsVersion.ToString("X4") + "]";
            //第一个字节
            GREv1FlagsNode.Nodes.Add(v1.C + "... .... .... .... = [" + v1.C + "] C(Checksum Present): " + ((v1.C == 1) ? "Yes" : "No"));                                                          //0
            GREv1FlagsNode.Nodes.Add("." + v1.R + ".. .... .... .... = [" + v1.R + "] R(Routing Present): " + ((v1.R == 1) ? "Yes" : "No"));                                                      //0
            GREv1FlagsNode.Nodes.Add(".." + v1.K + ". .... .... .... = [" + v1.K + "] K(Key Present): " + ((v1.K == 1) ? "Yes" : "No"));                                                          //used
            GREv1FlagsNode.Nodes.Add("..." + v1.S + " .... .... .... = [" + v1.S + "] S(Sequence Number present): " + ((v1.S == 1) ? "Yes" : "No"));                                              //used
            GREv1FlagsNode.Nodes.Add(".... " + v1.s + "... .... .... = [" + v1.s + "] s(Strict Source Route): " + ((v1.s == 1) ? "Yes" : "No"));                                                  //0
            string tmpRecuer = Convert.ToString(v1.Recur, 2).PadLeft(3, '0');
            GREv1FlagsNode.Nodes.Add(".... ." + tmpRecuer + " .... .... = [0x" + v1.Recur.ToString("X2") + "] Recur(Recursion Control): " + v1.Recur);                                            //0  递归控制
            //第二个字节
            GREv1FlagsNode.Nodes.Add(".... .... " + v1.A + "... .... = [" + v1.A + "] A(Acknowledgment sequence number present): " + ((v1.A == 1) ? "Yes" : "No"));                               //used
            string tmpFlags = Convert.ToString(v1.Flags).PadLeft(4, '0').Insert(3, " ");
            GREv1FlagsNode.Nodes.Add(".... .... ." + tmpFlags + "... = [0x" + v1.Flags.ToString("X2") + "] Flags: " + v1.Flags);                                                                  //0
            GREv1FlagsNode.Nodes.Add(".... .... .... ." + Convert.ToString((ushort)v1.Version, 2).PadLeft(3, '0') + " = [0x" + ((ushort)v1.Version).ToString("X2") + "] Version: " + v1.Version); //used

            GREv1Node.Nodes.Add(GREv1FlagsNode);
            #endregion

            GREv1Node.Nodes.Add("Protocol: " + v1.Protocol + " [0x" + ((ushort)v1.Protocol).ToString("X4") + "]");
            GREv1Node.Nodes.Add("Payload Length: " + v1.PayloadLength);
            GREv1Node.Nodes.Add("Call ID: " + v1.CallID + " [0x" + ((ushort)v1.CallID).ToString("X4") + "]");

            if (v1.S == 1)
            {
                GREv1Node.Nodes.Add("Sequence Number: " + v1.SequenceNumber);
            }
            if (v1.A == 1)
            {
                GREv1Node.Nodes.Add("Acknowledgment Number: " + v1.AcknowledgmentNumber);
            }
            Tree.Nodes.Add(GREv1Node);
            NextGRE(v1.PayloadData, v1.Protocol);
        }