NL::互联网

概括

枚举

@7 {
kInetEvent_TCPConnectComplete = _INET_CONFIG_EVENT(0),
kInetEvent_TCPConnectionReceived = _INET_CONFIG_EVENT(1),
kInetEvent_TCPDataReceived = _INET_CONFIG_EVENT(2),
kInetEvent_TCPDataSent = _INET_CONFIG_EVENT(3),
kInetEvent_TCPError = _INET_CONFIG_EVENT(4),
kInetEvent_UDPDataReceived = _INET_CONFIG_EVENT(5),
kInetEvent_DNSResolveComplete = _INET_CONFIG_EVENT(6),
kInetEvent_TunDataReceived = _INET_CONFIG_EVENT(7),
kInetEvent_RawDataReceived = _INET_CONFIG_EVENT(8)
}
枚举
Inet 层事件类型定义。
DNSOptions {
kDNSOption_AddrFamily_Mask = 0x07,
kDNSOption_Flags_Mask = 0xF8,
kDNSOption_AddrFamily_Any = 0x00,
kDNSOption_AddrFamily_IPv4Only = 0x01,
kDNSOption_AddrFamily_IPv4Preferred = 0x02,
kDNSOption_AddrFamily_IPv6Only = 0x03,
kDNSOption_AddrFamily_IPv6Preferred = 0x04,
kDNSOption_ValidFlags = 0
}
枚举
控制如何执行 IP 地址解析的选项。
IPAddressType {
kIPAddressType_Unknown = 0,
kIPAddressType_IPv4 = 1,
kIPAddressType_IPv6 = 2,
kIPAddressType_Any = 3
}
枚举
Internet 协议地址族。
IPProtocol {
kIPProtocol_ICMPv6 = 58,
kIPProtocol_ICMPv4 = 1
}
枚举
IP 系列中某些协议的编号。
IPV6MulticastGroup {
kIPV6MulticastGroup_AllRouters = 2
}
枚举
Internet 协议多播组标识符。
IPVersion {
kIPVersion_6 = 6,
kIPVersion_4 = 4
}
枚举
正在使用的 IP 协议的版本。
IPv6MulticastFlag {
kIPv6MulticastFlag_Transient = 0x01,
kIPv6MulticastFlag_Prefix = 0x02
}
枚举
Internet 协议 v6 多播标志。
IPv6MulticastScope {
kIPv6MulticastScope_Interface = 1,
kIPv6MulticastScope_Link = 2,
kIPv6MulticastScope_IPv4 = 3,
kIPv6MulticastScope_Admin = 4,
kIPv6MulticastScope_Site = 5,
kIPv6MulticastScope_Organization = 8,
kIPv6MulticastScope_Global = 14
}
枚举
Internet 协议多播地址范围。

类型定义

InterfaceId类型定义
struct netif *
系统网络接口的指示器。

变量

sIOCTLSocket = -1
int

职能

CheckMulticastGroupArgs (InterfaceId aInterfaceId, const IPAddress & aAddress)
CloseIOCTLSocket (void)
void
附近创建了全球插座GetIOCTLSocket
FormatInetLayerError (char *buf, uint16_t bufSize, int32_t err)
bool
给定 Inet 层错误,返回一个人类可读的以 NULL 结尾的 C 字符串来描述错误。
GetIOCTLSocket (void)
int
返回用于调用某些网络 IOCTL 的全局通用套接字。
GetInterfaceName (InterfaceId intfId, char *nameBuf, size_t nameBufSize)
NL_DLL_EXPORT INET_ERROR
获取网络接口的名称。
INET_IsInetEvent (Weave::System::EventType aType)
bool
检查以验证 System::EventType 是否为有效的 Inet 层事件类型。
InterfaceNameToId (const char *intfName, InterfaceId & intfId)
NL_DLL_EXPORT INET_ERROR
在网络接口列表中搜索指定名称。
LwIPBindInterface (struct raw_pcb *aRaw, InterfaceId intfId)
LwIPBindInterface (struct udp_pcb *aUDP, InterfaceId intfId)
NetmaskToPrefixLength (const uint8_t *netmask, uint16_t netmaskLen)
uint8_t
从可变长度的网络掩码计算前缀长度。
ParseHostAndPort (const char *aString, uint16_t aStringLen, const char *& aHost, uint16_t & aHostLen, uint16_t & aPort)
解析包含主机或 IP 地址和可选端口号(以“:”分隔)的可读字符串,支持以下格式:
ParseHostPortAndInterface (const char *aString, uint16_t aStringLen, const char *& aHost, uint16_t & aHostLen, uint16_t & aPort, const char *& aInterface, uint16_t & aInterfaceLen)
解析包含主机或 IP 地址、可选端口号(以 ':' 分隔)和可选接口名称(以 '' 分隔)的可读字符串,支持以下格式:
RegisterInetLayerErrorFormatter (void)
void
为 Inet 层错误注册文本错误格式化程序。
SocketsIPv4JoinLeaveMulticastGroup (int aSocket, InterfaceId aInterfaceId, const IPAddress & aAddress, int aCommand)
SocketsIPv6JoinLeaveMulticastGroup (int aSocket, InterfaceId aInterfaceId, const IPAddress & aAddress, int aCommand)
SocketsSetMulticastLoopback (int aSocket, bool aLoopback, int aProtocol, int aOption)
SocketsSetMulticastLoopback (int aSocket, IPVersion aIPVersion, bool aLoopback)

