нл:: Инет:: 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)
Получите информацию об адресации источника и назначения IP-уровня LwIP.

Общедоступные типы

@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 .

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

мбаундинтфид

InterfaceId mBoundIntfId

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

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

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
другая ошибка системы или платформы

ОставитьMulticastGroup

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
другая ошибка системы или платформы

SetMulticastLoopback

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
)

BindInterface

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
)

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

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

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

GetPacketInfo

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

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

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

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

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