нл:: Инет:: RawEndPoint

#include <src/inet/RawEndPoint.h>

Объекты этого класса представляют конечные точки необработанной IP-сети.

Краткое содержание

Nest Inet Layer инкапсулирует методы взаимодействия с конечными точками IP-сети (сокеты SOCK_RAW в системах на базе Linux и BSD) или блоки управления необработанным протоколом LwIP, если система настроена соответствующим образом.

Наследование

Наследуется от: nl::Inet::IPEndPointBasis

Публичные атрибуты

IPProto
IPProtocol
версия протокола управляющих сообщений Интернета (ICMP)
IPVer
IPVersion
Версия интернет-протокола.

Общественные функции

Bind (IPAddressType addrType, IPAddress addr, InterfaceId intfId)
Привяжите конечную точку к IP-адресу интерфейса.
BindIPv6LinkLocal (InterfaceId intf, IPAddress addr)
Привяжите необработанную конечную точку к адресу локальной области канала IPv6 по указанному индексу интерфейса.
BindInterface (IPAddressType addrType, InterfaceId intf)
Привяжите конечную точку к сетевому интерфейсу.
Close (void)
void
Закройте конечную точку.
Free (void)
void
Закройте конечную точку и перезапустите ее память.
GetBoundInterface (void)
InterfaceId
Получите связанный интерфейс на этой конечной точке.
Listen (void)
Подготовьте конечную точку для приема сообщений ICMP.
SendMsg (const IPPacketInfo *pktInfo, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Отправьте ICMP-сообщение в указанный пункт назначения.
SendTo ( IPAddress addr, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Синоним SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags) .
SendTo ( IPAddress addr, InterfaceId intfId, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
Отправьте ICMP-сообщение на указанный адрес назначения.
SetICMPFilter (uint8_t numICMPTypes, const uint8_t *aICMPTypes)
Установите параметры фильтра ICMP6 в сетевом стеке.

Публичные атрибуты

IPПрото

IPProtocol IPProto

версия протокола управляющих сообщений Интернета (ICMP)

Хотя это поле является изменяемой переменной класса, оно является инвариантом класса, который нельзя изменить.

IPVer

IPVersion IPVer

Версия интернет-протокола.

Хотя это поле является изменяемой переменной класса, оно является инвариантом класса, который нельзя изменить.

Общественные функции

Связывать

INET_ERROR Bind(
  IPAddressType addrType,
  IPAddress addr,
  InterfaceId intfId
)

Привяжите конечную точку к IP-адресу интерфейса.

Привязывает конечную точку к указанному IP-адресу сетевого интерфейса.

Подробности
Параметры
[in] addrType
версия протокола IP-адреса
[in] addr
IP-адрес (должен быть адресом интерфейса)
[in] intfId
дополнительный индикатор сетевого интерфейса
Возвращаемые значения
INET_NO_ERROR
успех: конечная точка привязана к адресу
INET_ERROR_INCORRECT_STATE
конечная точка была привязана ранее
INET_NO_MEMORY
недостаточно памяти для конечной точки
INET_ERROR_UNKNOWN_INTERFACE
На некоторых платформах опционально указанный интерфейс отсутствует.
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType не соответствует IPVer .
INET_ERROR_WRONG_ADDRESS_TYPE
addrTypekIPAddressType_Any , или тип addr не равен addrType .
other
другая ошибка системы или платформы

В LwIP этот метод нельзя вызывать с уже полученной блокировкой стека LwIP.

BindIPv6LinkLocal

INET_ERROR BindIPv6LinkLocal(
  InterfaceId intf,
  IPAddress addr
)

Привяжите необработанную конечную точку к адресу локальной области канала IPv6 по указанному индексу интерфейса.

Также устанавливает различные параметры сокета IPv6, подходящие для передачи пакетов в пункты назначения и обратно.

Привязывает конечную точку к локальному адресу канала IPv6 addr на сетевом интерфейсе, указанном intf .

Подробности
Параметры
[in] intf
InterfaceId для определения области адреса.
[in] addr
Объект IPAddress локальной области действия канала IPv6.
Параметры
[in] intf
индикатор сетевого интерфейса
[in] addr
IP-адрес (должен быть адресом интерфейса)
Возвращаемые значения
INET_NO_ERROR
успех: конечная точка привязана к адресу
INET_ERROR_INCORRECT_STATE
конечная точка была привязана ранее
INET_NO_MEMORY
недостаточно памяти для конечной точки
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType не соответствует IPVer .
INET_ERROR_WRONG_ADDRESS_TYPE
addr не является локальным адресом канала IPv6, а intf — это INET_NULL_INTERFACEID .
other
другая ошибка системы или платформы
Возврат
INET_NO_ERROR в случае успеха или ошибка сопоставленной ОС в случае сбоя. Недопустимый список параметров может привести к INET_ERROR_WRONG_ADDRESS_TYPE. Если необработанная конечная точка уже привязана или прослушивается, возвращается INET_ERROR_INCORRECT_STATE. Привяжите конечную точку к локальному адресу канала IPv6 интерфейса.

В LwIP этот метод нельзя вызывать с уже полученной блокировкой стека LwIP.

BindИнтерфейс

INET_ERROR BindInterface(
  IPAddressType addrType,
  InterfaceId intf
)

Привяжите конечную точку к сетевому интерфейсу.

Привязывает конечную точку к указанному IP-адресу сетевого интерфейса.

Подробности
Параметры
[in] addrType
версия протокола IP-адреса.
[in] intf
индикатор сетевого интерфейса.
Возвращаемые значения
INET_NO_ERROR
успех: конечная точка привязана к адресу
INET_NO_MEMORY
недостаточно памяти для конечной точки
INET_ERROR_NOT_IMPLEMENTED
реализация системы не завершена.
INET_ERROR_UNKNOWN_INTERFACE
На некоторых платформах интерфейс отсутствует.
other
другая ошибка системы или платформы

В LwIP этот метод нельзя вызывать с уже полученной блокировкой стека LwIP.

Закрывать

void Close(
  void
)

Закройте конечную точку.

Если mState != kState_Closed , то закрывает конечную точку, удаляя ее из набора конечных точек, имеющих право на события связи.

В системах LwIP этот метод нельзя вызывать с уже полученной блокировкой стека LwIP.

Бесплатно

void Free(
  void
)

Закройте конечную точку и перезапустите ее память.

Вызывает метод Close , затем вызывает метод InetLayerBasis::Release , чтобы вернуть объект в его пул памяти.

В системах LwIP этот метод нельзя вызывать с уже полученной блокировкой стека LwIP.

GetBoundИнтерфейс

InterfaceId GetBoundInterface(
  void
)

Получите связанный интерфейс на этой конечной точке.

Подробности
Возврат
InterfaceId Идентификатор связанного интерфейса.

Слушать

INET_ERROR Listen(
  void
)

Подготовьте конечную точку для приема сообщений ICMP.

Если mState уже имеет kState_Listening , то никакая операция не выполняется, в противном случае mState устанавливается kState_Listening , и конечная точка готовится к приему сообщений ICMPv6 в соответствии с семантикой платформы.

Подробности
Возвращаемые значения
INET_NO_ERROR
всегда возвращался.

В LwIP этот метод нельзя вызывать с уже полученной блокировкой стека LwIP.

ОтправитьСообщение

INET_ERROR SendMsg(
  const IPPacketInfo *pktInfo,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

Отправьте ICMP-сообщение в указанный пункт назначения.

 Send the ICMP message \c msg using the destination information given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

Подробности
Параметры
[in] pktInfo
информация о пункте назначения сообщения
[in] msg
буфер пакетов, содержащий сообщение UDP
[in] sendFlags
дополнительные флаги опций передачи
Возвращаемые значения
INET_NO_ERROR
успех: msg поставлено в очередь для передачи.
INET_ERROR_NOT_SUPPORTED
система не поддерживает запрошенную операцию.
INET_ERROR_WRONG_ADDRESS_TYPE
адрес назначения и адрес связанного интерфейса не имеют совпадающих версий протокола или типа адреса.
INET_ERROR_MESSAGE_TOO_LONG
msg не содержит все ICMP-сообщение.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
На некоторых платформах в очередь на передачу помещалась только усеченная часть msg .
other
другая ошибка системы или платформы

Отправить

INET_ERROR SendTo(
  IPAddress addr,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

Синоним SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags) .

Отправить

INET_ERROR SendTo(
  IPAddress addr,
  InterfaceId intfId,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

Отправьте ICMP-сообщение на указанный адрес назначения.

 Send the ICMP message in \c msg to the destination given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

Подробности
Параметры
[in] addr
IP-адрес назначения
[in] intfId
дополнительный индикатор сетевого интерфейса
[in] msg
буфер пакетов, содержащий сообщение UDP
[in] sendFlags
дополнительные флаги опций передачи
Возвращаемые значения
INET_NO_ERROR
успех: msg поставлено в очередь для передачи.
INET_ERROR_NOT_SUPPORTED
система не поддерживает запрошенную операцию.
INET_ERROR_WRONG_ADDRESS_TYPE
адрес назначения и адрес связанного интерфейса не имеют совпадающих версий протокола или типа адреса.
INET_ERROR_MESSAGE_TOO_LONG
msg не содержит все ICMP-сообщение.
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
На некоторых платформах в очередь на передачу помещалась только усеченная часть msg .
other
другая ошибка системы или платформы

УстановитьICMPFilter

INET_ERROR SetICMPFilter(
  uint8_t numICMPTypes,
  const uint8_t *aICMPTypes
)

Установите параметры фильтра ICMP6 в сетевом стеке.

Примените параметры фильтрации ICMPv6 для кодов в aICMPTypes к базовой конечной точке в системном сетевом стеке.

Подробности
Параметры
[in] numICMPTypes
длина массива в aICMPTypes
[in] aICMPTypes
набор кодов типов ICMPv6 для фильтрации.
Возвращаемые значения
INET_NO_ERROR
успех: установлены параметры фильтра
INET_ERROR_NOT_IMPLEMENTED
система не реализует
INET_ERROR_WRONG_ADDRESS_TYPE
конечная точка не типа IPv6
INET_ERROR_WRONG_PROTOCOL_TYPE
конечная точка не типа ICMP6
other
другая ошибка системы или платформы