



@deftypefun {int} {gnutls_init} (gnutls_session_t * @var{session}, unsigned int @var{flags})
@var{session}: is a pointer to a @code{gnutls_session_t}  type.

@var{flags}: indicate if this session is to be used for server or client.

This function initializes the current session to null. Every
session must be initialized before use, so internal structures can
be allocated.  This function allocates structures which can only
be free'd by calling @code{gnutls_deinit()} .  Returns @code{GNUTLS_E_SUCCESS}  (0) on success.

 @code{flags} can be one of @code{GNUTLS_CLIENT} , @code{GNUTLS_SERVER} , @code{GNUTLS_DATAGRAM} ,
@code{GNUTLS_NONBLOCK}  or @code{GNUTLS_NOSIGNAL}  (since 3.4.2).

The flag @code{GNUTLS_NO_REPLAY_PROTECTION}  will disable any 
replay protection in DTLS mode. That must only used when 
replay protection is achieved using other means.

Note that since version 3.1.2 this function enables some common
TLS extensions such as session tickets and OCSP certificate status
request in client side by default. To prevent that use the @code{GNUTLS_NO_EXTENSIONS} 
flag.

@strong{Returns:} @code{GNUTLS_E_SUCCESS}  on success, or an error code.
@end deftypefun
