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
}
列舉
網際網路通訊協定 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 *
系統網路介面的指標。

Variables

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

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

IPAddressType 類型的值是由 IPAddress::Type() 方法傳回。它們表示與使用地址相關的地址所屬的系列。

屬性
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

網際網路通訊協定 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

領域本機 (「IPv4」) 範圍。

kIPv6MulticastScope_Interface

介面-本機範圍。

kIPv6MulticastScope_Link

連結本機範圍。

kIPv6MulticastScope_Organization

「機構-本機」範圍。

kIPv6MulticastScope_Site

領域本機範圍。

Typedefs

InterfaceId

struct netif * InterfaceId

系統網路介面的指標。

可攜性取決於從未見過這個別名。日後可能會以具體的不透明類別取代。

注意:在所有相關 IETF 標準文件中,「介面識別碼」通常是指 IPv6 位址的下限 64 位元,通常使用縮寫「IID」。在這段文字中,「介面指標」一詞是指這個類型別名的值。

Variables

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
我們系統層事件類型。
傳回
如果位於列舉範圍內,則傳回 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
aface 的長度 (以字元為單位)。
傳回
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
)