示例#1
0
 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);
 }
示例#2
0
  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);
  }
示例#3
0
文件: AHPacket.cs 项目: xujyan/brunet
    /**
     * @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);
    }