| uIP 1.0 | 
uIP конфигурируется файлом uipopt.h, который сопровождает проект. Подробнее...
| Файлы | |
| файл | uip-conf.h | 
| Пример файла конфигурации uIP. | |
| файл | uipopt.h | 
| Опции конфигурирования для uIP. | |
| Опции конфигурации, специфичные для проекта | |
| uIP имеет несколько опций конфигурации, которые можно переназначить для каждого отдельного проекта. Они сохраняются в специфичном для проекта файле конфигурации uip-conf.h, и все имена конфигурации имеют префикс UIP_CONF. | |
| typedef uint8_t | u8_t | 
| 8-разрядный тип данных | |
| typedef uint16_t | u16_t | 
| 16-разрядный тип данных | |
| typedef unsigned short | uip_stats_t | 
| Тип данных статистики | |
| #define | UIP_CONF_MAX_CONNECTIONS | 
| Максимальное количество соединений TCP. | |
| #define | UIP_CONF_MAX_LISTENPORTS | 
| Максимальное количество прослушиваемых портов TCP. | |
| #define | UIP_CONF_BUFFER_SIZE | 
| Размер буфера uIP. | |
| #define | UIP_CONF_BYTE_ORDER | 
| Порядок байт CPU. | |
| #define | UIP_CONF_LOGGING | 
| Включен лог или нет. | |
| #define | UIP_CONF_UDP | 
| Подключена поддрежка UDP или нет. | |
| #define | UIP_CONF_UDP_CHECKSUMS | 
| Включено вычисление контролной суммы UDP или нет. | |
| #define | UIP_CONF_STATISTICS | 
| Собитается статистика uIP или нет. | |
| Статические опции конфигурации | |
| Эти опции конфигурации могут использоваться для статической установки адреса IP, но только в том случае, если UIP_FIXEDADDR установлен в 1. Опции конфигурации для отдельного сетевого узла включают адрес IP, маску подсети (netmask) а адрес шлюза по умолчанию (default router), как и адрес Ethernet (MAC-адрес). Маска подсети, адрес шлюза и адрес Ethernet нужны только тогда, когда uIP будет работать через Ethernet. Все это можно поменять, чтобы настройки удовлетворяли Вашему проекту. | |
| #define | UIP_FIXEDADDR | 
| Определяет - должен ли использоваться в uIP фиксированный адрес IP, или нет. | |
| #define | UIP_PINGADDRCONF | 
| Назначение адреса IP для ping. | |
| #define | UIP_FIXEDETHADDR | 
| Указывает, должен ли модуль uIP ARP быть скомпилирован с фиксированным адресом Ethernet MAC, или нет. | |
| Опции конфигурации IP | |
| #define | UIP_TTL 64 | 
| IP TTL (время жизни, time to live) пакетов IP, отправляемых uIP. | |
| #define | UIP_REASSEMBLY | 
| Включить поддержку пересборки пакетов IP (IP packet reassembly). | |
| #define | UIP_REASS_MAXAGE 40 | 
| Максимальное время ожидание фрагмента IP в буфере пересборки, после истечения которого фрагмент будет отброшен. | |
| Опции конфигурации UDP | |
| #define | UIP_UDP | 
| Переключает, должна компилироваться поддержка UDP или нет. | |
| #define | UIP_UDP_CHECKSUMS | 
| Переключает, должна использоваться контрольная сумма UDP или нет. | |
| #define | UIP_UDP_CONNS | 
| Максимальное количество конкурирующих соединений UDP. | |
| Опции конфигурирования TCP | |
| Имя функции, которая должна быть вызвана, когда приходят датаграммы UDP. | |
| #define | UIP_ACTIVE_OPEN | 
| Определяет, компилируется ли поддержка открытия соединения из uIP, или нет. | |
| #define | UIP_CONNS | 
| Максимальное количестов одновременно открытых соединений TCP. | |
| #define | UIP_LISTENPORTS | 
| Максимальное количество одновременно открытых портов TCP. | |
| #define | UIP_URGDATA | 
| Определяет, должна ли компилироваться поддержка оповещения о TCP urgent data, или нет. | |
| #define | UIP_RTO 3 | 
| Начальный таймаут ретрансмиссии, подстчитывамый в импульсах таймера. | |
| #define | UIP_MAXRTX 8 | 
| Максимальное количество ретрансляций сегмента до разрыва соединения. | |
| #define | UIP_MAXSYNRTX 5 | 
| The maximum number of times a SYN segment should be retransmitted before a connection request should be deemed to have been unsuccessful. | |
| #define | UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) | 
| Максимальный размер сегмента TCP. | |
| #define | UIP_RECEIVE_WINDOW | 
| Размер представляемого окна приема. | |
| #define | UIP_TIME_WAIT_TIMEOUT 120 | 
| Как долго соединение должно находиться в состоянии TIME_WAIT. | |
| Опции конфигурации ARP | |
| #define | UIP_ARPTAB_SIZE | 
| Размер таблицы (кэша) ARP. | |
| #define | UIP_ARP_MAXAGE 120 | 
| Максимальное время жизни записи таблицы ARP, измеряемое в единицах 10 секунд. | |
| Основные опции конфигурации | |
| void | uip_log (char *msg) | 
| Печатает в лог сообщения uIP. | |
| #define | UIP_BUFSIZE | 
| Размер буфера пакета uIP. | |
| #define | UIP_STATISTICS | 
| Определяет, должна ли компилироваться поддержка сбора статистики. | |
| #define | UIP_LOGGING | 
| Определяет, должен ли компилироваться вывод в лог определенных событий. | |
| #define | UIP_BROADCAST | 
| Поддержка широковещания (broadcast). | |
| #define | UIP_LLH_LEN | 
| Длина заголовка уровня линка. | |
| Конфигурация архитектуры CPU | |
| Конфигурация архитектуры CPU - место, где указывается endianess (порядок хранения байт в памяти) для CPU, на котором работает uIP. Большинство CPU, используемых сегодня, используют little endian (кроме разве что платформ MCS51 и Motorola, где применяется big endian). Макрос BYTE_ORDER должен быть изменен, чтобы отразить архитекуру CPU, на которой работает uIP. | |
| #define | UIP_BYTE_ORDER | 
| Порядок байт для архитектуры CPU, на которой работает uIP. | |
| Конфигурации, специфичные для приложения | |
| Приложение uIP реализуестя как одна функция приложения, которая вызывается из uIP при возникновении любого события TCP/IP. Имя этой функции должно быть зарегистрировано с uIP во время компиляции, используя определение UIP_APPCALL. Приложения uIP могут сохранять свое состояние (application state) в структуре uip_conn путем указания типа структуры приложения через typedef для типа uip_tcp_appstate_t и uip_udp_appstate_t. Файл, содержащий определения, должен быть подключен в файле uipopt.h. Следующий пример показывает, как это должно выглядеть. void httpd_appcall(void); #define UIP_APPCALL httpd_appcall struct httpd_state { u8_t state; u16_t count; char *dataptr; char *script; }; typedef struct httpd_state uip_tcp_appstate_t | |
| typedef struct smtp_state | uip_tcp_appstate_t | 
| Тип состояния приложнения (application state), который должен быть сохранен в структуре uip_conn. | |
| typedef int | uip_udp_appstate_t | 
| Тип состояния приложения, который сохраняется в структуре uip_conn. | |
| #define | UIP_APPCALL smtp_appcall | 
| Имя функции приложения, которую uIP должна вызвать в ответ на события TCP/IP. | |
uIP конфигурируется файлом uipopt.h, который сопровождает проект.
Этот файл содержит все опции времени компиляции для uIP, и он должен быть настроен под специфику каждого проекта. Распространяемый пакет uIP содержит документированный пример "uipopt.h" который может скопирован и модифицирован для каждого проекта.
| #define UIP_ACTIVE_OPEN | 
Определяет, компилируется ли поддержка открытия соединения из uIP, или нет.
Если приложения, которые работают поверх uIP в этом проекте, не нуждаются в открытии исходящих соединений TCP, то эта опция конфигурации может быть выключена, что уменьшит размер кода uIP.
| #define UIP_ARP_MAXAGE 120 | 
Максимальное время жизни записи таблицы ARP, измеряемое в единицах 10 секунд.
Значение UIP_ARP_MAXAGE 120 соответствует 20 минутам (значение по умолчанию для BSD).
См. определение в файле uipopt.h строка 359
Используется в uip_arp_timer().
| #define UIP_ARPTAB_SIZE | 
Размер таблицы (кэша) ARP.
Эта опция должна быть установлена в большее значение, если этот узел сети будет иметь множество соединений из локальной сети.
См. определение в файле uipopt.h строка 350
Используется в uip_arp_init(), uip_arp_out() и uip_arp_timer().
| #define UIP_BROADCAST | 
| #define UIP_BUFSIZE | 
Размер буфера пакета uIP.
Размер буфера пакета uIP не должен быть меньше 60 байт, и его не нужно делать больше 1500 байт. Уменьшение размера приводит к снижению скорости обмена TCP, увеличение размера увеличивает скорость TCP.
См. определение в файле uipopt.h строка 380
Используется в uip_split_output().
| #define UIP_BYTE_ORDER | 
| #define UIP_CONNS | 
Максимальное количестов одновременно открытых соединений TCP.
Поскольку память под соединения TCP выделяется статически, подкрутка этой опции конфигурации вниз приведет к уменьшению затрат RAM. Каждое соединение TCP требует примерно 30 байт памяти.
См. определение в файле uipopt.h строка 246
Используется в uip_connect() и uip_init().
| #define UIP_FIXEDADDR | 
Определяет - должен ли использоваться в uIP фиксированный адрес IP, или нет.
Если uIP должна использовать фиксированный адрес IP, то его установка задается в файле uipopt.h. Если нет, то вместо этого должны использоваться макросы uip_setdraddr() и uip_setnetmask().
| #define UIP_FIXEDETHADDR | 
Указывает, должен ли модуль uIP ARP быть скомпилирован с фиксированным адресом Ethernet MAC, или нет.
Если эта опция конфигурации установлена в 0, то может использоваться макрос uip_setethaddr() для того, чтобы указать Ethernet-адрес (MAC) во время выполнения кода (run-time).
| #define UIP_LISTENPORTS | 
Максимальное количество одновременно открытых портов TCP.
Каждый открытый для прослушивания порт TCP требует 2 байта памяти.
См. определение в файле uipopt.h строка 260
Используется в uip_init(), uip_listen() и uip_unlisten().
| #define UIP_LLH_LEN | 
Длина заголовка уровня линка.
Это смещение в uip_buf, где может быть найден заголовок IP. Для Ethernet это значение должно быть установлено на 14. Для For SLIP это значение должно быть установлено на 0.
См. определение в файле uipopt.h строка 448
Используется в uip_arp_out(), uip_ipchksum() и uip_split_output().
| #define UIP_LOGGING | 
| #define UIP_MAXRTX 8 | 
| #define UIP_MAXSYNRTX 5 | 
| #define UIP_PINGADDRCONF | 
Назначение адреса IP для ping.
uIP использует пакеты "ping" для установки своего собственного адреса, если эта опция установлена. Если так, то uIP начнет работу с пустого адреса IP, и адрес назначения первого же пришедшего пакета "ping" (ICMP echo) будет использоваться для установки адреса IP своего хоста.
| #define UIP_REASSEMBLY | 
Включить поддержку пересборки пакетов IP (IP packet reassembly).
uIP поддерживает пересборку фрагментированных пакетов IP. Эта фича требует дополнительное количество RAM, чтобы иметь буфер пересборки, и код подпрограмм для пересборки занимает примерно 700 байт. Буфер пересборки имеет такой же размер, как и буфер uip_buf (размер, сконфигурированный макроопределением UIP_BUFSIZE).
| #define UIP_RECEIVE_WINDOW | 
| #define UIP_RTO 3 | 
Начальный таймаут ретрансмиссии, подстчитывамый в импульсах таймера.
Это значение менять не надо.
См. определение в файле uipopt.h строка 282
Используется в uip_connect().
| #define UIP_STATISTICS | 
| #define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) | 
Максимальный размер сегмента TCP.
Этот параметр не должен устанавливатся больше, чем UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN.
См. определение в файле uipopt.h строка 306
Используется в uip_connect().
| #define UIP_TIME_WAIT_TIMEOUT 120 | 
| #define UIP_TTL 64 | 
IP TTL (время жизни, time to live) пакетов IP, отправляемых uIP.
Эта настройка обычно не должна меняться.
См. определение в файле uipopt.h строка 143
Используется в uip_udp_new().
| #define UIP_UDP_CHECKSUMS | 
| #define UIP_URGDATA | 
| typedef uint16_t u16_t | 
16-разрядный тип данных
Этот typedef задает 16-битный тип данных, используемый в uIP.
См. определение в файле uip-conf.h строка 77
| typedef uint8_t u8_t | 
8-разрядный тип данных
Этот typedef задает 8-битный тип данных, используемый в uIP.
См. определение в файле uip-conf.h строка 68
| typedef unsigned short uip_stats_t | 
Тип данных статистики
Этот typedef задает тип данных, который используется для хранения статистической информации uIP.
См. определение в файле uip-conf.h строка 87
| typedef uip_tcp_appstate_t | 
Тип состояния приложнения (application state), который должен быть сохранен в структуре uip_conn.
Это обычно структура, определенная через typedef для хранения информации, специфичной для приложения.
| typedef uip_udp_appstate_t | 
| void uip_log | ( | char * | msg | ) | 
Печатает в лог сообщения uIP.
Эта функция должна быть реализована в модуле, который использует uIP, и она вызвается всякий раз, когда генерируется сообщения для лога.
 1.7.4
 1.7.4