/***************************************************************************//**
  @addtogroup lip_tcp
  @{
  @file lip_sock.h
  @brief Файл содержит определения для сокетов модуля @ref lip_tcp, которые
         совместимы со стандартными определениями BSD-сокетов.

  @author Borisov Alexey <borisov@lcard.ru>
 ******************************************************************************/

#ifndef LIP_SOCK_H_
#define LIP_SOCK_H_

/** Тип для задания длины данных опции в функции lsock_set_opt() */
typedef int socklen_t;


/** Код уровня сокета. Для задания опций, которые относятся к самому сокету */
#define SOL_SOCKET      0xffff




/** Опция уровня #SOL_SOCKET, тип значения - int.

    Данная опция позволяет разрешить посылку keepalive пакета (по-умолчанию
    выключена) для проверки действительности соединения, по которому долгое
    время не было передач. При этом код, реализующий посылку таких передач
    должен быть разрешен определением #LIP_TCP_USE_KEEPALIVE в файле конфигурации
    lip_conf.h */
#define SO_KEEPALIVE    0x0008



/** Код TCP-протокола. Может использоваться в качестве уровня опций в
 *  lsock_set_opt() для установки опций TCP */
#define IPPROTO_TCP          6

/** Опция уровня #IPPROTO_TCP, тип значения - int.

    Данная опция позволяет отключить алгоритм Нейгла (Nagle), который запрещает
    передачу неполного пакета, пока не будут подтверждены все отправленные до
    этого данные. По-умолчанию этот алгоритм включен.
    Значение опции отличное от 0 запрещает алгоритм, а 0 разрешает */
#define TCP_NODELAY         0x0001


#endif /* LIP_SOCK_H_ */

/** @}*/
