DEENESPTFRRUARHIKOZHNL

TCP/IP Stack (TcpIp)

ModulTcpIp (TCP/IP Stack)
BSW-Modul-ID170
Standard-Header#include "TcpIp.h"
SWS-SpezifikationAUTOSAR_SWS_TcpIp.pdf
ClusterEthernet Services

Руководство по модулюСОЗДАНО ИИ

Обеспечивает в стеке Ethernet IP-коммуникацию через TCP и UDP вместе с управлением адресами для верхних уровней.
СОЗДАНО ИИ не проверено Модель: claude-opus-5-5 · Усилие: high · Температура: не регулируется · Промпт: 0a4cda5ef1d2 Происхождение Открытые вопросы (3)
Причинный якорь: R20-11 Действует с R20-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Обеспечивает в стеке Ethernet IP-коммуникацию через TCP и UDP вместе с управлением адресами для верхних уровней.

TcpIp обеспечивает в стеке Classic Ethernet протоколы IPv4 и IPv6 с ARP, NDP, ICMP и DHCP, а также UDP и TCP, обслуживая владельцев сокетов, таких как SoAd [SWS_TCPIP_00052]. Модуль EthSM управляет для каждого контроллера EthIf состояниями ONLINE, ONHOLD и OFFLINE. Контроллер переходит в ONLINE только тогда, когда ему назначен локальный адрес [SWS_TCPIP_00085]. Сокеты запрашиваются, связываются, а в случае TCP активно или пассивно соединяются; передача данных осуществляется через службы отправки и функции обратного вызова. Главное граничное условие: новые TCP-соединения TcpIp принимает только в состоянии ONLINE, а в состоянии ONHOLD отклоняет новые запросы на передачу.

В стеке Classic Ethernet модуль TcpIp отвечает за IP-коммуникацию. Он состоит из подмодулей для IPv4 (с ARP, ICMP, DHCP и Auto-IP), для IPv6 (с NDP, ICMPv6 и DHCPv6), а также для UDP, TCP и TLS ([SWS_TCPIP_00052], [SWS_TCPIP_00150]). В сторону верхнего уровня он обслуживает владельцев сокетов, то есть SoAd или CDD, с помощью собственных функций TcpIp_<Up>GetSocket и функций обратного вызова ([SWS_TCPIP_00220], [SWS_TCPIP_00222]). В сторону нижнего уровня он обменивается кадрами с EthIf [SWS_TCPIP_00029].

kontext EthSM EthSM TcpIp TcpIp IPv4 / ARP / ICMP / DHCP / Auto-IP IPv6 / NDP / ICMPv6 / DHCPv6 UDP / TCP / TLS / IPsec EthSM->TcpIp TcpIp_RequestComMode SoAd SoAd (Socket-Owner SOAD) SoAd->TcpIp TcpIp_SoAdGetSocket, TcpIp_Bind, TcpIp_TcpTransmit, TcpIp_UdpTransmit CDD CDD (Socket-Owner CDD) CDD->TcpIp TcpIp_<Up>GetSocket, Transmit-Dienste TcpIp->SoAd SoAd_RxIndication, SoAd_TxConfirmation, SoAd_TcpAccepted, SoAd_LocalIpAddrAssignmentChg TcpIp->CDD konfigurierte Callback-Namen EthIf EthIf TcpIp->EthIf EthIf_ProvideTxBuffer, EthIf_Transmit Det Det TcpIp->Det Ошибки разработки и времени выполнения Csm Csm (optional) TcpIp->Csm Krypto-Dienste (TLS) IdsM IdsM (optional) TcpIp->IdsM Sicherheitsereignisse NvM NvM-Block (TCPIP_STORE) TcpIp->NvM gespeicherte IP-Adressen EthIf->TcpIp TcpIp_RxIndication

Контекстная диаграмма: TcpIp находится между владельцами сокетов и EthIf, управляется EthSM и отправляет отчеты в DET и IdsM. Источники: [SWS_TCPIP_00220], [SWS_TCPIP_00070], [SWS_TCPIP_00361], SWS TcpIp с. 17

Состояние связи TcpIp ведет отдельно для каждого контроллера EthIf [SWS_TCPIP_00083]. EthSM запрашивает через TcpIp_RequestComMode одно из состояний: ONLINE, ONHOLD или OFFLINE [SWS_TCPIP_00070]. STARTUP и SHUTDOWN являются промежуточными состояниями и не могут быть запрошены [SWS_TCPIP_00089]. ONLINE запускает назначение адресов. ONHOLD сохраняет сокеты и адреса, но не принимает запросы на передачу. OFFLINE закрывает сокеты ([SWS_TCPIP_00075], [SWS_TCPIP_00074], [SWS_TCPIP_00072]).

zustand Start Start OFFLINE TCPIP_STATE_OFFLINE Start->OFFLINE TcpIp_Init() STARTUP TCPIP_STATE_STARTUP OFFLINE->STARTUP RequestComMode(ONLINE) / Adresszuweisungen aktivieren STARTUP->OFFLINE RequestComMode(OFFLINE) / Zuweisungen abbrechen ONLINE TCPIP_STATE_ONLINE STARTUP->ONLINE erste Adresse zugewiesen / <Up>_LocalIpAddrAssignmentChg(ASSIGNED) ONHOLD TCPIP_STATE_ONHOLD ONLINE->ONHOLD RequestComMode(ONHOLD) / ...(ONHOLD), Kommunikation deaktivieren SHUTDOWN TCPIP_STATE_SHUTDOWN ONLINE->SHUTDOWN RequestComMode(OFFLINE) или все адреса освобождены / ...(UNASSIGNED), закрыть сокеты ONHOLD->ONLINE RequestComMode(ONLINE) / reaktivieren, ...(ASSIGNED) ONHOLD->SHUTDOWN RequestComMode(OFFLINE) / ...(UNASSIGNED) SHUTDOWN->OFFLINE Ressourcen freigegeben

Диаграмма состояний: контроллер переходит в ONLINE только после того, как ему назначен адрес. Переход в OFFLINE происходит через SHUTDOWN, в котором освобождаются ресурсы. Источники: [SWS_TCPIP_00085], [SWS_TCPIP_00077], [SWS_TCPIP_00087], SWS TcpIp с. 60

Адреса берутся из сконфигурированной таблицы локальных адресов. Они назначаются статически, через DHCP или как Link-Local, выбираются по приоритету и при необходимости сохраняются в NvM ([SWS_TCPIP_00099], [SWS_TCPIP_00065], [SWS_TCPIP_00127], [SWS_TCPIP_00219]). Об изменениях <Up_LocalIpAddrAssignmentChg> информирует верхний уровень [SWS_TCPIP_00229]. Сокеты запрашиваются и связываются с помощью TcpIp_Bind. TCP-соединения устанавливаются через TcpIp_TcpConnect или TcpIp_TcpListen ([SWS_TCPIP_00111], [SWS_TCPIP_00112], [SWS_TCPIP_00113]).

Передача выполняется асинхронно через TcpIp_TcpTransmit или синхронно через TcpIp_UdpTransmit. При использовании TCP верхний уровень передает данные напрямую или предоставляет их через <Up_CopyTxData> ([SWS_TCPIP_00124], [SWS_TCPIP_00120]). Принятые датаграммы TcpIp сопоставляет сокету на основе локального адреса и порта [SWS_TCPIP_00170]. Если MAC-адрес назначения отсутствует, TcpIpArpPacketQueueEnabled определяет, будет ли пакет помещен в очередь или отклонен [SWS_TCPIP_00192]. Ошибки времени выполнения, такие как таймауты, недоступные хосты или конфликты адресов, TcpIp передает в DET. В R20-11 для этого определены коды от 0x01 до 0x05 [SWS_TCPIP_00255]. Для защиты дополнительно используются TLS начиная с версии 1.2 и IPsec с IKEv2 ([SWS_TCPIP_00302], [SWS_TCPIP_00353]).

Роль в стеке Ethernet: посредник между владельцами сокетов и EthIf

