Пример #1
0
        public OfpPacketOut(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out BufferId);
            br.Parse(out InPort);
            br.Parse(out ActionsLen);

            int length = ActionsLen;

            while (length >= 8)
            {
                var action = OfpActionHeader.ParseAction(stream);
                Actions[action.Header.Type] = action;
                length -= action.Header.Len;
            }

            if (BufferId == uint.MaxValue) //-1
            {
                length = Header.Length - (int)Size - ActionsLen;
                if (length > 0)
                {
                    br.Parse(out Data, length);
                }
            }
        }
Пример #2
0
        public OfpVendorStats(Stream stream, int length)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out Vendor, 4);
            br.Parse(out Content, length);
        }
Пример #3
0
        public OfpFlowStats(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out Length);
            br.Parse(out TableId);
            br.ReadBytes(1);
            Match = new OfpMatch(stream);
            br.Parse(out DurationSec);
            br.Parse(out DurationNsec);
            br.Parse(out Priority);
            br.Parse(out IdleTimeout);
            br.Parse(out HardTimeout);
            br.ReadBytes(6);
            br.Parse(out Cookie);
            br.Parse(out PacketCount);
            br.Parse(out ByteCount);

            IOfpAction action = OfpActionHeader.ParseAction(stream);

            while (action != null)
            {
                Actions[action.Header.Type] = action;
                action = OfpActionHeader.ParseAction(stream);
            }
        }
Пример #4
0
        public OfpPacketQueue(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out QueueId);
            br.Parse(out Len);
            br.ReadBytes(2); //PAD
        }
Пример #5
0
        public OfpQueueStatsRequest(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out PortNo);
            br.ReadBytes(2);
            br.Parse(out QueueId);
        }
Пример #6
0
        public OfpActionVendorHeader(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = new OfpActionHeader(stream);
            br.Parse(out Vendor);
            br.Parse(out Content, Header.Len);
        }
Пример #7
0
        public OfpActionHeader(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out Type);
            br.Parse(out Len);
            //br.ReadBytes(4); //PAD 4
        }
Пример #8
0
        public OfpSwitchConfig(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out Flags);
            br.Parse(out MissSendLen);
        }
Пример #9
0
        public OfpQueuePropHeader(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out Property);
            br.Parse(out Len);
            br.ReadBytes(4);
        }
Пример #10
0
        public OfpActionOutput(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = new OfpActionHeader(stream);
            br.Parse(out Port);
            br.Parse(out MaxLen);
        }
Пример #11
0
        public OfpActionHeader(Stream stream, int padding)
        {
            _pad = padding;
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out Type);
            br.Parse(out Len);
            br.ReadBytes(_pad); //PAD 4
        }
Пример #12
0
        public OfpAggregateStats(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out PacketCount);
            br.Parse(out ByteCount);
            br.Parse(out FlowCount);
            br.ReadBytes(4);
        }
Пример #13
0
        public OfpStatsReply(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out Type);
            br.Parse(out Flags);
            br.Parse(out Body, (int)(Header.Length - Size));
        }
Пример #14
0
        public OfpActionEnqueue(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = new OfpActionHeader(stream);
            br.Parse(out Port);
            br.ReadBytes(6); //PAD 6
            br.Parse(out QueueId);
        }
Пример #15
0
        public OfpAggregateStatsRequest(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Match = new OfpMatch(stream);
            br.Parse(out TableId);
            br.ReadBytes(1);
            br.Parse(out OutPort);
        }
Пример #16
0
        public OfpHeader(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out Version);
            br.Parse(out Type);
            br.Parse(out Length);
            br.Parse(out Xid);
        }
Пример #17
0
        public OfpDescStats(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out MfrDesc, DESC_STR_LEN);
            br.Parse(out HwDesc, DESC_STR_LEN);
            br.Parse(out SwDesc, DESC_STR_LEN);
            br.Parse(out SerialNum, SERIAL_NUM_LEN);
            br.Parse(out DpDesc, DESC_STR_LEN);
        }
