Exemplo n.º 1
0
        public void PassToInModule(object oSender, object received, int destPort)
        {
            try
            {
                InPort inPort;
                int    destinationPort;
                if (received.GetType() == typeof(Packet))
                {
                    Packet receivedPacket = (Packet)received;

                    MPLSPacket packet = SetLabelAndPort(receivedPacket, destPort);
                    destinationPort = GetPortNumber(packet);
                    inPort          = GetInPort(destinationPort);
                    //LogClass.WhiteLog("Passing MPLSPacket to inPort " + inPort.GetPortNumber());
                    MPLSPacket processedPacket = inPort.ProcessPacket(packet);
                    Commutate(processedPacket);
                }
                else if (received.GetType() == typeof(MPLSPack))
                {
                    MPLSPack receivedPack = (MPLSPack)received;
                    destinationPort = destPort;
                    inPort          = GetInPort(destinationPort);
                    //LogClass.WhiteLog("Passing MPLSPack to inPort " + destinationPort);
                    ThreadSafeList <MPLSPacket> processedPackets = inPort.ProcessPack(receivedPack, destPort);
                    foreach (MPLSPacket packet in processedPackets)
                    {
                        Commutate(packet);
                    }
                }
            }
            catch (Exception e)
            {
                LogClass.MagentaLog("Connection doesn't exist");
            }
        }
Exemplo n.º 2
0
        private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            int portNumber;

            sendingTimer.Stop();
            foreach (OutPort outPort in outPorts)
            {
                if (outPort.GetBufferLength() > 0)
                {
                    portNumber = outPort.GetPortNumber();
                    if (outPort.SendingToClient())
                    {
                        while (outPort.GetBufferLength() > 0)
                        {
                            Packet bufferObject = outPort.PrepareIPPacketFromBuffer(0);
                            OutputManager.sendIPPacket(bufferObject, outPort, portNumber);
                            LogClass.WhiteLog("Sending IPPacket from outPort " + portNumber);
                        }
                    }
                    else
                    {
                        MPLSPack bufferContent = outPort.PrepareMPLSPackFromBuffer();
                        OutputManager.sendMPLSPack(bufferContent, portNumber, outPort);
                        LogClass.WhiteLog("Sending MPLSPack from outPort " + portNumber);
                    }
                }
            }
            sendingTimer.Start();
        }
Exemplo n.º 3
0
        public List <MPLSPacket> processPack(MPLSPack mplsPack)
        {
            List <MPLSPacket> packets = UnpackPack(mplsPack);

            packets.ForEach(ChangeLabel);
            return(packets);
        }
Exemplo n.º 4
0
        private static byte[] getSerializedPack(MPLSPack pack)
        {
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream    ms = new MemoryStream();

            bf.Serialize(ms, pack);
            byte[] serialized = ms.ToArray();
            return(serialized);
        }
Exemplo n.º 5
0
        public static void sendMPLSPack(MPLSPack mplsPack, int outPort, OutPort port)
        {
            byte[] serializedMPLSPack = getSerializedPack(mplsPack);
            int    packSize           = serializedMPLSPack.Length + 8;

            outputSocket.Send(BitConverter.GetBytes(packSize));
            outputSocket.Send(BitConverter.GetBytes(packSize));
            outputSocket.Send(BitConverter.GetBytes(outPort));
            outputSocket.Send(serializedMPLSPack);
        }
Exemplo n.º 6
0
        public MPLSPack PrepareMPLSPackFromBuffer()
        {
            ThreadSafeList <MPLSPacket> currentBuffer = packetBuffer;

            packetBuffer = new ThreadSafeList <MPLSPacket>();
            MPLSPack pack = new MPLSPack(currentBuffer);

            pack.DestinationPort = currentBuffer[0].DestinationPort;
            return(pack);
        }
Exemplo n.º 7
0
        public ThreadSafeList <MPLSPacket> ProcessPack(MPLSPack mplsPack, int destPort)
        {
            LogClass.WhiteLog("MPLSPack added to inPort " + destPort);
            ThreadSafeList <MPLSPacket> packets = UnpackPack(mplsPack);

            LogClass.WhiteLog("MPLSPack unpacked, comutating MPLSPackets");

            foreach (MPLSPacket packet in packets)
            {
                Program.count++;
                packet.DestinationPort = destPort;
            }
            packets.ForEach(ChangeLabel);
            return(packets);
        }
Exemplo n.º 8
0
        public void RouteIncoming(object oSender, object received) //jak to nazwać?
        {
            InPort inPort;
            int    destinationPort;

            if (received.GetType() == typeof(Packet))
            {
                Packet receivedPacket = (Packet)received;
                destinationPort = GetPortNumber(receivedPacket);
                inPort          = GetInPort(destinationPort);
                MPLSPacket processedPacket = inPort.processPacket(receivedPacket);
            }
            else if (received.GetType() == typeof(MPLSPack))
            {
                MPLSPack receivedPack = (MPLSPack)received;
                destinationPort = receivedPack.destinationPort;
                inPort          = GetInPort(destinationPort);
                List <MPLSPacket> processedPackets = inPort.processPack(receivedPack);
                foreach (MPLSPacket packet in processedPackets)
                {
                    Commutate(packet);
                }
            }
        }
Exemplo n.º 9
0
 public ThreadSafeList <MPLSPacket> UnpackPack(MPLSPack pack)
 {
     return(pack.Unpack());
 }
Exemplo n.º 10
0
 public List <MPLSPacket> UnpackPack(MPLSPack pack)
 {
     return(pack.Unpack());
 }