nl::Inet::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) typedef
void(*
訊息文字接收事件處理函式的類型。
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
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

端點的訊息接收事件處理函式委派。

On 接收錯誤

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_IPv4kIPAddressType_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_IPv4kIPAddressType_IPv6 或者不是多播
other
其他系統或平台錯誤

設定 Multicast Loopback

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
)

雙向介面

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

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

處理資料已接收

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

處理待處理的 IO

void HandlePendingIO(
  uint16_t aPort
)

Init

void Init(
  InetLayer *aInetLayer
)

準備

SocketEvents PrepareIO(
  void
)

傳送

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

公開的靜態函式

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

受保護的靜態函式

取得封包資訊

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

取得 LwIP IP 層來源和目的地位址資訊。

使用 LwIP 信息數據包的信息是 'hidden'在數據包緩衝緩軍緩衝符開始之前的保留空間中。這是可行的,因為系統圖層事件只有兩個引數,在這個例子中,它是用於將指標傳送到終點,然後將指標傳送至緩衝區。

詳細資料
參數
[in] aBuffer
包含 IP 訊息的封包緩衝區
傳回
指向成功資訊的地址資訊;如果地址資訊的封包不足,則傳回 NULL。

在大多數情況下,這項技巧會讓資料在資料開始之前得以儲存,因為 LwIP IP 訊息中的第一個緩衝區含有乙太網路/IP/UDP 標頭所用的空間。不過,由於目前的 IPPacketInfo 結構大小 (40 位元組) 存在,所以沒有足夠的空間可將結構與酬載一起儲存在單一封包緩衝區中。在實務上,這只適用於發生不含乙太網路標頭的超大型 IPv4 封包時。