TcpIp объединяет IP-коммуникацию электронного блока управления Classic в подмодулях [SWS_TCPIP_00052]. Для IPv4 требуются IP, ARP, ICMP, DHCPv4 (клиент и сервер), Auto-IP, UDP и TCP ([SWS_TCPIP_00053], [SWS_TCPIP_00056], [SWS_TCPIP_00058], [SWS_TCPIP_00057], [SWS_TCPIP_00061]). Для IPv6 добавляются IPv6, NDP, ICMPv6 и клиент DHCPv6 ([SWS_TCPIP_00160], [SWS_TCPIP_00164], [SWS_TCPIP_00166]). Три класса масштабируемости определяют состав: стек IPv4, стек IPv6 и Dual Stack SWS TcpIp с. 18. Для класса 3 полный состав является обязательным [SWS_TCPIP_00150].

В сторону верхнего уровня TcpIp обслуживает владельцев сокетов. Если TcpIpSocketOwnerUpperLayerType установлен в SOAD, функции обратного вызова называются SoAd_…. В случае CDD действуют сконфигурированные имена функций ([SWS_TCPIP_00220], [SWS_TCPIP_00221]). Каждый владелец получает собственную функцию TcpIp_<Up>GetSocket, и запрошенные таким образом сокеты принадлежат ему монопольно [SWS_TCPIP_00222].

В сторону нижнего уровня TcpIp принимает кадры через TcpIp_RxIndication [SWS_TCPIP_00029]. Передача выполняется через EthIf_Transmit, причем всегда с TxConfirmation = FALSE [SWS_TCPIP_00131]. Состоянием управляет EthSM через TcpIp_RequestComMode SWS EthSM с. 27. Опционально TcpIp использует службы CSM [SWS_TCPIP_00028] и сообщает о событиях безопасности в IdsM [SWS_TCPIP_00361]. Обзор интеграции представлен в SWS TcpIp с. 17.

kontext EthSM EthSM TcpIp TcpIp IPv4 / ARP / ICMP / DHCP / Auto-IP IPv6 / NDP / ICMPv6 / DHCPv6 UDP / TCP / TLS / IPsec EthSM->TcpIp TcpIp_RequestComMode SoAd SoAd (Socket-Owner SOAD) SoAd->TcpIp TcpIp_SoAdGetSocket, TcpIp_Bind, TcpIp_TcpTransmit, TcpIp_UdpTransmit CDD CDD (Socket-Owner CDD) CDD->TcpIp TcpIp_<Up>GetSocket, Transmit-Dienste TcpIp->SoAd SoAd_RxIndication, SoAd_TxConfirmation, SoAd_TcpAccepted, SoAd_LocalIpAddrAssignmentChg TcpIp->CDD konfigurierte Callback-Namen EthIf EthIf TcpIp->EthIf EthIf_ProvideTxBuffer, EthIf_Transmit Det Det TcpIp->Det Ошибки разработки и времени выполнения Csm Csm (optional) TcpIp->Csm Krypto-Dienste (TLS) IdsM IdsM (optional) TcpIp->IdsM Sicherheitsereignisse NvM NvM-Block (TCPIP_STORE) TcpIp->NvM gespeicherte IP-Adressen EthIf->TcpIp TcpIp_RxIndication

Контекстная диаграмма: TcpIp находится между владельцами сокетов (SoAd или CDD) и EthIf. Он управляется EthSM, сообщает об ошибках в DET, о событиях — в IdsM и опционально использует CSM. Источники: [SWS_TCPIP_00220], [SWS_TCPIP_00222], [SWS_TCPIP_00029], [SWS_TCPIP_00070], [SWS_TCPIP_00028], [SWS_TCPIP_00361], [SWS_TCPIP_00255], [SWS_TCPIP_00219], SWS TcpIp с. 17

Состояния контроллера: от TCPIP_STATE_OFFLINE к TCPIP_STATE_ONLINE

Модуль инициализируется с помощью TcpIp_Init и зависимой от реализации TcpIp_ConfigType ([SWS_TCPIP_00002], [SWS_TCPIP_00067]). TcpIp_MainFunction является точкой входа для планировщика [SWS_TCPIP_00026]. Интерпретация: предположительно, там выполняются процессы, управляемые по времени, такие как таймауты. Вопрос Q-77b083e447651768 (открытый) Спецификация говорит об этом только «Schedules the TCP/IP stack».

TcpIp ведет для каждого контроллера EthIf собственное состояние: OFFLINE, STARTUP, ONLINE, ONHOLD или SHUTDOWN [SWS_TCPIP_00083]. Если сохраненный запрос отличается от активного состояния, TcpIp инициирует необходимые шаги [SWS_TCPIP_00136].

  • Запрос ONLINE из состояния OFFLINE активирует сконфигурированные назначения адресов [SWS_TCPIP_00075]. Как только адрес назначен, контроллер переходит в ONLINE [SWS_TCPIP_00085].
  • ONHOLD сообщает для всех адресов TCPIP_IPADDR_STATE_ONHOLD. Сокеты и адреса сохраняются, однако новые запросы на передачу не принимаются ([SWS_TCPIP_00076], [SWS_TCPIP_00074]). Возврат в ONLINE снова сообщает TCPIP_IPADDR_STATE_ASSIGNED [SWS_TCPIP_00086].
  • Запрос OFFLINE или освобождение всех адресов сообщает TCPIP_IPADDR_STATE_UNASSIGNED и закрывает сокеты ([SWS_TCPIP_00077], [SWS_TCPIP_00072]). После освобождения ресурсов следует OFFLINE [SWS_TCPIP_00087].
zustand Start Start OFFLINE TCPIP_STATE_OFFLINE Start->OFFLINE TcpIp_Init() STARTUP TCPIP_STATE_STARTUP OFFLINE->STARTUP RequestComMode(ONLINE) / Adresszuweisungen aktivieren STARTUP->OFFLINE RequestComMode(OFFLINE) / Zuweisungen abbrechen ONLINE TCPIP_STATE_ONLINE STARTUP->ONLINE erste Adresse zugewiesen / <Up>_LocalIpAddrAssignmentChg(ASSIGNED) ONHOLD TCPIP_STATE_ONHOLD ONLINE->ONHOLD RequestComMode(ONHOLD) / ...(ONHOLD), Kommunikation deaktivieren SHUTDOWN TCPIP_STATE_SHUTDOWN ONLINE->SHUTDOWN RequestComMode(OFFLINE) или все адреса освобождены / ...(UNASSIGNED), закрыть сокеты ONHOLD->ONLINE RequestComMode(ONLINE) / reaktivieren, ...(ASSIGNED) ONHOLD->SHUTDOWN RequestComMode(OFFLINE) / ...(UNASSIGNED) SHUTDOWN->OFFLINE Ressourcen freigegeben

Диаграмма состояний: каждый контроллер EthIf имеет собственный конечный автомат. Запросить можно только ONLINE, ONHOLD и OFFLINE; STARTUP и SHUTDOWN являются промежуточными состояниями. Источники: [SWS_TCPIP_00075], [SWS_TCPIP_00085], [SWS_TCPIP_00076], [SWS_TCPIP_00086], [SWS_TCPIP_00077], [SWS_TCPIP_00087], [SWS_TCPIP_00088], SWS TcpIp с. 60 (иллюстрация из R25-11, переходы покрываются требованиями R20-11)

В состоянии STARTUP запрос OFFLINE прерывает текущие назначения [SWS_TCPIP_00088]. Если запрашивается STARTUP или SHUTDOWN, запрос отклоняется с E_NOT_OK [SWS_TCPIP_00089].

Типичный запуск происходит следующим образом: EthSM по запросу ComM запрашивает ONLINE SWS EthSM с. 42. Затем TcpIp сообщает назначенный адрес. После этого SoAd запрашивает сокеты и связывает их ([SWS_TCPIP_00229], SWS SoAd с. 20). Иллюстрация из R25-11 показывает также обратную связь через EthSM_TcpIpModeIndication SWS TcpIp с. 60. Предположительно, это справедливо и для R20-11. Вопрос Q-a5e26ad792c23d58 (открытый)

