| Structure SilcClientConnectionParams
 
 NAME
 
    typedef struct { ... } SilcClientConnectionParams;
DESCRIPTION
    Client connection parameters.  This can be filled by the application
    and given as argument to silc_client_connect_to_server,
    silc_client_connect_to_client, silc_client_key_exchange or
    silc_client_send_key_agreement.
SOURCE    typedef struct SilcClientConnectionParamsStruct {
      /* If this is provided the user's nickname in the network will be the
         string given here.  If it is given, it must be UTF-8 encoded.  If this
         string is not given, the user's username by default is used as nickname.
         The nickname may later be changed by using NICK command.  The maximum
         length for the nickname string is 128 bytes. */
      char *nickname;
    
      /* If this key repository pointer is non-NULL then public key received in
         the key exchange protocol will be verified from this repository.  If
         this is not provided then the `verify_public_key' client operation will
         be called back to application.  If the boolean `verify_notfound' is set
         to TRUE then the `verify_public_key' client operation will be called
         in case the public key is not found in `repository'.  Only public keys
         added with at least SILC_SKR_USAGE_KEY_AGREEMENT in the repository will
         be checked, other keys will be ignored. */
      SilcSKR repository;
      SilcBool verify_notfound;
    
      /* Authentication data.  Application may set here the authentication data
         and authentication method to be used in connecting.  If `auth_set'
         boolean is TRUE then authentication data is provided by application.
         If the authentication method is public key authentication then the key
         pair given as argument when connecting will be used and `auth' field
         is NULL.  If it is passphrase authentication, it can be provided in
         `auth' and `auth_len' fields.  If `auth_set' is FALSE
         the `get_auth_method' client operation will be called to get the
         authentication method and data from application. */
      SilcBool auth_set;
      SilcAuthMethod auth_method;
      void *auth;
      SilcUInt32 auth_len;
    
      /* If this boolean is set to TRUE then the connection will use UDP instead
         of TCP.  If UDP is set then also the next `local_ip' and `local_port'
         must be set. */
      SilcBool udp;
    
      /* The `local_ip' specifies the local IP address used with the connection.
         It must be non-NULL if `udp' boolean is TRUE.  If the `local_port' is
         non-zero it will be used as local port with UDP connection.  The remote
         host will also send packets to the specified address and port.  If the
         `bind_ip' is non-NULL a listener is bound to that address instead of
         `local_ip'. */
      char *local_ip;
      char *bind_ip;
      int local_port;
    
      /* If this boolean is set to TRUE then the key exchange is done with
         perfect forward secrecy. */
      SilcBool pfs;
    
      /* If this boolean is set to TRUE then connection authentication protocol
         is not performed during connecting.  Only key exchange protocol is
         performed.  This usually must be set to TRUE when connecting to another
         client, but must be FALSE with server connections. */
      SilcBool no_authentication;
    
      /* The SILC session detachment data that was returned in the `command_reply'
         client operation for SILC_COMMAND_DETACH command.  If this is provided
         here the client library will attempt to resume the session in the network.
         After the connection is created and the session has been resumed the
         client will receive SILC_COMMAND_NICK command_reply for the client's
         nickname in the network and SILC_COMMAND_JOIN command reply for all the
         channels that the client has joined in the network.  It may also receive
         SILC_COMMAND_UMODE command reply to set user's mode on the network. */
      unsigned char *detach_data;
      SilcUInt32 detach_data_len;
    
      /* Connection timeout.  If non-zero, the connection will timeout unless
         the SILC connection is completed in the specified amount of time. */
      SilcUInt32 timeout_secs;
    
      /* Rekey timeout in seconds.  The client will perform rekey in this
         time interval.  If set to zero, the default value will be used
         (3600 seconds, 1 hour). */
      SilcUInt32 rekey_secs;
    
      /* If this is set to TRUE then the client will ignore all incoming
         Requested Attributes queries and does not reply anything back.  This
         usually leads into situation where server does not anymore send
         the queries after seeing that client does not reply anything back.
         If your application does not support Requested Attributes or you do
         not want to use them set this to TRUE.  See SilcAttribute and
         silc_client_attribute_add for more information on attributes. */
      SilcBool ignore_requested_attributes;
    
      /* User context for SilcClientConnection.  If non-NULL this context is
         set to the 'context' field in SilcClientConnection when the connection
         context is created. */
      void *context;
    } SilcClientConnectionParams;
 
 
 
 |