nl::Inet::InterfaceAddressIterator

#include <src/inet/InetInterface.h>

系統網路介面 IP 位址清單的疊代器。

摘要

使用此類別的物件,疊代系統網路介面 IP 位址的清單。

這個類別的個別例項方法「並非」執行緒安全;但多個執行緒可能會同時使用不同的例項。

在多執行緒 LwIP 系統中,相對於其他存取全域 LwIP 狀態的執行緒,執行個體具有執行緒安全的執行緒,前提是:1) 其他執行緒在變動網路清單時持有 LwIP 核心鎖定;和 2) netif 物件本身一律不會遭到刪除。

在通訊端系統上,當基礎系統介面和/或位址發生變化時,疊代會一直保持穩定。

LwIP 系統可穩定疊代,但與目前位址相關的介面遭到移除時,疊代作業可能會提前結束。

建構函式和解構函式

InterfaceAddressIterator(void)
建構 InterfaceAddressIterator 物件。
~InterfaceAddressIterator(void)
刪除 InterfaceAddressIterator 物件。

公開函式

GetAddress(void)
取得目前的介面位址。
GetAddressWithPrefix(IPPrefix & addrWithPrefix)
void
傳回 IPPrefix,其中包含目前位址的位址和前置字串長度。
GetIPv6PrefixLength(void)
uint8_t
GetPrefixLength(void) 已淘汰的別名
GetInterface(void)
InterfaceId
GetInterfaceId(void) 已淘汰的別名
GetInterfaceId(void)
InterfaceId
傳回與目前介面位址相關聯的網路介面 ID。
GetInterfaceName(char *nameBuf, size_t nameBufSize)
取得與目前介面位址相關聯的網路介面名稱。
GetPrefixLength(void)
uint8_t
取得與目前介面位址相關聯的網路前置字串。
HasBroadcastAddress(void)
bool
傳回與目前介面位址相關聯的網路介面是否具有 IPv4 廣播位址。
HasCurrent(void)
bool
IsUp(void)
bool
傳回與目前介面位址相關聯的網路介面是否開啟。
Next(void)
bool
將疊代器移至下一個介面位址。
SupportsMulticast(void)
bool
傳回與目前介面位址相關聯的網路介面是否支援多點傳播。

公開函式

GetAddress

IPAddress GetAddress(
  void
)

取得目前的介面位址。

詳細資料
傳回
目前的介面位址;如果疊代器的位置超出地址清單結尾,則為 IPAddress::Any

GetAddressWithPrefix

void GetAddressWithPrefix(
  IPPrefix & addrWithPrefix
)

傳回 IPPrefix,其中包含目前位址的位址和前置字串長度。

GetIPv6PrefixLength

uint8_t GetIPv6PrefixLength(
  void
)

GetPrefixLength(void) 已淘汰的別名

GetInterface

InterfaceId GetInterface(
  void
)

GetInterfaceId(void) 已淘汰的別名

GetInterfaceId

InterfaceId GetInterfaceId(
  void
)

傳回與目前介面位址相關聯的網路介面 ID。

詳細資料
傳回
介面 ID 或 INET_NULL_INTERFACEID (如果疊代器位於地址清單結尾之外)。

GetInterfaceName

INET_ERROR GetInterfaceName(
  char *nameBuf,
  size_t nameBufSize
)

取得與目前介面位址相關聯的網路介面名稱。

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

詳細資料
參數
[in] nameBuf
用於寫入介面名稱的記憶體區域
[in] nameBufSize
區域大小 (以「nameBuf」表示)
傳回值
INET_NO_ERROR
成功的結果, 已寫入介面名稱
INET_ERROR_NO_MEMORY
名稱過大,無法寫入緩衝區
INET_ERROR_INCORRECT_STATE
疊代器目前未置於介面位址上
other
其他系統或平台錯誤

GetPrefixLength

uint8_t GetPrefixLength(
  void
)

取得與目前介面位址相關聯的網路前置字串。

On LwIP, this method simply returns the hard-coded constant 64.

Note Well: the standard subnet prefix on all links other than PPP
links is 64 bits. On PPP links and some non-broadcast multipoint access
links, the convention is either 127 bits or 128 bits, but it might be
something else. On most platforms, the system's interface address
structure can represent arbitrary prefix lengths between 0 and 128.

詳細資料
傳回
網路前置字元 (以位元為單位);如果疊代器的位置超出位址清單結尾,則為 0。

HasBroadcastAddress

bool HasBroadcastAddress(
  void
)

傳回與目前介面位址相關聯的網路介面是否具有 IPv4 廣播位址。

詳細資料
傳回
如果介面有廣播地址,則為 true;如果沒有,或疊代器不在介面位址上,則為 false

HasCurrent

bool HasCurrent(
  void
)

InterfaceAddressIterator

 InterfaceAddressIterator(
  void
)

建構 InterfaceAddressIterator 物件。

在第一個網路位址啟動疊代器。在某些平台上,這個建構函式可能會分配由解構函式回收的資源。

IsUp

bool IsUp(
  void
)

傳回與目前介面位址相關聯的網路介面是否開啟。

詳細資料
傳回
如果目前的網路介面已啟動,truefalse,或者疊代器未置於介面位址上。

繼續

bool Next(
  void
)

將疊代器移至下一個介面位址。

Advances the iterator to the next interface address or to a position
beyond the end of the address list.

On LwIP, this method is thread-safe provided that: 1) other threads hold
the LwIP core lock while mutating the netif list; and 2) netif objects
themselves are never destroyed.  Additionally, iteration on LwIP systems
will terminate early if the current interface is removed from the list.

詳細資料
傳回
若進階範圍超過此範圍,則為 false,否則為 true

SupportsMulticast

bool SupportsMulticast(
  void
)

傳回與目前介面位址相關聯的網路介面是否支援多點傳播。

詳細資料
傳回
如果支援多點傳送,則為 true;如果不支援多點傳送,或者疊代器不在介面位址上,則為 false

~InterfaceAddressIterator

 ~InterfaceAddressIterator(
  void
)

刪除 InterfaceAddressIterator 物件。

回收由建構函式配置的任何資源。