nl::Inet

摘要

列舉

@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
}
列舉
網際網路通訊協定位址系列。
IPProtocol{
  kIPProtocol_ICMPv6 = 58,
  kIPProtocol_ICMPv4 = 1
}
列舉
IP 系列中某些通訊協定的數量。
IPV6MulticastGroup{
  kIPV6MulticastGroup_AllRouters = 2
}
列舉
網際網路通訊協定多點傳播群組 ID。
IPVersion{
  kIPVersion_6 = 6,
  kIPVersion_4 = 4
}
列舉
目前使用的 IP 通訊協定版本。
IPv6MulticastFlag{
  kIPv6MulticastFlag_Transient = 0x01,
  kIPv6MulticastFlag_Prefix = 0x02
}
列舉
Internet Protocol v6 多點傳播標記,
IPv6MulticastScope{
  kIPv6MulticastScope_Interface = 1,
  kIPv6MulticastScope_Link = 2,
  kIPv6MulticastScope_IPv4 = 3,
  kIPv6MulticastScope_Admin = 4,
  kIPv6MulticastScope_Site = 5,
  kIPv6MulticastScope_Organization = 8,
  kIPv6MulticastScope_Global = 14
}
列舉
網際網路通訊協定多點傳播位址範圍。

Typedefs

InterfaceId typedef
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 Layer 錯誤,系統會傳回使用者可理解的 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 Layer 錯誤註冊文字錯誤格式設定工具。
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 的內部類別,可為 InetLayer 中的非同步網域名稱系統 (DNS) 解析輔助 API。

nl::Inet::DNSResolver

這是 InetLayer 的內部類別,主要提供 InetLayer 中網域名稱系統 (DNS) 解析的抽象化。

nl::Inet::EndPointBasis

網際網路傳輸端點類別的基礎。

nl::Inet::IPAddress

網際網路通訊協定位址。

nl::Inet::IPEndPointBasis

這個類別的物件代表不穩定的 IP 通訊協定端點。

nl::Inet::IPPacketInfo

傳入/傳出訊息/連線的相關資訊。

nl::Inet::IPPrefix

網際網路通訊協定位址前置字串。

nl::Inet::InetLayer