班级

NL :: Inet电子:: AsyncDNSResolverSockets

这是一个内部类InetLayer它提供了异步域名系统(DNS)解析在助手的API InetLayer

NL :: Inet电子::使用DNSResolver

这是一个内部类InetLayer提供域名系统(DNS)解析中的抽象InetLayer

NL :: Inet电子:: EndPointBasis

互联网传输端点类的基础。

NL :: Inet电子:: ip地址

互联网协议地址。

NL :: Inet电子:: IPEndPointBasis

此类的对象表示不可实例化的 IP 协议端点。

NL :: Inet电子:: IPPacketInfo

有关传入/传出消息/连接的信息。

NL :: Inet电子:: IPPrefix

Internet 协议地址前缀。

NL :: Inet电子:: InetLayer

这为单个线程提供了对 Internet 服务的访问,包括计时器、域名系统 (DNS) 解析、TCP 网络传输、UDP 网络传输和原始网络传输。

NL :: Inet电子:: InetLayerBasis

这是基础类由一个管理引用计数对象InetLayer对象。

NL :: Inet电子:: InterfaceAddressIterator

系统网络接口 IP 地址列表的迭代器。

NL :: Inet电子:: InterfaceIterator

系统网络接口列表的迭代器。

NL :: Inet电子:: RawEndPoint

此类的对象表示原始 IP 网络端点。

NL :: Inet电子:: SocketEvents

表示套接字上请求/挂起的一组 I/O 事件。

NL :: Inet电子:: TCPEndPoint

此类的对象表示 TCP 传输端点。

NL :: Inet电子:: TunEndPoint

此类的对象表示隧道接口。

NL :: Inet电子:: UDPEndPoint

此类的对象表示 UDP 传输端点。

工会

NL :: Inet电子:: PeerSockAddr

命名空间

NL :: Inet电子::平台

枚举

@7

 @7

Inet 层事件类型定义。

特性
kInetEvent_DNSResolveComplete

DNS 名称解析完成事件。

kInetEvent_RawDataReceived

通过一个用于数据接收的情况下InetLayer原始端点。

kInetEvent_TCPConnectComplete

TCP 连接完成事件。

kInetEvent_TCPConnectionReceived

TCP 连接接收事件。

kInetEvent_TCPDataReceived

通过 TCP 连接接收数据的事件。

kInetEvent_TCPDataSent

通过 TCP 连接进行数据传输的事件。

kInetEvent_TCPError

TCP 连接上的错误事件。

kInetEvent_TunDataReceived

通过 Weave 隧道接收数据的事件。

kInetEvent_UDPDataReceived

通过 UDP 接收数据的事件。

DNS选项

 DNSOptions

控制如何执行 IP 地址解析的选项。

特性
kDNSOption_AddrFamily_Any

按照名称服务器返回的顺序返回 IPv4 和/或 IPv6 地址。

kDNSOption_AddrFamily_IPv4Only

仅返回 IPv4 地址。

kDNSOption_AddrFamily_IPv4Preferred

返回 IPv4 和/或 IPv6 地址,首先列出 IPv4 地址。

kDNSOption_AddrFamily_IPv6Only

仅返回 IPv6 地址。

kDNSOption_AddrFamily_IPv6Preferred

返回 IPv4 和/或 IPv6 地址,首先列出 IPv6 地址。

kDNSOption_AddrFamily_Mask

表示所需地址族的 DNSOptions 整数值中的位。

kDNSOption_Flags_Mask

为标志保留的 DNSOptions 整数值中的位。

kDNSOption_ValidFlags

一组所有有效的 DNSOption 标志。

IP地址类型

 IPAddressType

Internet 协议地址族。

该值IPAddressType类型被返回的IPAddress::Type()方法。它们指示使用地址所需要的地址族。

