nl:: Inet:: IPEndPointBasis
#include <src/inet/IPEndPointBasis.h>
此类的对象表示不可实例化的 IP 协议端点。
摘要
继承
继承自: nl::Inet::EndPointBasis直接已知子类:
nl::Inet::RawEndPoint
nl::Inet::UDPEndPoint
公共类型 |
|
---|---|
@8{
|
枚举 底层端点的基本动态状态。 |
@9{
|
枚举 用于 SendMsg 方法的传输选项标志。 |
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)
|
typedefvoid(*
消息文本接收事件处理函数的类型。 |
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)
|
typedefvoid(*
接收错误事件处理函数的类型。 |
公共属性 |
|
---|---|
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
|
端点已初始化,但没有打开。 |
OnMessageReceivedFunct
void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)
消息文本接收事件处理函数的类型。
向 OnMessageReceived
代理成员提供此类型的函数,以在 endPoint
上处理消息文本接收事件,其中 msg
是从发送者 senderAddr
接收的消息文本。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
OnReceiveErrorFunct
void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)
接收错误事件处理函数的类型。
向 OnReceiveError
代理成员提供此类型的函数,以便在 endPoint
上处理接收错误事件。err
参数用于提供有关错误类型的具体详细信息。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
公共属性
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 多播群组。
将该端点加入指定接口上提供的多播组。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
退出多播群组
INET_ERROR LeaveMulticastGroup( InterfaceId aInterfaceId, const IPAddress & aAddress )
退出 IP 多播群组。
从指定接口上提供的多播组中移除端点。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
SetMulticastLoopback
INET_ERROR SetMulticastLoopback( IPVersion aIPVersion, bool aLoopback )
设置是否应环回 IP 多播流量。
设置是否应将 IP 多播流量环回到此端点。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
受保护的函数
绑定
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 )
HandleDataReceived
void HandleDataReceived( Weave::System::PacketBuffer *aBuffer )
HandlePendingIO
void HandlePendingIO( uint16_t aPort )
Init
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 )
获取 LwIP IP 层来源和目标地址信息。
当使用有关数据包的 LwIP 信息时,在数据包缓冲区数据开始之前,会在预留空间中处于“隐藏”状态。这是必要的,因为系统层事件只有两个参数,在本例中,这两个参数用于传递指向端点和指针的缓冲区。
详细信息 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向成功地址信息的指针;否则,如果数据包中没有足够的地址容纳地址信息,则值为 NULL。
|
在大多数情况下,这种在数据运行之前存储信息的技巧,因为 LwIP IP 消息中的第一个缓冲区包含用于以太网/IP/UDP 标头的空间。不过,考虑到 IPPacketInfo 结构的当前大小(40 字节),因此在单个数据包缓冲区中没有足够的空间来存储该结构和载荷。在实践中,超大 IPv4 数据包只有在没有以太网标头的情况下才能收到。