Запуск контроллера вплоть до привязанного сокетаComMEthSMTcpIpSoAdEthSM_RequestComMode(network,COMM_FULL_COMMUNICATION)TcpIp_RequestComMode(CtrlIdx,TCPIP_STATE_ONLINE)E_OK (Auftrag angenommen)TCPIP_STATE_STARTUP:Adresszuweisungen aktivierenасинхронно, например DHCP или Link-Localerste Adresse zugewiesen:TCPIP_STATE_ONLINESoAd_LocalIpAddrAssignmentChg(IpAddrId,TCPIP_IPADDR_STATE_ASSIGNED)EthSM_TcpIpModeIndication(CtrlIdx,TCPIP_STATE_ONLINE) (vermutlich)Use Case: SoAd открывает сокетное соединениеTcpIp_SoAdGetSocket(Domain, Protocol,SocketIdPtr)E_OK, SocketIdTcpIp_Bind(SocketId, LocalAddrId, PortPtr)E_OK

Диаграмма последовательности: только асинхронное назначение адреса переводит контроллер в ONLINE. После этого SoAd может запрашивать и связывать сокеты. Источники: [SWS_TCPIP_00070], [SWS_TCPIP_00075], [SWS_TCPIP_00085], [SWS_TCPIP_00229], [SWS_TCPIP_00018], [SWS_TCPIP_00015], SWS EthSM с. 42. Обратная связь с EthSM, вероятно, присутствует и в R20-11.

Локальные адреса и их назначение

Основой является таблица локальных адресов из TcpIpLocalAddr, которые во время выполнения сопоставляются контроллерам EthIf ([SWS_TCPIP_00099], SWS TcpIp с. 220). Обращение к записи осуществляется через TcpIp_LocalAddrIdType [SWS_TCPIP_00030]. Для каждой записи возможны несколько методов, например статический, DHCP или Link-Local ([SWS_TCPIP_00065], SWS TcpIp с. 224). Если становится доступным адрес с более высоким приоритетом, он заменяет прежний [SWS_TCPIP_00127].

То, как запускаются назначение и освобождение, зависит от сконфигурированного триггера:

  • При TCPIP_MANUAL доступностью управляют TcpIp_RequestIpAddrAssignment и TcpIp_ReleaseIpAddrAssignment ([SWS_TCPIP_00195], [SWS_TCPIP_00196]).
  • При TCPIP_AUTOMATIC оба вызова отклоняются с E_NOT_OK ([SWS_TCPIP_00198], [SWS_TCPIP_00199]).
  • При TCPIP_STORE модуль TcpIp принимает действительный адрес из блока NvM [SWS_TCPIP_00219]. TcpIp_ResetIpAssignment делает эти сохраненные адреса недействительными [SWS_TCPIP_00216].

О каждом изменении назначения сообщает <Up_LocalIpAddrAssignmentChg> со значением типа TcpIp_IpAddrStateType ([SWS_TCPIP_00229], [SWS_TCPIP_00082]). Новые адреса IPv4 модуль TcpIp объявляет через Gratuitous ARP [SWS_TCPIP_00093]. Адреса IPv6 он проверяет через Duplicate Address Detection [SWS_TCPIP_00159]. Для опроса служат TcpIp_GetIpAddr, TcpIp_GetPhysAddr и TcpIp_GetCtrlIdx ([SWS_TCPIP_00032], [SWS_TCPIP_00033], [SWS_TCPIP_00141]). При запросе опции DHCP, которая не установлена, служба чтения возвращает длину 0 [SWS_TCPIP_00237].

Сокеты: запрос, связывание, подключение, закрытие

Сокет запрашивается с указанием семейства адресов и протокола ([SWS_TCPIP_00018], [SWS_TCPIP_00009], [SWS_TCPIP_00010]). TcpIp_Bind связывает его с локальным адресом и портом [SWS_TCPIP_00111]. Это завершается ошибкой, если порт, протокол и адрес уже заняты или адрес не назначен ([SWS_TCPIP_00146], [SWS_TCPIP_00254]). При TCPIP_PORT_ANY стек сам выбирает порт в диапазоне от 49152 до 65535 SWS TcpIp с. 85.

Для TCP существует два пути к установлению соединения:

  • В качестве клиента TcpIp_TcpConnect устанавливает соединение асинхронно. Когда оно установлено, TcpIp вызывает <Up_TcpConnected> ([SWS_TCPIP_00112], [SWS_TCPIP_00227]).
  • В качестве сервера TcpIp_TcpListen переводит сокет в состояние ожидания (Listen) [SWS_TCPIP_00113]. Для каждого входящего соединения TcpIp создает отдельный сокет и сообщает о нем с помощью <Up_TcpAccepted> [SWS_TCPIP_00226]. Если верхний уровень возвращает E_NOT_OK, TcpIp закрывает соединение SWS SoAd с. 81.

Новые TCP-соединения TcpIp принимает только в состоянии ONLINE [SWS_TCPIP_00094].

Установление TCP-соединения в качестве клиента и в качестве сервераSoAdTcpIpEthIfaltКлиент (активное открытие)TcpIp_TcpConnect(SocketId, RemoteAddrPtr)E_OK (asynchron)EthIf_ProvideTxBuffer / EthIf_Transmit(SYN)TcpIp_RxIndication(...)(ответ удаленной стороны)SoAd_TcpConnected(SocketId)Сервер (пассивное открытие)TcpIp_TcpListen(SocketId, MaxChannels)E_OKTcpIp_RxIndication(...)(Verbindungsanfrage)Socket SocketIdConnected ableiten(не более MaxChannels параллельно)SoAd_TcpAccepted(SocketId,SocketIdConnected, RemoteAddrPtr)E_OK / E_NOT_OK (закрыть соединение)

Диаграмма последовательности: клиент получает подтверждение через <Up_TcpConnected>. Сервер получает для каждого соединения производный сокет, который верхний уровень может принять или отклонить. Источники: [SWS_TCPIP_00022], [SWS_TCPIP_00023], [SWS_TCPIP_00226], [SWS_TCPIP_00227], SWS TcpIp с. 129 (более поздняя иллюстрация дополнительно содержит LSduR, который здесь опущен), SWS TcpIp с. 107

TcpIp_Close завершает TCP-соединение штатным образом. С Abort = TRUE она немедленно прерывает его с помощью RST. Для UDP ресурсы освобождаются немедленно ([SWS_TCPIP_00109], [SWS_TCPIP_00110]). О таких событиях, как сброс, FIN или закрытие, сообщает <Up_TcpIpEvent> [SWS_TCPIP_00144]. С помощью TcpIp_ChangeParameter можно изменять параметры сокета, например окно приема, приоритет кадра, алгоритм Нагла, фильтр опций TCP или контрольную сумму UDP ([SWS_TCPIP_00126], [SWS_TCPIP_00266], [SWS_TCPIP_00279]).

Пути данных: отправка, прием, разрешение адресов

TcpIp_TcpTransmit работает асинхронно. Если DataPtr задан, она принимает данные из этого линейного буфера. Если DataPtr равен NULL_PTR, она запрашивает данные через <Up_CopyTxData>. При ForceRetrieve = TRUE это ровно AvailableLength байт, при FALSE — возможно, меньше ([SWS_TCPIP_00124], [SWS_TCPIP_00125], [SWS_TCPIP_00228]). Для TCP модуль TcpIp вызывает <Up_TxConfirmation> только после того, как противоположная сторона подтвердила прием ([SWS_TCPIP_00225], SWS SoAd с. 86). TcpIp_UdpTransmit, напротив, отправляет синхронно и немедленно ([SWS_TCPIP_00025], [SWS_TCPIP_00120]).

Отправка TCP с прямым или косвенным предоставлением данныхSoAdTcpIpEthIfTcpIp_TcpTransmit(SocketId, DataPtr,AvailableLength, ForceRetrieve)altDataPtr != NULL_PTRПринять данные из линейного буфераDataPtr == NULL_PTRloopдо AvailableLength (ForceRetrieve = TRUE) или меньше (FALSE)SoAd_CopyTxData(SocketId, BufPtr, BufLength)BUFREQ_OKE_OKTcpIp_MainFunction()EthIf_ProvideTxBuffer(...)EthIf_Transmit(..., TxConfirmation = FALSE)TcpIp_RxIndication(...)(ACK удаленной стороны)SoAd_TxConfirmation(SocketId, Length)