這樣就能透過單一執行緒使用網際網路服務,包括計時器、網域名稱系統 (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::Platform

列舉

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 接收資料的事件。

DNSOptions

 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 旗標集。

IPAddressType

 IPAddressType

網際網路通訊協定位址系列。

IPAddress::Type() 方法會傳回 IPAddressType 類型的值。可根據地址指出地址系列。

屬性
kIPAddressType_Any

未指定的網際網路位址 (與通訊協定版本無關)

kIPAddressType_IPv4

網際網路通訊協定第 4 版。

kIPAddressType_IPv6

網際網路通訊協定第 6 版。

kIPAddressType_Unknown

未使用。

IPProtocol

 IPProtocol

IP 系列中某些通訊協定的數量。

屬性
kIPProtocol_ICMPv4

ICMPv4。

kIPProtocol_ICMPv6

ICMPv6。

IPV6MulticastGroup

 IPV6MulticastGroup

網際網路通訊協定多點傳播群組 ID。

IPV6MulticastGroup 類型的值用於呼叫 IPAddress::MakeIPv6Multicast() 方法。可用來指出 IETF 向 IANA 註冊的辨別群組 ID。

屬性
kIPV6MulticastGroup_AllRouters

RFC 4291

IPVersion

 IPVersion

目前使用的 IP 通訊協定版本。

屬性
kIPVersion_4

IPv4。

kIPVersion_6

IPv6。

IPv6MulticastFlag

 IPv6MulticastFlag

Internet Protocol v6 多點傳播標記,

IPv6MulticastFlag 類型的值會用來呼叫 IPAddress::MakeIPv6Multicast() 方法。用於指出要建立的 IPv6 多點傳播位址類型。這些號碼是由 IETF 向 IANA 註冊。

屬性
kIPv6MulticastFlag_Prefix

多點傳播位址 (1) 以網路前置字元為依據。

kIPv6MulticastFlag_Transient

多點傳播位址為 (1) 暫時 (即動態指派),而非 (0) 已知 (即 IANA 指派)。

IPv6MulticastScope

 IPv6MulticastScope

網際網路通訊協定多點傳播位址範圍。

IPv6MulticastScope 類型的值用於呼叫 IPAddress::MakeIPv6Multicast() 方法。它們代表結果指定的多點傳播群組的可路由範圍。這些號碼是由 IETF 向 IANA 註冊。

屬性
kIPv6MulticastScope_Admin

運作範圍。

kIPv6MulticastScope_Global

全域範圍。

kIPv6MulticastScope_IPv4

運作範圍。

kIPv6MulticastScope_Interface

介面本機範圍。

kIPv6MulticastScope_Link

連結本機範圍。

kIPv6MulticastScope_Organization

機構-本機範圍。

kIPv6MulticastScope_Site

運作範圍。

Typedefs

InterfaceId

struct netif * InterfaceId

系統網路介面的指標。

可攜性取決於切勿使用這個別名。未來可能會替換為具體的不透明類別。

請注意:「介面 ID」一詞也通常在所有相關 IETF 標準文件中,通常都會參照「IID」縮寫中的 IPv6 位址較低 64 位元通常會用到在這段文字中,「介面指標」一詞參照這個類型別名的值。

變數

sIOCTLSocket

int sIOCTLSocket = -1

函式

CheckMulticastGroupArgs

INET_ERROR CheckMulticastGroupArgs(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

CloseIOCTLSocket

void CloseIOCTLSocket(
  void
)

關閉由 GetIOCTLSocket 建立的全域通訊端。

此函式適用於將全域 IOCTL 通訊端保持開啟的案例,會註冊為外洩。

注意:就 GetIOCTLSocket 而言,這個函式「不是」執行緒安全。

FormatInetLayerError

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

如果發生 Inet Layer 錯誤,系統會傳回使用者可理解的 NULL 結尾 C 字串說明錯誤。

詳細資料
參數
[in] buf
要放置錯誤字串的緩衝區。
[in] bufSize
提供的緩衝區大小 (以位元組為單位)。
[in] err
要說明的錯誤。
傳回
如果說明字串寫入提供的緩衝區中,則為 true。
傳回
如果提供的錯誤不是 Inet Layer 錯誤,則為 false。

GetIOCTLSocket

int GetIOCTLSocket(
  void
)

傳回適用於叫用特定網路 IOCTL 的全域一般用途通訊端。

這個函式在所有平台上都適用執行緒安全。

GetInterfaceName

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
Weave 系統圖層事件類型。
傳回
如果落在列舉範圍內為 true;否則為 false。

InterfaceNameToId

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
其他系統或平台錯誤

LwIPBindInterface

INET_ERROR LwIPBindInterface(
  struct raw_pcb *aRaw,
  InterfaceId intfId
)

LwIPBindInterface

INET_ERROR LwIPBindInterface(
  struct udp_pcb *aUDP,
  InterfaceId intfId
)

NetmaskToPrefixLength

uint8_t NetmaskToPrefixLength(
  const uint8_t *netmask,
  uint16_t netmaskLen
)

計算長度不定的網路遮罩的前置字串長度。

ParseHostAndPort

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 即成功。

ParseHostPortAndInterface

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
介面長度 (以字元為單位)。
傳回
INET_ERROR_INVALID_HOST_NAME:如果要剖析的輸入內容長度為零或格式有誤。
傳回
INET_ERROR_HOST_NAME_TOO_LONG:如果主機名稱超過 253 個字元,
傳回
INET_NO_ERROR 即成功。

RegisterInetLayerErrorFormatter

void RegisterInetLayerErrorFormatter(
  void
)

針對 Inet Layer 錯誤註冊文字錯誤格式設定工具。

SocketsIPv4JoinLeaveMulticastGroup

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

SocketsIPv6JoinLeaveMulticastGroup

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
)