# Socket Parameters

> The socket parameters used by eXtremeDB network communications are defined by the following structure defined in header file `mconet.h`:

>         typedef struct mco_sock_params_t_
>         {
>             int             mode;       /* bit set of MCO_SOCK_OPEN_MODE */
>             int             linger;
>             int             sndbuf;     /* size of socket send buffer in bytes */
>             int             rcvbuf;     /* size of socket receive buffer in bytes */

>     	int             compression_level; /* level of compression */
>             MCO_SOCK_DOMAIN domain;     /* socket domain (may be flag in open_mode ?) */
>             MCO_SOCK_TYPE   type;       /* TCP / UDP )may be flag in open_mode ? */
>             const char     *mcast_addr; /* used only if type == MCO_SOCK_MCAST */
>             void           *ssl_params; /* used for SSL sockets when OpenSSL is supported */
>             MCO_RET         last_error; /* OUT : eXtremeDB's error code if mco_create_socket() has failed */
>             int             last_errno; /* OUT : value of errno if mco_create_socket() has failed */
>         } mco_sock_params_t;

> The `mode` element is a bitmask that can be set with a combination of the following values:

>         typedef enum MCO_SOCK_OPEN_MODE_E_
>         {
>             MCO_SOCK_NODELAY = 1,
>             MCO_SOCK_DO_NOT_REUSE_ADDRESS = 2,
>             MCO_SOCK_NON_BLOCKING = 4,
>             MCO_SOCK_KEEP_ALIVE = 8,
>             MCO_SOCK_DO_NOT_CLOEXEC = 16

>         } MCO_SOCK_OPEN_MODE;

> The `domain` element must be one of the following:

>         typedef enum MCO_SOCK_DOMAIN_E_
>         {
>             MCO_SOCK_INET_DOMAIN,    /* IPv4 or IPv6 */
>             MCO_SOCK_INETV4_DOMAIN,  /* IPv4 only */
>             MCO_SOCK_INETV6_DOMAIN,  /* IPv6 only */
>             MCO_SOCK_LOCAL_DOMAIN,
>             MCO_SOCK_SDP_DOMAIN

>         } MCO_SOCK_DOMAIN;

> The `type` element must be one of the following:

>         typedef enum MCO_SOCK_TYPE_E_
>         {
>             MCO_SOCK_STREAM,
>             MCO_SOCK_DGRAM,
>             MCO_SOCK_MCAST,

>         } MCO_SOCK_TYPE;