Диаграмма последовательности: данные передаются напрямую или запрашиваются через функцию обратного вызова для копирования. Отправка в EthIf выполняется в контексте MainFunction, подтверждение поступает только после ACK от противоположной стороны. Источники: [SWS_TCPIP_00050], [SWS_TCPIP_00123], [SWS_TCPIP_00124], [SWS_TCPIP_00131], SWS TcpIp с. 109

При приеме IP-уровень сопоставляет каждую датаграмму записи в таблице локальных адресов [SWS_TCPIP_00169]. Затем UDP и TCP выбирают сокет на основе порта назначения и локального адреса ([SWS_TCPIP_00170], [SWS_TCPIP_00172]). Для существующих TCP-соединений дополнительно должны совпадать адрес источника и порт источника [SWS_TCPIP_00173]. Широковещательные рассылки UDP направляются во все подходящие сокеты, а сегменты TCP, направленные на широковещательные адреса, отбрасываются ([SWS_TCPIP_00171], [SWS_TCPIP_00174]). Фрагментированные датаграммы TcpIp собирает заново и может развязывать прием для этой цели ([SWS_TCPIP_00054], SWS TcpIp с. 131). Данные поступают на верхний уровень через <Up_RxIndication>. Когда он обработал данные TCP, TcpIp_TcpReceived снова открывает окно приема ([SWS_TCPIP_00223], [SWS_TCPIP_00115]).

Прием датаграммы вплоть до верхнего уровняEthIfTcpIpSoAdEthIf_MainFunctionRx()TcpIp_RxIndication(CtrlIdx, FrameType,IsBroadcast, PhysAddrPtr, DataPtr, LenByte)IP: сопоставить датаграмму с TcpIpAddrIdUDP/TCP: выбрать сокет по порту назначения и локальному адресуFragmente: Reassemblierung,Empfang ggf. entkoppeltSoAd_RxIndication(SocketId, RemoteAddrPtr,BufPtr, Length)optTCP-SocketTcpIp_TcpReceived(SocketId, Length)Увеличить окно приема

Диаграмма последовательности: принятый кадр сопоставляется сокету по локальному адресу и порту. В случае TCP квитирование от верхнего уровня освобождает окно приема. Источники: [SWS_TCPIP_00029], [SWS_TCPIP_00169], [SWS_TCPIP_00170], [SWS_TCPIP_00223], [SWS_TCPIP_00115], SWS TcpIp с. 108

Для отправки модулю TcpIp требуется MAC-адрес назначения, и он хранит его в таблице ARP:

  • Таблица ограничена TcpIpArpTableSizeMax записями [SWS_TCPIP_00090]. Неиспользуемые записи аннулируются через TcpIpArpTableEntryTimeout [SWS_TCPIP_00091].
  • Повторные запросы к одному и тому же назначению TcpIp подавляет в течение TcpIpArpRequestTimeout [SWS_TCPIP_00350].
  • В R20-11 каждый принятый IP-пакет обновляет таблицу [SWS_TCPIP_00092]. В более поздних релизах это привязано к условию TcpIpArpDefensiveProcessing = FALSE SWS TcpIp с. 29.
  • Если запись отсутствует, TcpIpArpPacketQueueEnabled определяет, будет ли пакет помещен в очередь или отклонен ([SWS_TCPIP_00191], [SWS_TCPIP_00192]). Для NDP действует аналогичный порядок [SWS_TCPIP_00193].

О каждом изменении таблицы ARP модуль TcpIp сообщает через <Up_PhysAddrTableChg> [SWS_TCPIP_00142]. Если кэш соседей (Neighbor Cache) полон, самая старая запись вытесняется [SWS_TCPIP_00264]. Опросы позволяют выполнять TcpIp_GetRemotePhysAddr и службы чтения кэша ([SWS_TCPIP_00138], [SWS_TCPIP_91002], [SWS_TCPIP_91001]).

adressaufloesung A IPv4-Paket an entfernten Host senden B Link-Layer-Adresse in ARP-Tabelle? A->B C Paket senden B->C да D Запустить разрешение адреса (не более одного запроса ARP на цель в течение TcpIpArpRequestTimeout) B->D нет E TcpIpArpPacketQueueEnabled? D->E F Paket einreihen, E_OK E->F TRUE G Sendeauftrag abweisen, E_NOT_OK E->G FALSE H ARP-Antwort empfangen: Tabelle aktualisieren, <Up>_PhysAddrTableChg(valid = TRUE) F->H H->C eingereihtes Paket (Interpretation)

Диаграмма деятельности: если при отправке отсутствует ARP-запись, пакет в зависимости от конфигурации ставится в очередь или отклоняется. Новые запросы к той же цели регулируются (дросселируются). Источники: [SWS_TCPIP_00191], [SWS_TCPIP_00192], [SWS_TCPIP_00350], [SWS_TCPIP_00142], SWS TcpIp с. 176. Интерпретация: поставленный в очередь пакет отправляется после успешного разрешения адреса.

Защита и фильтрация: TLS, IPsec, IdsM

Для TCP-соединений TcpIp поддерживает TLS согласно IETF RFC 5246. Версии ниже 1.2 отклоняются ([SWS_TCPIP_00300], [SWS_TCPIP_00302]). Идентификаторы PSK и текущее время предоставляются конфигурируемыми колбэками ([SWS_TCPIP_91014], [SWS_TCPIP_91012]). Криптографические операции выполняются через CSM ([SWS_TCPIP_00028], SWS TcpIp с. 251).

IPsec поддерживается с IKEv2, IKEv1 не поддерживается ([SWS_TCPIP_00352], [SWS_TCPIP_00353]). Каждая датаграмма сопоставляется с политикой и в зависимости от нее защищается, пропускается или отбрасывается ([SWS_TCPIP_00359], [SWS_TCPIP_00360]). Недопустимые заголовки расширения IPv6 приводят к скрытому отбрасыванию [SWS_TCPIP_00260]. Если установлен TcpIpEnableSecurityEventReporting, TcpIp сообщает о событиях безопасности в IdsM [SWS_TCPIP_00361].

Поведение при ошибке

Ошибки разработки, включая TCPIP_E_UNINIT, TCPIP_E_PARAM_POINTER, TCPIP_E_INV_ARG и TCPIP_E_ADDRINUSE, определены в [SWS_TCPIP_00042]. В числе прочего проверяются:

  • недопустимое семейство адресов при запросе сокета [SWS_TCPIP_00128],
  • недопустимый LocalAddrId при TcpIp_Bind [SWS_TCPIP_00147],
  • конфликтующие семейства адресов при TcpIp_GetIpAddr [SWS_TCPIP_00206],
  • недопустимые параметры служб опций DHCP [SWS_TCPIP_00243],
  • NULL_PTR в качестве адреса назначения при TcpIp_TcpConnect SWS TcpIp с. 86.

Некоторые отказы TcpIp возвращает как E_NOT_OK независимо от обнаружения ошибок, например, уже занятый порт или неподходящее семейство адресов ([SWS_TCPIP_00146], [SWS_TCPIP_00205]).

Об ошибках времени выполнения TcpIp сообщает через Det_ReportRuntimeError:

  • TCPIP_E_TIMEDOUT, если на SYN нет ответа, истекает таймаут keep-alive или исчерпаны попытки повтора [SWS_TCPIP_00256],
  • TCPIP_E_CONNREFUSED, TCPIP_E_HOSTUNREACH и TCPIP_E_PACKETTOBIG после соответствующих сообщений ICMP ([SWS_TCPIP_00257], [SWS_TCPIP_00258], [SWS_TCPIP_00259]),
  • TCPIP_E_DADCONFLICT при дублировании назначенного адреса [SWS_TCPIP_00282].

R20-11 определяет только коды от 0x01 до 0x05 [SWS_TCPIP_00255]. Коды TCPIP_E_TX_QUEUE_OVERRUN и TCPIP_E_TX_INTERNAL_PROCESSING_FAILED, добавленные в более поздних релизах, здесь не применяются SWS TcpIp с. 65.