特性
kIPAddressType_Any

未指定的互联网地址(独立于协议版本)

kIPAddressType_IPv4

互联网协议版本 4。

kIPAddressType_IPv6

互联网协议版本 6.

kIPAddressType_Unknown

不曾用过。

IP协议

 IPProtocol

IP 系列中某些协议的编号。

特性
kIPProtocol_ICMPv4

ICMPv4。

kIPProtocol_ICMPv6

ICMPv6。

IPV6组播组

 IPV6MulticastGroup

Internet 协议多播组标识符。

所述的值IPV6MulticastGroup类型被用来调用IPAddress::MakeIPv6Multicast()方法。它们表示 IETF 向 IANA 注册的可分辨组标识符。

特性
kIPV6MulticastGroup_AllRouters

RFC 4291。

IP版本

 IPVersion

正在使用的 IP 协议的版本。

特性
kIPVersion_4

IPv4。

kIPVersion_6

IPv6。

IPv6多播标志

 IPv6MulticastFlag

Internet 协议 v6 多播标志。

所述的值IPv6MulticastFlag类型被用来调用IPAddress::MakeIPv6Multicast()方法。它们指示要创建的 IPv6 多播地址的类型。这些号码由 IETF 向 IANA 注册。

特性
kIPv6MulticastFlag_Prefix

多播地址是 (1) 基于网络前缀。

kIPv6MulticastFlag_Transient

多播地址是 (1) 临时的(即动态分配的)而不是 (0) 众所周知的(即 IANA 分配的)。

IPv6多播范围

 IPv6MulticastScope

Internet 协议多播地址范围。

所述的值IPv6MulticastScope类型被用来调用IPAddress::MakeIPv6Multicast()方法。它们指示结果指定的多播组的可路由范围。这些号码由 IETF 向 IANA 注册。

特性
kIPv6MulticastScope_Admin

领域本地范围。

kIPv6MulticastScope_Global

全球范围。

kIPv6MulticastScope_IPv4

领域本地(“IPv4”)范围。

kIPv6MulticastScope_Interface

接口本地范围。

kIPv6MulticastScope_Link

链接本地范围。

kIPv6MulticastScope_Organization

组织-本地范围。

kIPv6MulticastScope_Site

领域本地范围。

类型定义

接口标识

struct netif * InterfaceId

系统网络接口的指示器。

可移植性取决于永远不会看到这个别名。将来它可能会被具体的不透明类取代。

请注意:术语“接口标识符”通常也指所有相关 IETF 标准文档中 IPv6 地址的低 64 位,其中经常使用缩写“IID”。在本文中,术语“接口指示符”指的是这种类型别名的值。

变量

sIOCTLSocket

int sIOCTLSocket = -1

职能

检查多播组参数

