public AHHeader(short hops, short ttl, Address source, Address dest, ushort options) { //Make the header part: byte[] header = new byte[ AHPacket.HeaderLength ]; int offset = 0; //Write hops: NumberSerializer.WriteShort(hops, header, offset); offset += 2; NumberSerializer.WriteShort(ttl, header, offset); offset += 2; offset += source.CopyTo(header, offset); offset += dest.CopyTo(header, offset); NumberSerializer.WriteShort((short)options, header, offset); offset += 2; _data = MemBlock.Reference(header, 0, offset); }
public AHHeader(short hops, short ttl, Address source, Address dest, ushort options) { //Make the header part: byte[] header = new byte[ LENGTH ]; int offset = 0; //Write hops: NumberSerializer.WriteShort(hops, header, offset); Hops = hops; offset += 2; NumberSerializer.WriteShort(ttl, header, offset); Ttl = ttl; offset += 2; _src = source; offset += source.CopyTo(header, offset); _dest = dest; offset += dest.CopyTo(header, offset); Opts = options; NumberSerializer.WriteShort((short)options, header, offset); offset += 2; _data = MemBlock.Reference(header, 0, offset); }
/** * @param hops Hops for this packet * @param ttl TTL for this packet * @param source Source Address for this packet * @param destination Destination Address for this packet * @param payload_prot AHPacket.Protocol of the Payload * @param payload buffer holding the payload * @param poff Offset to the zeroth byte of payload * @param len Length of the payload */ public AHPacket(short hops, short ttl, Address source, Address destination, ushort options, string payload_prot, byte[] payload, int poff, int len) { _hops = hops; _ttl = ttl; _source = source; _destination = destination; if( options == AHOptions.AddClassDefault ) { _options = GetDefaultOption( _destination ); } else { _options = options; } _pt = payload_prot; _type_length = NumberSerializer.GetByteCount(_pt); int total_size = 47 + _type_length + len; byte[] buffer = new byte[ total_size ]; int off = 0; buffer[off] = (byte)Packet.ProtType.AH; off += 1; NumberSerializer.WriteShort(_hops, buffer, off); off += 2; NumberSerializer.WriteShort(_ttl, buffer, off); off += 2; _source.CopyTo(buffer, off); off += 20; _destination.CopyTo(buffer, off); off += 20; NumberSerializer.WriteShort((short)_options, buffer, off); off += 2; off += NumberSerializer.WriteString(_pt, buffer, off); Array.Copy(payload, poff, buffer, off, len); _buffer = MemBlock.Reference(buffer, 0, total_size); }