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, и она вызвается всякий раз, когда генерируется сообщения для лога.