public override void Extract(byte[] arr, uint offset) { version = (bit4)BitHelper.ExtractBits(arr, offset * 8, 4); ihl = (bit4)BitHelper.ExtractBits(arr, offset * 8 + 4, 4); diffserv = BitHelper.Extract8(arr, offset + 1); totalLen = BitHelper.Extract16(arr, offset + 2); identification = BitHelper.Extract16(arr, offset + 4); flags = (bit3)BitHelper.ExtractBits(arr, offset + 48, 3); fragOffset = BitHelper.ExtractBits(arr, offset + 51, 13); ttl = BitHelper.Extract8(arr, offset + 8); protocol = BitHelper.Extract8(arr, offset + 9); hdrChecksum = BitHelper.Extract16(arr, offset + 10); srcAddr = BitHelper.Extract32(arr, offset + 12); dstAddr = BitHelper.Extract32(arr, offset + 16); }
public override void Parse(byte[] data, uint offset) { offset *= 8; version = BitHelper.Extract4(data, offset + 0); ihl = BitHelper.Extract4(data, offset + 4); diffserv = BitHelper.Extract8(data, offset + 8); totalLen = BitHelper.Extract16(data, offset + 16); identification = BitHelper.Extract16(data, offset + 32); flags = BitHelper.ExtractN(data, offset + 48, 3); fragOffset = BitHelper.ExtractN(data, offset + 51, 13); ttl = BitHelper.Extract8(data, offset + 64); protocol = BitHelper.Extract8(data, offset + 72); hdrChecksum = BitHelper.Extract16(data, offset + 80); srcAddr = BitHelper.Extract32(data, offset + 96); dstAddr = BitHelper.Extract32(data, offset + 128); length = 160; setValid(); }