Многие ошибочные ситуации обрабатываются скрыто, поскольку неподходящие пакеты просто отбрасываются. TcpIp_GetAndResetMeasurementData подсчитывает такие отброшенные пакеты и сбрасывает счетчики ([SWS_TCPIP_91006], [SWS_TCPIP_00296]). Если MAC-адрес не может быть разрешен, TcpIp сообщает TCPIP_E_PHYS_ADDR_MISS [SWS_TCPIP_00066]. Для целей за пределами собственной подсети TcpIp_GetRemotePhysAddr сразу возвращает TCPIP_E_NOT_OK [SWS_TCPIP_00139].

Дальнейшие подробные доказательства

Сгенерированное ИИ руководство на основе выдержек из спецификаций. Нормативными для R20-11 являются исключительно связанные требования; расхождения с другими релизами указаны отдельно.

TCP/IP Stack (TcpIp)

Provides IPv4/IPv6 networking, TCP/UDP sockets, ARP, ICMP, and DHCP services.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

функция TcpIp_Init [SWS_TCPIP_00002] 📄 PDF

void TcpIp_Init (const TcpIp_ConfigType* ConfigPtr);

This service initializes the TCP/ IP Stack. Tcp Ip_ Init may not block the start - up process for an indefinite amount of time. Caveats: The call of this service is mandatory before using the Tcp Ip instance for further processing.

функция TcpIp_Close [SWS_TCPIP_00017] 📄 PDF

Std_ReturnType TcpIp_Close (TcpIp_SocketIdType SocketId, boolean Abort);

By this API service the TCP/ IP stack is requested to close the socket and release all related resources.

функция TcpIp_TcpConnect [SWS_TCPIP_00022] 📄 PDF

Std_ReturnType TcpIp_TcpConnect (TcpIp_SocketIdType SocketId, const TcpIp_SockAddrType* RemoteAddrPtr);

B y this API service the TCP/ IP stack is requested to establish a TCP connection to the configured peer.

функция TcpIp_TcpListen [SWS_TCPIP_00023] 📄 PDF

Std_ReturnType TcpIp_TcpListen (TcpIp_SocketIdType SocketId, uint16 MaxChannels);

By this API service the TCP/ IP stack is requested to listen on the TCP socket specified by the socket identifier. Available v ia Tcp Ip.h

функция TcpIp_RequestComMode [SWS_TCPIP_00070] 📄 PDF

Std_ReturnType TcpIp_RequestComMode (uint8 CtrlIdx, TcpIp_StateType State);

By this API service the TCP/ IP stack is requested to change the Tcp Ip state of the communication network identified by Eth If controller index.

функция TcpIp_RequestIpAddrAssignment [SWS_TCPIP_00037] 📄 PDF

Std_ReturnType TcpIp_RequestIpAddrAssignment (TcpIp_LocalAddrIdType LocalAddrId, TcpIp_IpAddrAssignmentTypeType, const TcpIp_SockAddrType* LocalIpAddrPtr, uint8 Netmask, const TcpIp_SockAddrType* DefaultRouterPtr);

Service TcpIp_RequestIpAddrAssignment.

функция TcpIp_ReleaseIpAddrAssignment [SWS_TCPIP_00078] 📄 PDF

Std_ReturnType TcpIp_ReleaseIpAddrAssignment (TcpIp_LocalAddrIdType LocalAddrId);

By this API service the local IP address assignment for the IP address specified by Local Addr Id shall be released.

функция TcpIp_IcmpTransmit [SWS_TCPIP_00039] 📄 PDF

Std_ReturnType TcpIp_IcmpTransmit (TcpIp_LocalAddrIdType LocalIpAddrId, AUTO SAR CP R20 - of const TcpIp_SockAddrType* RemoteAddrPtr, uint8 Ttl, uint8Type, uint8 Code, uint16 DataLength, const uint8* DataPtr); ⚠️

Service TcpIp_IcmpTransmit.

функция TcpIp_IcmpV6Transmit [SWS_TCPIP_00187] 📄 PDF

Std_ReturnType TcpIp_IcmpV6Transmit (TcpIp_LocalAddrIdType LocalIpAddrId, const TcpIp_SockAddrType* RemoteAddrPtr, uint8 HopLimit, uint8Type, uint8 Code, uint16 DataLength, const uint8* DataPtr); ⚠️

By this API service the TCP/ IP stack sends an ICMPv6 message according to the specified parameters.

функция TcpIp_DhcpReadOption [SWS_TCPIP_00040] 📄 PDF

Std_ReturnType TcpIp_DhcpReadOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint8 Option, uint8* DataLength, uint8* DataPtr);

By this API service the TCP/ IP stack retrieves DHCP option data identified by parameter option for already received DHCP options.

функция TcpIp_DhcpV6ReadOption [SWS_TCPIP_00189] 📄 PDF

Std_ReturnType TcpIp_DhcpV6ReadOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint16 Option, uint16* DataLength, uint8* DataPtr);

By this API service the TCP/ IP stack retrieve s DHCPv6 option data identified by parameter option for already received DHCPv6 options.

функция TcpIp_DhcpWriteOption [SWS_TCPIP_00020] 📄 PDF

Std_ReturnType TcpIp_DhcpWriteOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint8 Option, uint8 DataLength, const uint8* DataPtr);

By this API service the TCP/ IP stack writes the DHCP option data identified by parameter option.

функция TcpIp_DhcpV6WriteOption [SWS_TCPIP_00190] 📄 PDF

Std_ReturnType TcpIp_DhcpV6WriteOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint16 Option, uint16 DataLength, const uint8* DataPtr);

By this API service the TCP/ IP stack writes the DHCPv6 option data identified by parameter option.

функция TcpIp_ChangeParameter [SWS_TCPIP_00016] 📄 PDF

Std_ReturnType TcpIp_ChangeParameter (TcpIp_SocketIdType SocketId, TcpIp_ParamIdType ParameterId, const uint8* ParameterValue);

By this API service the TCP/ IP stack is requested to change a parameter of a socket. E.g. the Nagle algorithm may be controlled by this API.

функция TcpIp_GetIpAddr [SWS_TCPIP_00032] 📄 PDF

Std_ReturnType TcpIp_GetIpAddr (TcpIp_LocalAddrIdType LocalAddrId, TcpIp_SockAddrType* IpAddrPtr, uint8* NetmaskPtr, TcpIp_SockAddrType* DefaultRouterPtr);

Service TcpIp_GetIpAddr.

функция TcpIp_GetPhysAddr [SWS_TCPIP_00033] 📄 PDF

Std_ReturnType TcpIp_GetPhysAddr (TcpIp_LocalAddrIdType LocalAddrId, uint8* PhysAddrPtr);

Obtains the physical source address used by the Eth If controller implicitly specif ied via Local Addr Id.

функция TcpIp_GetRemotePhysAddr [SWS_TCPIP_00137] 📄 PDF

TcpIp_ReturnType TcpIp_GetRemotePhysAddr (uint8 CtrlIdx, const TcpIp_SockAddrType* IpAddrPtr, uint8* PhysAddrPtr, boolean InitRes);

Tcp Ip_ Get Remote Phys Addr queries the IP/ physical address translation table specified by Ctrl Idx and returns the physical address related to the IP addres s specified by Ip Addr Ptr. In case no physical address can be retrieved and parameter init Res is TRUE, address resolution for the specified IP address is initiated on the local network.

функция TcpIp_GetCtrlIdx [SWS_TCPIP_00140] 📄 PDF

Std_ReturnType TcpIp_GetCtrlIdx (TcpIp_LocalAddrIdType LocalAddrId, uint8* CtrlIdxPtr);

Tcp Ip_ Get Ctrl Idx returns the index of the controller related to Local Addr Id.

функция TcpIp_GetArpCacheEntries [SWS_TCPIP_91002] 📄 PDF

Std_ReturnType TcpIp_GetArpCacheEntries (AUTO SAR CP R20 - of uint8 ctrlIdx, uint32* numberOfElements, TcpIp_ArpCacheEntryType* entryListPtr); ⚠️

