public override void Write(byte[] buffer, int offset, int payloadLength, ILayer previousLayer, ILayer nextLayer) { EthernetType ethernetType = EthernetBaseLayer.GetEthernetType(this.EtherType, nextLayer); MacAddress destination = this.Destination; IEthernetNextLayer ethernetNextLayer = nextLayer as IEthernetNextLayer; if (destination == MacAddress.Zero && ethernetNextLayer != null && ethernetNextLayer.PreviousLayerDefaultDestination.HasValue) { destination = ethernetNextLayer.PreviousLayerDefaultDestination.Value; } EthernetDatagram.WriteHeader(buffer, offset, this.Source, destination, ethernetType); }
internal static void WriteHeader(byte[] buffer, int offset, MacAddress ethernetSource, MacAddress ethernetDestination, EthernetType ethernetType) { ByteArrayExtensions.Write(buffer, offset + 6, ethernetSource, Endianity.Big); ByteArrayExtensions.Write(buffer, offset, ethernetDestination, Endianity.Big); ByteArrayExtensions.Write(buffer, offset + 12, (ushort)ethernetType, Endianity.Big); }
internal static void WriteHeader(byte[] buffer, int offset, MacAddress ethernetSource, MacAddress ethernetDestination, EthernetType ethernetType) { buffer.Write(offset + Offset.Source, ethernetSource, Endianity.Big); buffer.Write(offset + Offset.Destination, ethernetDestination, Endianity.Big); buffer.Write(offset + Offset.EtherTypeLength, (ushort)ethernetType, Endianity.Big); }