нл:: Инет:: IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

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

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

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

Наследуется от: nl::Inet::EndPointBasis
Прямые известные подклассы:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

Публичные типы

@8 {
kState_Ready = kBasisState_Closed,
kState_Bound = 1,
kState_Listening = 2,
kState_Closed = 3
}
перечисление
Базовое динамическое состояние базовой конечной точки.
@9 {
kSendFlag_RetainBuffer = 0x0040
}
перечисление
Флаги опций передачи для метода SendMsg .
OnMessageReceivedFunct )(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) определение типа
void(*
Тип функции обработки события приема текста сообщения.
OnReceiveErrorFunct )(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) определение типа
void(*
Тип функции обработки событий ошибок приема.

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

OnMessageReceived
Делегат функции обработки события приема сообщения конечной точки.
OnReceiveError
Делегат функции обработки событий ошибок получения конечной точки.
mState
enum nl::Inet::IPEndPointBasis::@8
Базовое динамическое состояние базовой конечной точки.

Защищенные атрибуты

mBoundIntfId
InterfaceId

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

JoinMulticastGroup (InterfaceId aInterfaceId, const IPAddress & aAddress)
Присоединяйтесь к группе многоадресной IP-рассылки.
LeaveMulticastGroup (InterfaceId aInterfaceId, const IPAddress & aAddress)
Выйдите из группы многоадресной рассылки IP.
SetMulticastLoopback (IPVersion aIPVersion, bool aLoopback)
Установите, следует ли зацикливать многоадресный IP-трафик.

Защищенные функции

Bind (IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId)
BindInterface (IPAddressType aAddressType, InterfaceId aInterfaceId)
GetSocket (IPAddressType aAddressType, int aType, int aProtocol)
HandleDataReceived ( Weave::System::PacketBuffer *aBuffer)
void
HandlePendingIO (uint16_t aPort)
void
Init ( InetLayer *aInetLayer)
void
PrepareIO (void)
SendMsg (const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags)

Публичные статические функции

FindNetifFromInterfaceId (InterfaceId aInterfaceId)
struct netif *

Защищенные статические функции

GetPacketInfo ( Weave::System::PacketBuffer *buf)
Получите информацию об адресации источника и места назначения уровня LwIP IP.

Публичные типы

@8

 @8

Базовое динамическое состояние базовой конечной точки.

Объекты инициализируются в состоянии «готовность», переходят в состояние «привязано» после привязки к адресу локального интерфейса, затем переходят в состояние «прослушивание», когда у них зарегистрированы продолжения для обработки событий приема ICMP-сообщений.

Примечание. Перечисление состояний kBasisState_Closed сопоставлено с kState_Ready по историческим причинам двоичной совместимости. Существующий kState_Closed существует для отдельного определения различия между «еще не открыто» и «ранее открыто, теперь закрыто», которое существовало ранее в состояниях kState_Ready и kState_Closed .

Характеристики
kState_Bound

Конечная точка привязана, но не прослушивается.

kState_Closed

Конечная точка закрыта и готова к выпуску.

kState_Listening

Конечная точка получает датаграммы.

kState_Ready

Конечная точка инициализирована, но не открыта.

@9

 @9

Флаги опций передачи для метода SendMsg .

Характеристики
kSendFlag_RetainBuffer

Не помещайте сообщение в очередь напрямую.

Поставьте копию в очередь.

OnMessageReceivedFunct

void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)

Тип функции обработки события приема текста сообщения.

Предоставьте функцию этого типа члену делегата OnMessageReceived для обработки событий приема текста сообщения в endPoint , где msg — это текст сообщения, полученный от отправителя в senderAddr .

Подробности
Параметры
[in] endPoint
Конечная точка, связанная с событием.
[in] msg
Текст сообщения получен.
[in] senderAddr
IP-адрес отправителя.

OnReceiveErrorFunct

void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)

Тип функции обработки событий ошибок приема.

Предоставьте функцию этого типа члену делегата OnReceiveError для обработки событий ошибок приема на endPoint . Аргумент err предоставляет конкретную информацию о типе ошибки.

Подробности
Параметры
[in] endPoint
Конечная точка, связанная с событием.
[in] err
Причина ошибки.

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

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

Делегат функции обработки события приема сообщения конечной точки.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

Делегат функции обработки событий ошибок получения конечной точки.

mState

enum nl::Inet::IPEndPointBasis::@8 mState

Базовое динамическое состояние базовой конечной точки.