Пример #18
0
        public OfpQueueStats(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out PortNo);
            br.ReadBytes(2); //PAD 2
            br.Parse(out QueueId);
            br.Parse(out TxBytes);
            br.Parse(out TxPackets);
            br.Parse(out TxErrors);
        }
Пример #19
0
        public OfpErrorMsg(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out Type);
            br.Parse(out Code);
            int length = (int)(Header.Length - Size);

            br.Parse(out Data, length);
        }
Пример #20
0
        public OfpFlowMod(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            //var pos = stream.Position;
            Match = new OfpMatch(stream);
            //pos = stream.Position;
            br.Parse(out Cookie);
            br.Parse(out Command);
            br.Parse(out IdleTimeout);
            br.Parse(out HardTimeout);
            br.Parse(out Priority);
            br.Parse(out BufferId);
            br.Parse(out OutPort); //FIXED:
            br.Parse(out Flags);
            //pos = stream.Position;
            IOfpAction action = OfpActionHeader.ParseAction(stream);

            while (action != null)
            {
                Actions[action.Header.Type] = action;
                action = OfpActionHeader.ParseAction(stream);
            }
        }
Пример #21
0
        public OfpPacketIn(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out BufferId);
            br.Parse(out TotalLen);
            br.Parse(out InPort);
            br.Parse(out Reason);
            br.ReadBytes(1);
            int length = (int)(Header.Length - Size + 2); //FIXED:

            Data = br.ReadBytes(length);
        }
Пример #22
0
        public OfpActionNwAddr(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = new OfpActionHeader(stream);
            br.Parse(out NwAddr);
        }
Пример #23
0
        public OfpQueuePropMinRate(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            PropHeader = new OfpQueuePropHeader(stream);
            br.Parse(out Rate);
        }
Пример #24
0
        public OfpActionDlAddr(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = new OfpActionHeader(stream);
            br.Parse(out DlAddr, OFP_MAX_ETH_ALEN);
            br.ReadBytes(6);
        }
Пример #25
0
        public OfpActionTpPort(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = new OfpActionHeader(stream);
            br.Parse(out TpPort);
            br.ReadBytes(2); //PAD 2
        }
Пример #26
0
        public OfpQueueGetConfigRequest(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out Port);
            br.ReadBytes(2);
        }
Пример #27
0
        public OfpActionNwTos(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = new OfpActionHeader(stream);
            br.Parse(out NwTos);
            br.ReadBytes(3);
        }
Пример #28
0
        public OfpPhyPort(Stream stream)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            br.Parse(out PortNo);
            br.Parse(out HwAddr, OFP_MAX_ETH_ALEN);
            br.Parse(out Name, OFP_MAX_PORT_NAME_LEN);
            br.Parse(out Config);
            br.Parse(out State);
            br.Parse(out Curr);
            br.Parse(out Advertised);
            br.Parse(out Supported);
            br.Parse(out Peer);
        }
Пример #29
0
        public OfpPortStatus(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out Reason);
            br.ReadBytes(7);
            Desc = new OfpPhyPort(stream);
        }
Пример #30
0
        public OfpSwitchFeatures(Stream stream, OfpHeader header = null)
        {
            BeBinaryReader br = new BeBinaryReader(stream, Encoding.ASCII, true);

            Header = header ?? new OfpHeader(stream);
            br.Parse(out DatapathId);
            br.Parse(out NBuffers);
            br.Parse(out NTables);
            br.ReadBytes(3); //PAD 3
            br.Parse(out Capabilities);
            br.Parse(out Actions);
            var portCount = (Header.Length - Size) / OfpPhyPort.Size;

            for (int i = 0; i < portCount; i++)
            {
                OfpPhyPort port = new OfpPhyPort(stream);
                Ports.Add(port);
            }
        }