Exemple #1
0
        /// <summary>Constructor for a TunnelEdge, RemoteID == -1 for out bound.</summary>
        public TunnelEdge(IEdgeSendHandler send_handler, TunnelTransportAddress local_ta,
                          TunnelTransportAddress remote_ta, IForwarderSelector ias, List <Connection> overlap,
                          int remote_id) : base(send_handler, remote_id != -1)
        {
            _remote_id = remote_id;
            lock (_rand) {
                LocalID = _rand.Next();
            }
            byte[] bid = new byte[8];
            NumberSerializer.WriteInt(LocalID, bid, 0);
            NumberSerializer.WriteInt(_remote_id, bid, 4);
            _mid       = MemBlock.Reference(bid);
            _local_ta  = local_ta;
            _remote_ta = remote_ta;
            _tunnels   = new List <Connection>(overlap);
            _ias       = ias;
            _ias.Update(_tunnels);

            AHHeader ahh = new AHHeader(1, 20, local_ta.Target, remote_ta.Target,
                                        AHHeader.Options.Exact);
            ICopyable header = new CopyList(PType.Protocol.AH, ahh,
                                            PType.Protocol.Tunneling);

            Header = MemBlock.Copy(header);
        }
Exemple #2
0
    /// <summary>Constructor for a RelayEdge, RemoteID == -1 for out bound.</summary>
    public RelayEdge(IEdgeSendHandler send_handler, RelayTransportAddress local_ta,
        RelayTransportAddress remote_ta, IForwarderSelector ias, List<Connection> overlap,
        int remote_id) : base(send_handler, remote_id != -1)
    {
      _remote_id = remote_id;
      lock(_rand) {
        LocalID = _rand.Next();
      }
      byte[] bid = new byte[8];
      NumberSerializer.WriteInt(LocalID, bid, 0);
      NumberSerializer.WriteInt(_remote_id, bid, 4);
      _mid = MemBlock.Reference(bid);
      _local_ta = local_ta;
      _remote_ta = remote_ta;
      _tunnels = new List<Connection>(overlap);
      _ias = ias;
      _ias.Update(_tunnels);

      AHHeader ahh = new AHHeader(1, 20, local_ta.Target, remote_ta.Target,
          AHHeader.Options.Exact);
      ICopyable header = new CopyList(PType.Protocol.AH, ahh,
          PType.Protocol.Relaying);
      Header = MemBlock.Copy(header);
    }
Exemple #3
0
 /// <summary>Outgoing edge, since we don't know the RemoteID yet!</summary>
 public RelayEdge(IEdgeSendHandler send_handler, RelayTransportAddress local_ta,
     RelayTransportAddress remote_ta, IForwarderSelector ias, List<Connection> overlap) :
   this(send_handler, local_ta, remote_ta, ias, overlap, -1)
 {
 }
Exemple #4
0
 /// <summary>Outgoing edge, since we don't know the RemoteID yet!</summary>
 public TunnelEdge(IEdgeSendHandler send_handler, TunnelTransportAddress local_ta,
                   TunnelTransportAddress remote_ta, IForwarderSelector ias, List <Connection> overlap) :
     this(send_handler, local_ta, remote_ta, ias, overlap, -1)
 {
 }