Copies entries from the physic al address cache of the IPv4 instance that is active on the Eth If controller specified by ctrl Idx into a user provided buffer. The function will copy all or number Of

функция TcpIp_GetNdpCacheEntries [SWS_TCPIP_91001] 📄 PDF

Std_ReturnType TcpIp_GetNdpCacheEntries (uint8 ctrlIdx, uint32* numberOfElements, TcpIp_NdpCacheEntryType* entryListPtr);

Copies entries from the physic al address cache of the IPv6 instance that is active on the Eth If controller specified by ctrl Idx into a user provided buffer. The function will copy all or number Of

функция TcpIp_GetAndResetMeasurementData [SWS_TCPIP_91006] 📄 PDF

Std_ReturnType TcpIp_GetAndResetMeasurementData (TcpIp_MeasurementIdxType MeasurementIdx, boolean MeasurementResetNeeded, uint32* MeasurementDataPtr);

Allows to read and reset detailed measurement data for diagnostic purposes. Get all Measurement Idx's at once is not supported. TCPIP_ MEAS_ ALL shall only be used to reset all Measurement Idx's at once. A NULL_ PTR shall be provided for Measurement Data Ptr in this case.

функция TcpIp_UdpTransmit [SWS_TCPIP_00025] 📄 PDF

Std_ReturnType TcpIp_UdpTransmit (TcpIp_SocketIdType SocketId, const uint8* DataPtr, const TcpIp_SockAddrType* RemoteAddrPtr, uint16 TotalLength);

This service transmits data via UDP to a remote node. The transmission of the data is immediately performed with this function call by forwarding it to Eth If.

функция TcpIp_MainFunction [SWS_TCPIP_00026] 📄 PDF

void TcpIp_MainFunction (void);

Schedules the TCP/ IP stack. (Entry point for scheduling) AUTO SAR CP R20 - of Document ID : AUTOSAR_SWS_TcpIp

функция <Up_PhysAddrTableChg> [SWS_TCPIP_00143] 📄 PDF

void <Up_PhysAddrTableChg> (uint8 CtrlIdx, const TcpIp_SockAddrType* IpAddrPtr, const uint8* PhysAddrPtr, boolean valid);

This API is called by Tcp Ip in case of a change in the ARP/ NDP table related to the controller specified by Ctrl Idx.

функция <Up_RxIndication> [SWS_TCPIP_00223] 📄 PDF

void <Up_RxIndication> (TcpIp_SocketIdType SocketId, const TcpIp_SockAddrType* RemoteAddrPtr, const uint8* BufPtr, uint16 Length);

The TCP/ IP stack calls this primitive after the reception of data on a socket. The socket identifier along with configuration information determines which module is to be called.

функция <Up_TxConfirmation> [SWS_TCPIP_00225] 📄 PDF

void <Up_TxConfirmation> (TcpIp_SocketIdType SocketId, uint16 Length);

The TCP/ IP stack calls this function after the data has been acknowledged by the peer for TCP. Caveats: The upper layer might not be able to determine exactly which data bytes have been confirmed.

функция <Up_TcpAccepted> [SWS_TCPIP_00226] 📄 PDF

Std_ReturnType <Up_TcpAccepted> (TcpIp_SocketIdType SocketId, TcpIp_SocketIdType SocketIdConnected, const TcpIp_SockAddrType* RemoteAddrPtr);

This service gets called if the stack put a socket into the listen mode before (as server) and a peer connected to it (as client). In detail: T he TCP/ IP stack calls this function after a socket was set into the listen state with Tcp Ip_ Tcp Listen() and a TCP connection is requested by the peer.

функция <Up_TcpConnected> [SWS_TCPIP_00227] 📄 PDF

void <Up_TcpConnected> (TcpIp_SocketIdType SocketId);

This service gets called if the stack initiated a TCP connection before (as client) and the peer (the server) acknowledged the connection set up. In detail: The TCP/ IP stack calls this function after a socket was requested to connect with Tcp Ip_ Tcp Conn ect() and a TCP connection is confirmed by the peer. The parameter value of Socket Id equals the Socket Id value of the preceeding Tcp Ip_ Tcp Connect() call.

функция <Up_CopyTxData> [SWS_TCPIP_00228] 📄 PDF

BufReq_ReturnType <Up_CopyTxData> (TcpIp_SocketIdType SocketId, uint8* BufPtr, uint16 BufLength);

This service requests to copy data for transmission to the buffer indicated. This call is triggered by Tcp Ip_ Transmit(). Note: The call to _ Copy Tx Data() may happen in the context of Tcp Ip_ Transmit().

функция <Up_LocalIpAddrAssignmentChg> [SWS_TCPIP_00229] 📄 PDF

void <Up_LocalIpAddrAssignmentChg> (TcpIp_LocalAddrIdType IpAddrId, TcpIp_IpAddrStateType State);

This service gets called by the TCP/ IP stack if an IP address assignment changes (i.e. new address assigned or assigned address becomes invalid).

функция <Up_IcmpMsgHandler> [SWS_TCPIP_00270] 📄 PDF

void <Up_IcmpMsgHandler> (TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* RemoteAddrPtr, uint8 Ttl, uint8Type, uint8 Code, uint16 DataLength, uint8* DataPtr); ⚠️

By this API service the configured ICMP message handler function is called by the TCP/ IP stack on reception of a ICMP message which is not handled by the TCP/ IP stack.

функция <Up_DADAddressConflict> [SWS_TCPIP_91005] 📄 PDF

void <Up_DADAddressConflict> (TcpIp_LocalAddrIdType IpAddrId, const TcpIp_SockAddrType* IpAddrPtr, const uint8* LocalPhysAddrPtr, const uint8* RemotePhysAddrPtr);

This API is called by Tcp Ip in case the Duplicate Address Detection (DAD) is enabled and detecting a duplicate IP Address.

функция <Up_TlsGetCurrentTime> [SWS_TCPIP_91012] 📄 PDF

Std_ReturnType <Up_TlsGetCurrentTime> (uint32* CurrentTimeUtc);

This function queries the current time. This information will be requested when assembling the client hello message.

функция <Up_TlsServerGetPskIdentityHint> [SWS_TCPIP_91013] 📄 PDF

Std_ReturnType <Up_TlsServerGetPskIdentityHint> (TcpIp_SocketIdType SocketId, TcpIp_TlsConnectionIdType TlsConnectionId, uint16* IdentityHintLengthPtr, uint8* IdentityHintPtr);

Queries the Identity hint for a pr e - shared key ciphersuite. This information is transmitted by the TLS Server to provide its identification to the TLS client.

функция <Up_TlsClientGetPskIdentity> [SWS_TCPIP_91014] 📄 PDF

Std_ReturnType <Up_TlsClientGetPskIdentity> (TcpIp_SocketIdType SocketId, TcpIp_TlsConnectionIdType TlsConnectionId, uint16 PskIdentityHintLength, const uint8* PskIdentityHintPtr, uint16* PskKeyIdentityLengthPtr, uint8* PskKeyIdentityPtr, uint32* CsmKeyId);

Service .

функция <Up_TlsServerGetPskIdentity> [SWS_TCPIP_91015] 📄 PDF

Std_ReturnType <Up_TlsServerGetPskIdentity> (TcpIp_SocketIdType SocketId, TcpIp_TlsConnectionIdType TlsConnectionId, uint16 PskKeyIdentityLength, const uint8* PskKeyIdentityPtr, uint32* CsmKeyId);

This callback is used for the TLS server to provide the CSM key name according to the key identification that was selected by the TLS client. The TLS server must provide a Csm Key reference to a key that matches this key identification name.

тип TcpIp_SockAddrType [SWS_TCPIP_00012] 📄 PDF

Generic structure used by APIs to specify an IP address. (A specific address type can be derived from this structure via a cast to the specific struct type.)

тип TcpIp_SockAddrInetType [SWS_TCPIP_00013] 📄 PDF

This structure defines an IPv4 address type which can be derived from the generic address structure via cast.

тип TcpIp_SockAddrInet6Type [SWS_TCPIP_00014] 📄 PDF

