nl::Inet::InterfaceIterator

#include <src/inet/InetInterface.h>

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

摘要

使用這個類別的物件,疊代系統網路介面清單。

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

在多執行緒 LwIP 系統中,與存取全域 LwIP 狀態的其他執行緒相比,執行個體在執行緒安全上,前提是其他執行緒在變動網路清單時持有 LwIP 核心鎖定,且該 netif 物件本身永遠不會遭到刪除。

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

LwIP 系統的疊代作業保持穩定,但如果目前選取的介面從清單中移除,疊代作業會立即結束。

建構函式和解構函式

InterfaceIterator(void)
建構一個 InterfaceIterator 物件。
~InterfaceIterator(void)
刪除 InterfaceIterator 物件。

受保護的屬性

mCurIntf
size_t
mCurNetif
struct netif *
mIntfArray
struct if_nameindex *
mIntfFlags
short
mIntfFlagsCached
bool

公開函式

GetInterface(void)
InterfaceId
GetInterfaceId(void) 已淘汰的別名
GetInterfaceId(void)
InterfaceId
傳回目前疊代器位置的網路介面 ID。
GetInterfaceName(char *nameBuf, size_t nameBufSize)
取得目前網路介面的名稱。
HasBroadcastAddress(void)
bool
傳回目前的網路介面是否有廣播位址。
HasCurrent(void)
bool
測試疊代器是否已放置在介面中。
IsUp(void)
bool
傳回目前的網路介面是否開啟。
Next(void)
bool
將疊代器移至下一個網路介面。
SupportsMulticast(void)
bool
傳回目前的網路介面是否支援多點傳播。

受保護的函式

GetFlags(void)
short
傳回目前介面的 ifr_flags 值。

受保護的屬性

mCurIntf

size_t mCurIntf

mCurNetif

struct netif * mCurNetif

mIntfArray

struct if_nameindex * mIntfArray

mIntfFlags

short mIntfFlags

mIntfFlagsCached

bool mIntfFlagsCached

公開函式

GetInterface

InterfaceId GetInterface(
  void
)

GetInterfaceId(void) 已淘汰的別名

GetInterfaceId

InterfaceId GetInterfaceId(
  void
)

傳回目前疊代器位置的網路介面 ID。

詳細資料
傳回值
INET_NULL_INTERFACEID
如果超出清單結尾
id
目前的網路介面 ID。

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_INCORRECT_STATE
疊代器的位置超過清單結尾
INET_ERROR_NO_MEMORY
名稱過大,無法寫入緩衝區
other
其他系統或平台錯誤

HasBroadcastAddress

bool HasBroadcastAddress(
  void
)

傳回目前的網路介面是否有廣播位址。

詳細資料
傳回
如果目前的網路介面有廣播位址,傳回 true,否則為 false,或者疊代器位置不在清單結尾處。

HasCurrent

bool HasCurrent(
  void
)

測試疊代器是否已放置在介面中。

測試疊代器是否位於介面位址上。

詳細資料
傳回
true:如果疊代器是放在介面中的位置;如果位置超出介面清單結尾,則為 false
傳回
true:如果疊代器位於介面位址上;如果位置超過地址清單結尾,則為 false

InterfaceIterator

 InterfaceIterator(
  void
)

建構一個 InterfaceIterator 物件。

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

IsUp

bool IsUp(
  void
)

傳回目前的網路介面是否開啟。

詳細資料
傳回
如果目前的網路介面已上升,則為 true;如果疊代器未置於清單末端,則為 false

繼續

bool Next(
  void
)

將疊代器移至下一個網路介面。

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

On multi-threaded LwIP systems, this method is thread-safe relative to other
threads accessing the global LwIP state provided that: 1) the other threads
hold the LwIP core lock while mutating the list of netifs; and 2) netif objects
themselves are never destroyed.

Iteration is stable in the face of changes to the underlying system's
interfaces, *except* in the case of LwIP systems when the currently selected
interface is removed from the list, which causes iteration to end immediately.

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

SupportsMulticast

bool SupportsMulticast(
  void
)

傳回目前的網路介面是否支援多點傳播。

詳細資料
傳回
如果目前的網路介面支援多點傳送,則為 true;如果不支援多點傳送,或者疊代器的位置超出清單結尾,則為 false

~InterfaceIterator

 ~InterfaceIterator(
  void
)

刪除 InterfaceIterator 物件。

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

受保護的函式

GetFlags

short GetFlags(
  void
)

傳回目前介面的 ifr_flags 值。