public void SendPeerMessage(byte snppId, GenericMessage genmsg) { //Log.WriteLine("[TX] PeerMessage: {0}, SNPP {1}", genmsg.messageType, snppId); MPLSPacket packet = new MPLSPacket(new int[] { 0 }, ""); packet.managementObject = genmsg; AggregatePacket aggregatePacket = new AggregatePacket(new MPLSPacket[] { packet }); BinaryWrapper wrappedPacket = MPLSMethods.Serialize(aggregatePacket); MAC.SendData(wrappedPacket, snppId); //Log.WriteLine("[TX {0}] => {1}, iface {2}", snppId, genmsg.messageType, snppId); }
void SendPacketsCallback(object state) { foreach (TELinkEnd iface in routerInterfaces) { MPLSPacket[] queuedPackets = iface.GetPacketsAndEmptyQueue(); // Loads all packets stored in a queue and clears that interface's queue if (queuedPackets.Length > 0) { AggregatePacket finalPacket = new AggregatePacket(queuedPackets); BinaryWrapper wrappedPacket = MPLSMethods.Serialize(finalPacket); MAC.SendData(wrappedPacket, iface.Id); Log.WriteLine("[TX {0}] => {1} MPLS packet(s)", iface.Id, queuedPackets.Length); } } }
void PacketHandler(BinaryWrapper packet, byte interfaceId) { AggregatePacket receivedPacket = MPLSMethods.Deserialize(packet); //Log.WriteLine("[RX {0}] \t {1} packet(s)", interfaceId, receivedPacket.packets.Length); foreach (MPLSPacket mplspacket in receivedPacket.packets) { if (mplspacket.managementObject != null) { GenericMessage genmsg = (GenericMessage)mplspacket.managementObject; //Log.WriteLine("[RX {0}] \t {1}", interfaceId, genmsg.messageType); handleMgmtPackets(interfaceId, genmsg); } else { Log.WriteLine("[RX] Packet on interface {0}", interfaceId); Route(mplspacket, interfaceId); } } }