This structure defines a IPv6 address type which can be derived from the generic address structure via cast. AUTO SAR CP R20 - of Document ID : AUTOSAR_SWS_TcpIp

тип TcpIp_LocalAddrIdType [SWS_TCPIP_00030] 📄 PDF

Address identification type for unique identification of a local IP address and Eth If Controller configured in the Tcp Ip module.

тип TcpIp_SocketIdType [SWS_TCPIP_00038] 📄 PDF

Socket identifier type for unique identification of a Tcp Ip stack socket. TCPIP_ SOCKETID_ INVALID shall specify an invalid socket handle.

тип TcpIp_TlsConnectionIdType [SWS_TCPIP_91011] 📄 PDF

TLS connection identifier type for unique identification of a TLS connection. TCPIP_ TLSCONNECTIONID_ INVALID shall specify an invalid TLS connection handle.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_TcpIp
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_TcpIp@rel:R20-11#74d4f015
Content hash
74d4f015
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_TcpIp.pdf#nameddest=SWS_TCPIP_00002

Карта тем

Инициализация и состояние

2

Обратные вызовы

1

Циклические

1

Подробный вид

Выберите элемент в оглавлении.

Инициализация и состояние

TcpIp_GetVersionInfo функция

Returns the version information.

void TcpIp_GetVersionInfo (Std_VersionInfoType* versioninfo);
TcpIp_Init функция

This service initializes the TCP/ IP Stack. Tcp Ip_ Init may not block the start - up process for an indefinite amount of time. Caveats: The call of this service is mandatory before using the Tcp Ip instance for further processing.

void TcpIp_Init (const TcpIp_ConfigType* ConfigPtr);

Сервисы · Get…

Allows to read and reset detailed measurement data for diagnostic purposes. Get all Measurement Idx's at once is not supported. TCPIP_ MEAS_ ALL shall only be used to reset all Measurement Idx's at once. A NULL_ PTR shall be provided for Measurement Data Ptr in this case.

Std_ReturnType TcpIp_GetAndResetMeasurementData (TcpIp_MeasurementIdxType MeasurementIdx, boolean MeasurementResetNeeded, uint32* MeasurementDataPtr);

Copies entries from the physic al address cache of the IPv4 instance that is active on the Eth If controller specified by ctrl Idx into a user provided buffer. The function will copy all or number Of

Std_ReturnType TcpIp_GetArpCacheEntries (AUTO SAR CP R20 - of uint8 ctrlIdx, uint32* numberOfElements, TcpIp_ArpCacheEntryType* entryListPtr); ⚠️
TcpIp_GetCtrlIdx функция

Tcp Ip_ Get Ctrl Idx returns the index of the controller related to Local Addr Id.

Std_ReturnType TcpIp_GetCtrlIdx (TcpIp_LocalAddrIdType LocalAddrId, uint8* CtrlIdxPtr);
TcpIp_GetIpAddr функция

Service TcpIp_GetIpAddr.

Std_ReturnType TcpIp_GetIpAddr (TcpIp_LocalAddrIdType LocalAddrId, TcpIp_SockAddrType* IpAddrPtr, uint8* NetmaskPtr, TcpIp_SockAddrType* DefaultRouterPtr);

Copies entries from the physic al address cache of the IPv6 instance that is active on the Eth If controller specified by ctrl Idx into a user provided buffer. The function will copy all or number Of

Std_ReturnType TcpIp_GetNdpCacheEntries (uint8 ctrlIdx, uint32* numberOfElements, TcpIp_NdpCacheEntryType* entryListPtr);
TcpIp_GetPhysAddr функция

Obtains the physical source address used by the Eth If controller implicitly specif ied via Local Addr Id.

Std_ReturnType TcpIp_GetPhysAddr (TcpIp_LocalAddrIdType LocalAddrId, uint8* PhysAddrPtr);

Tcp Ip_ Get Remote Phys Addr queries the IP/ physical address translation table specified by Ctrl Idx and returns the physical address related to the IP addres s specified by Ip Addr Ptr. In case no physical address can be retrieved and parameter init Res is TRUE, address resolution for the specified IP address is initiated on the local network.

TcpIp_ReturnType TcpIp_GetRemotePhysAddr (uint8 CtrlIdx, const TcpIp_SockAddrType* IpAddrPtr, uint8* PhysAddrPtr, boolean InitRes);

Сервисы · Dhcp…

TcpIp_DhcpReadOption функция

By this API service the TCP/ IP stack retrieves DHCP option data identified by parameter option for already received DHCP options.

Std_ReturnType TcpIp_DhcpReadOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint8 Option, uint8* DataLength, uint8* DataPtr);
TcpIp_DhcpV6ReadOption функция

By this API service the TCP/ IP stack retrieve s DHCPv6 option data identified by parameter option for already received DHCPv6 options.

Std_ReturnType TcpIp_DhcpV6ReadOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint16 Option, uint16* DataLength, uint8* DataPtr);

By this API service the TCP/ IP stack writes the DHCPv6 option data identified by parameter option.

Std_ReturnType TcpIp_DhcpV6WriteOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint16 Option, uint16 DataLength, const uint8* DataPtr);
TcpIp_DhcpWriteOption функция

By this API service the TCP/ IP stack writes the DHCP option data identified by parameter option.

Std_ReturnType TcpIp_DhcpWriteOption (TcpIp_LocalAddrIdType LocalIpAddrId, uint8 Option, uint8 DataLength, const uint8* DataPtr);

Сервисы · Tcp…

TcpIp_TcpConnect функция

B y this API service the TCP/ IP stack is requested to establish a TCP connection to the configured peer.

Std_ReturnType TcpIp_TcpConnect (TcpIp_SocketIdType SocketId, const TcpIp_SockAddrType* RemoteAddrPtr);
TcpIp_TcpListen функция

By this API service the TCP/ IP stack is requested to listen on the TCP socket specified by the socket identifier. Available v ia Tcp Ip.h

Std_ReturnType TcpIp_TcpListen (TcpIp_SocketIdType SocketId, uint16 MaxChannels);
TcpIp_TcpReceived функция

By this API service the reception of socket data is confirmed to the TCP/ IP stack.

Std_ReturnType TcpIp_TcpReceived (TcpIp_SocketIdType SocketId, uint32 Length);
TcpIp_TcpTransmit функция

Service TcpIp_TcpTransmit.

Std_ReturnType TcpIp_TcpTransmit (TcpIp_SocketIdType SocketId, const uint8* DataPtr, uint32 AvailableLength, boolean ForceRetrieve);

Сервисы · Прочее

TcpIp_Bind функция

Service TcpIp_Bind.

Std_ReturnType TcpIp_Bind (TcpIp_SocketIdType SocketId, TcpIp_LocalAddrIdType LocalAddrId, uint16* PortPtr);
TcpIp_ChangeParameter функция

By this API service the TCP/ IP stack is requested to change a parameter of a socket. E.g. the Nagle algorithm may be controlled by this API.

Std_ReturnType TcpIp_ChangeParameter (TcpIp_SocketIdType SocketId, TcpIp_ParamIdType ParameterId, const uint8* ParameterValue);
TcpIp_Close функция

By this API service the TCP/ IP stack is requested to close the socket and release all related resources.

Std_ReturnType TcpIp_Close (TcpIp_SocketIdType SocketId, boolean Abort);
TcpIp_IcmpTransmit функция

Service TcpIp_IcmpTransmit.

Std_ReturnType TcpIp_IcmpTransmit (TcpIp_LocalAddrIdType LocalIpAddrId, AUTO SAR CP R20 - of const TcpIp_SockAddrType* RemoteAddrPtr, uint8 Ttl, uint8Type, uint8 Code, uint16 DataLength, const uint8* DataPtr); ⚠️
TcpIp_IcmpV6Transmit функция

By this API service the TCP/ IP stack sends an ICMPv6 message according to the specified parameters.

Std_ReturnType TcpIp_IcmpV6Transmit (TcpIp_LocalAddrIdType LocalIpAddrId, const TcpIp_SockAddrType* RemoteAddrPtr, uint8 HopLimit, uint8Type, uint8 Code, uint16 DataLength, const uint8* DataPtr); ⚠️