INET_ERROR CheckMulticastGroupArgs(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

关闭IOCTLSocket

void CloseIOCTLSocket(
  void
)

附近创建了全球插座GetIOCTLSocket

此函数是为在将全局 IOCTL 套接字打开时注册为泄漏的情况提供的。

注:此功能是不是线程安全的,相对于GetIOCTLSocket

格式Inet层错误

bool FormatInetLayerError(
  char *buf,
  uint16_t bufSize,
  int32_t err
)

给定 Inet 层错误,返回一个人类可读的以 NULL 结尾的 C 字符串来描述错误。

细节
参数
[in] buf
将放置错误字符串的缓冲区。
[in] bufSize
提供的缓冲区的大小(以字节为单位)。
[in] err
要描述的错误。
退货
如果将描述字符串写入提供的缓冲区,则为 true。
退货
false 如果提供的错误不是 Inet 层错误。

获取IOCTLSocket

int GetIOCTLSocket(
  void
)

返回用于调用某些网络 IOCTL 的全局通用套接字。

此函数在所有平台上都是线程安全的。

获取接口名称

NL_DLL_EXPORT INET_ERROR GetInterfaceName(
  InterfaceId intfId,
  char *nameBuf,
  size_t nameBufSize
)

获取网络接口的名称。

Writes the name of the network interface as \c NUL terminated text string
at \c nameBuf. The name of the unspecified network interface is the empty
string.

细节
参数
[in] intfId
网络接口
[in] nameBuf
写入接口名称的内存区域
[in] nameBufSize
由表示的区域的大小nameBuf
返回值
INET_NO_ERROR
结果成功,接口名称写入
INET_ERROR_NO_MEMORY
名称太大而无法写入缓冲区
other
另一个系统或平台错误

INET_IsInetEvent

bool INET_IsInetEvent(
  Weave::System::EventType aType
)

检查以验证 System::EventType 是否为有效的 Inet 层事件类型。

细节
参数
[in] aType
编织系统层事件类型。
退货
如果它落在枚举范围内,则为真;否则为假。

接口名称ToId

NL_DLL_EXPORT INET_ERROR InterfaceNameToId(
  const char *intfName,
  InterfaceId & intfId
)

在网络接口列表中搜索指定名称。

On LwIP, this function must be called with the LwIP stack lock acquired.

The \c intfId parameter is not updated unless the value returned is
\c INET_NO_ERROR. It should be initialized with \c INET_NULL_INTERFACEID
before calling this function.

细节
参数
[in] intfName
要查找的网络接口的名称
[out] intfId
要分配的网络接口的指示器
返回值
INET_NO_ERROR
成功,显示网络接口
INET_ERROR_UNKNOWN_INTERFACE
找不到网络接口
other
另一个系统或平台错误

LwIP绑定接口

INET_ERROR LwIPBindInterface(
  struct raw_pcb *aRaw,
  InterfaceId intfId
)

LwIP绑定接口

INET_ERROR LwIPBindInterface(
  struct udp_pcb *aUDP,
  InterfaceId intfId
)

网络掩码到前缀长度

uint8_t NetmaskToPrefixLength(
  const uint8_t *netmask,
  uint16_t netmaskLen
)

从可变长度的网络掩码计算前缀长度。

解析主机和端口

INET_ERROR ParseHostAndPort(
  const char *aString,
  uint16_t aStringLen,
  const char *& aHost,
  uint16_t & aHostLen,
  uint16_t & aPort
)

解析包含主机或 IP 地址和可选端口号(以“:”分隔)的人类可读字符串,支持以下格式:

  • [ ]:

细节
参数
[in] aString
要解析的人类可靠的字符串。
[in] aStringLen
aString 的长度(以字符为单位)。
[out] aHost
指向解析字符串的主机名部分的指针。
[out] aHostLen
aHost 的长度(以字符为单位)。
[out] aPort
端口号,如果存在并成功解析;否则为 0。
退货
INET_ERROR_INVALID_HOST_NAME如果要被解析的输入是零长度的或不正常的的。
退货
INET_ERROR_HOST_NAME_TOO_LONG如果主机名超过253个字符。
退货
INET_NO_ERROR上的成功。

解析主机端口和接口

INET_ERROR ParseHostPortAndInterface(
  const char *aString,
  uint16_t aStringLen,
  const char *& aHost,
  uint16_t & aHostLen,
  uint16_t & aPort,
  const char *& aInterface,
  uint16_t & aInterfaceLen
)

解析包含主机或 IP 地址、可选端口号(以 ':' 分隔)和可选接口名称(以 '' 分隔)的可读字符串,支持以下格式:

  • %
  • %
  • %
  • %
  • %
  • [ ]:
  • [ ]: %

细节
参数
[in] aString
要解析的人类可靠的字符串。
[in] aStringLen
aString 的长度(以字符为单位)。
[out] aHost
指向解析字符串的主机名部分的指针。
[out] aHostLen
aHost 的长度(以字符为单位)。
[out] aPort
端口号,如果存在并成功解析;否则为 0。
[out] aInterface
指向已解析字符串的接口部分的指针。
[out] aInterfaceLen
aInterface 的长度(以字符为单位)。
退货
INET_ERROR_INVALID_HOST_NAME如果要被解析的输入是零长度的或不正常的的。
退货
INET_ERROR_HOST_NAME_TOO_LONG如果主机名超过253个字符。
退货
INET_NO_ERROR上的成功。

注册InetLayerErrorFormatter

void RegisterInetLayerErrorFormatter(
  void
)

为 Inet 层错误注册文本错误格式化程序。

套接字IPv4JoinLeaveMulticastGroup

INET_ERROR SocketsIPv4JoinLeaveMulticastGroup(
  int aSocket,
  InterfaceId aInterfaceId,
  const IPAddress & aAddress,
  int aCommand
)

套接字IPv6JoinLeaveMulticastGroup

INET_ERROR SocketsIPv6JoinLeaveMulticastGroup(
  int aSocket,
  InterfaceId aInterfaceId,
  const IPAddress & aAddress,
  int aCommand
)

SocketsSetMulticastLoopback

INET_ERROR SocketsSetMulticastLoopback(
  int aSocket,
  bool aLoopback,
  int aProtocol,
  int aOption
)

SocketsSetMulticastLoopback

INET_ERROR SocketsSetMulticastLoopback(
  int aSocket,
  IPVersion aIPVersion,
  bool aLoopback
)