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);
                }
            }
        }