protected DHTTransportUDPContactImpl(
      boolean _is_local,
      DHTTransportUDPImpl _transport,
      InetSocketAddress _transport_address,
      InetSocketAddress _external_address,
      byte _protocol_version,
      int _instance_id,
      long _skew,
      byte _generic_flags)
      throws DHTTransportException {
    transport = _transport;
    transport_address = _transport_address;
    external_address = _external_address;
    protocol_version = _protocol_version;

    if (transport_address.equals(external_address)) {

      external_address = transport_address;
    }

    instance_id = _instance_id;
    skew = _skew;
    generic_flags = _generic_flags;

    if (transport_address == external_address
        || transport_address.getAddress().equals(external_address.getAddress())) {

      id = DHTUDPUtils.getNodeID(external_address, protocol_version);
    }

    createNetworkPositions(_is_local);
  }
 public void createNetworkPositions(boolean is_local) {
   network_positions =
       DHTNetworkPositionManager.createPositions(
           id == null ? DHTUDPUtils.getBogusNodeID() : id, is_local);
 }