By this API service the local IP address assignment for the IP address specified by Local Addr Id shall be released.

Std_ReturnType TcpIp_ReleaseIpAddrAssignment (TcpIp_LocalAddrIdType LocalAddrId);
TcpIp_RequestComMode функция

By this API service the TCP/ IP stack is requested to change the Tcp Ip state of the communication network identified by Eth If controller index.

Std_ReturnType TcpIp_RequestComMode (uint8 CtrlIdx, TcpIp_StateType State);

Service TcpIp_RequestIpAddrAssignment.

Std_ReturnType TcpIp_RequestIpAddrAssignment (TcpIp_LocalAddrIdType LocalAddrId, TcpIp_IpAddrAssignmentTypeType, const TcpIp_SockAddrType* LocalIpAddrPtr, uint8 Netmask, const TcpIp_SockAddrType* DefaultRouterPtr);

Resets all learned IP - addresses to invalid values.

Std_ReturnType TcpIp_ResetIpAssignment (void);
TcpIp_UdpTransmit функция

This service transmits data via UDP to a remote node. The transmission of the data is immediately performed with this function call by forwarding it to Eth If.

Std_ReturnType TcpIp_UdpTransmit (TcpIp_SocketIdType SocketId, const uint8* DataPtr, const TcpIp_SockAddrType* RemoteAddrPtr, uint16 TotalLength);

Обратные вызовы

TcpIp_RxIndication функция

By this API service the TCP/ IP stack gets an indication and the data of a received frame.

void TcpIp_RxIndication (uint8 CtrlIdx, Eth_FrameType FrameType, boolean IsBroadcast, const uint8* PhysAddrPtr, const uint8* DataPtr, uint16 LenByte);

Callout-функции и ожидаемые интерфейсы

<Up_CopyTxData> функция

This service requests to copy data for transmission to the buffer indicated. This call is triggered by Tcp Ip_ Transmit(). Note: The call to _ Copy Tx Data() may happen in the context of Tcp Ip_ Transmit().

BufReq_ReturnType <Up_CopyTxData> (TcpIp_SocketIdType SocketId, uint8* BufPtr, uint16 BufLength);

This API is called by Tcp Ip in case the Duplicate Address Detection (DAD) is enabled and detecting a duplicate IP Address.

void <Up_DADAddressConflict> (TcpIp_LocalAddrIdType IpAddrId, const TcpIp_SockAddrType* IpAddrPtr, const uint8* LocalPhysAddrPtr, const uint8* RemotePhysAddrPtr);
<Up_IcmpMsgHandler> функция

By this API service the configured ICMP message handler function is called by the TCP/ IP stack on reception of a ICMP message which is not handled by the TCP/ IP stack.

void <Up_IcmpMsgHandler> (TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* RemoteAddrPtr, uint8 Ttl, uint8Type, uint8 Code, uint16 DataLength, uint8* DataPtr); ⚠️

This service gets called by the TCP/ IP stack if an IP address assignment changes (i.e. new address assigned or assigned address becomes invalid).

void <Up_LocalIpAddrAssignmentChg> (TcpIp_LocalAddrIdType IpAddrId, TcpIp_IpAddrStateType State);
<Up_PhysAddrTableChg> функция

This API is called by Tcp Ip in case of a change in the ARP/ NDP table related to the controller specified by Ctrl Idx.

void <Up_PhysAddrTableChg> (uint8 CtrlIdx, const TcpIp_SockAddrType* IpAddrPtr, const uint8* PhysAddrPtr, boolean valid);
<Up_RxIndication> функция

The TCP/ IP stack calls this primitive after the reception of data on a socket. The socket identifier along with configuration information determines which module is to be called.

void <Up_RxIndication> (TcpIp_SocketIdType SocketId, const TcpIp_SockAddrType* RemoteAddrPtr, const uint8* BufPtr, uint16 Length);
<Up_TcpAccepted> функция

This service gets called if the stack put a socket into the listen mode before (as server) and a peer connected to it (as client). In detail: T he TCP/ IP stack calls this function after a socket was set into the listen state with Tcp Ip_ Tcp Listen() and a TCP connection is requested by the peer.

Std_ReturnType <Up_TcpAccepted> (TcpIp_SocketIdType SocketId, TcpIp_SocketIdType SocketIdConnected, const TcpIp_SockAddrType* RemoteAddrPtr);
<Up_TcpConnected> функция

This service gets called if the stack initiated a TCP connection before (as client) and the peer (the server) acknowledged the connection set up. In detail: The TCP/ IP stack calls this function after a socket was requested to connect with Tcp Ip_ Tcp Conn ect() and a TCP connection is confirmed by the peer. The parameter value of Socket Id equals the Socket Id value of the preceeding Tcp Ip_ Tcp Connect() call.

void <Up_TcpConnected> (TcpIp_SocketIdType SocketId);

Service .

Std_ReturnType <Up_TlsClientGetPskIdentity> (TcpIp_SocketIdType SocketId, TcpIp_TlsConnectionIdType TlsConnectionId, uint16 PskIdentityHintLength, const uint8* PskIdentityHintPtr, uint16* PskKeyIdentityLengthPtr, uint8* PskKeyIdentityPtr, uint32* CsmKeyId);
<Up_TlsGetCurrentTime> функция

This function queries the current time. This information will be requested when assembling the client hello message.

Std_ReturnType <Up_TlsGetCurrentTime> (uint32* CurrentTimeUtc);

This callback is used for the TLS server to provide the CSM key name according to the key identification that was selected by the TLS client. The TLS server must provide a Csm Key reference to a key that matches this key identification name.

Std_ReturnType <Up_TlsServerGetPskIdentity> (TcpIp_SocketIdType SocketId, TcpIp_TlsConnectionIdType TlsConnectionId, uint16 PskKeyIdentityLength, const uint8* PskKeyIdentityPtr, uint32* CsmKeyId);

Queries the Identity hint for a pr e - shared key ciphersuite. This information is transmitted by the TLS Server to provide its identification to the TLS client.

Std_ReturnType <Up_TlsServerGetPskIdentityHint> (TcpIp_SocketIdType SocketId, TcpIp_TlsConnectionIdType TlsConnectionId, uint16* IdentityHintLengthPtr, uint8* IdentityHintPtr);
<Up_TxConfirmation> функция

The TCP/ IP stack calls this function after the data has been acknowledged by the peer for TCP. Caveats: The upper layer might not be able to determine exactly which data bytes have been confirmed.

void <Up_TxConfirmation> (TcpIp_SocketIdType SocketId, uint16 Length);

Циклические

TcpIp_MainFunction функция

Schedules the TCP/ IP stack. (Entry point for scheduling) AUTO SAR CP R20 - of Document ID : AUTOSAR_SWS_TcpIp

void TcpIp_MainFunction (void);

Типы

Tcp Ip_ Arp Cache Entries elements type

Configuration data structure of the Tcp Ip module.

Tcp Ip address families.

Events reported by Tcp Ip.

IPv6 address assignment policy.

Specifies the state of local IP a ddress assignment

Address identification type for unique identification of a local IP address and Eth If Controller configured in the Tcp Ip module.

Index to select specific measurement data

Tcp Ip_ Ndp Cache Entries elements type

Type TcpIp_ParamIdType.

Protocol type used by a socket.

Tcp Ip specific return type.

This structure defines a IPv6 address type which can be derived from the generic address structure via cast. AUTO SAR CP R20 - of Document ID : AUTOSAR_SWS_TcpIp

This structure defines an IPv4 address type which can be derived from the generic address structure via cast.

Generic structure used by APIs to specify an IP address. (A specific address type can be derived from this structure via a cast to the specific struct type.)

Socket identifier type for unique identification of a Tcp Ip stack socket. TCPIP_ SOCKETID_ INVALID shall specify an invalid socket handle.

Specifies the Tcp Ip state for a specific Eth If controller.

TLS connection identifier type for unique identification of a TLS connection. TCPIP_ TLSCONNECTIONID_ INVALID shall specify an invalid TLS connection handle.

IP6 address wildcard.

IP address wildcard.

Local Addr Id wildcard.

Port wildcard.