Emul8.HostInterfaces.Network.LinuxTapInterface.ReceiveFrame C# (CSharp) Method

ReceiveFrame() public method

public ReceiveFrame ( Emul8.Network.EthernetFrame frame ) : void
frame Emul8.Network.EthernetFrame
return void
        public void ReceiveFrame(EthernetFrame frame)
        {
            // TODO: non blocking
            if(stream == null)
            {
                return;
            }
            var handle = GCHandle.Alloc(frame.Bytes, GCHandleType.Pinned);
            try
            {
                var result = LibC.WriteData(stream.Handle, handle.AddrOfPinnedObject(), frame.Length);
                if(result == 0)
                {
                    this.Log(LogLevel.Error,
                        "Error while writing to TUN interface: {0}.", result);
                }
            }
            finally
            {
                handle.Free();
            }
        }