Объекты инициализируются в состоянии «готовность», переходят в состояние «привязано» после привязки к адресу локального интерфейса, затем переходят в состояние «прослушивание», когда у них зарегистрированы продолжения для обработки событий приема ICMP-сообщений.

Примечание. Перечисление состояний kBasisState_Closed сопоставлено с kState_Ready по историческим причинам двоичной совместимости. Существующий kState_Closed существует для отдельного определения различия между «еще не открыто» и «ранее открыто, теперь закрыто», которое существовало ранее в состояниях kState_Ready и kState_Closed .

Защищенные атрибуты

mBoundIntfId

InterfaceId mBoundIntfId

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

Присоединиться к многоадресной группе

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Присоединяйтесь к группе многоадресной IP-рассылки.

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

Подробности
Параметры
[in] aInterfaceId
индикатор сетевого интерфейса для добавления в группу мультикаста
[in] aAddress
группа многоадресной рассылки, в которую нужно добавить интерфейс
Возвращаемые значения
INET_NO_ERROR
успех: многоадресная группа удалена
INET_ERROR_UNKNOWN_INTERFACE
неизвестный сетевой интерфейс, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress не является kIPAddressType_IPv4 или kIPAddressType_IPv6 или не является многоадресным
other
другая ошибка системы или платформы

Выход из многоадресной группы

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

Выйдите из группы многоадресной рассылки IP.

Удалите конечную точку из предоставленной группы многоадресной рассылки на указанном интерфейсе.

Подробности
Параметры
[in] aInterfaceId
индикатор сетевого интерфейса, который нужно удалить из многоадресной группы
[in] aAddress
группа многоадресной рассылки, из которой нужно удалить интерфейс
Возвращаемые значения
INET_NO_ERROR
успех: группа многоадресной рассылки удалена
INET_ERROR_UNKNOWN_INTERFACE
неизвестный сетевой интерфейс, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress не является kIPAddressType_IPv4 или kIPAddressType_IPv6 или не является многоадресным
other
другая ошибка системы или платформы

Установить многоадресную петлю

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

Установите, следует ли зацикливать многоадресный IP-трафик.

Установите, должен ли многоадресный IP-трафик возвращаться к этой конечной точке.

Подробности
Параметры
[in] aIPVersion
[in] aLoop
Возвращаемые значения
INET_NO_ERROR
успех: набор поведения многоадресной обратной связи
other
другая ошибка системы или платформы

Защищенные функции

Связывать

INET_ERROR Bind(
  IPAddressType aAddressType,
  IPAddress aAddress,
  uint16_t aPort,
  InterfaceId aInterfaceId
)

BindИнтерфейс

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

INET_ERROR GetSocket(
  IPAddressType aAddressType,
  int aType,
  int aProtocol
)

Обработка данныхполученных

void HandleDataReceived(
  Weave::System::PacketBuffer *aBuffer
)

HandlePendingIO

void HandlePendingIO(
  uint16_t aPort
)

Инициализировать

void Init(
  InetLayer *aInetLayer
)

ПодготовитьIO

SocketEvents PrepareIO(
  void
)

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

INET_ERROR SendMsg(
  const IPPacketInfo *aPktInfo,
  Weave::System::PacketBuffer *aBuffer,
  uint16_t aSendFlags
)

Публичные статические функции

НайтиNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

Защищенные статические функции

GetPacketInfo

IPPacketInfo * GetPacketInfo(
  Weave::System::PacketBuffer *buf
)

Получите информацию об адресации источника и места назначения уровня LwIP IP.

При использовании LwIP информация о пакете «скрывается» в зарезервированном пространстве перед началом данных в буфере пакета. Это необходимо, поскольку события системного уровня имеют только два аргумента, которые в данном случае используются для передачи указателя на конечную точку и указателя на буфер.

Подробности
Параметры
[in] aBuffer
буфер пакетов, содержащий IP-сообщение
Возврат
указатель на адрес, информация об успехе; в противном случае — NULL, если в пакете недостаточно места для информации об адресе.

В большинстве случаев этот трюк с сохранением информации до передачи данных работает, поскольку первый буфер в IP-сообщении LwIP содержит пространство, которое использовалось для заголовков Ethernet/IP/UDP. Однако, учитывая текущий размер структуры IPPacketInfo (40 байт), возможно, не хватит места для хранения структуры вместе с полезной нагрузкой в ​​одном буфере пакетов. На практике это должно происходить только для очень больших пакетов IPv4, которые приходят без заголовка Ethernet.