nl::Inet::InterfaceAddressIterator

#include <src/inet/InetInterface.h>

Trình lặp cho danh sách địa chỉ IP của giao diện mạng hệ thống.

Tóm tắt

Sử dụng các đối tượng của lớp này để lặp lại danh sách địa chỉ IP giao diện giao diện mạng hệ thống.

Các phương thức trên một thực thể riêng lẻ của lớp này không an toàn cho luồng. Tuy nhiên, nhiều luồng có thể sử dụng đồng thời các thực thể riêng biệt.

Trên các hệ thống LwIP đa luồng, các thực thể được đảm bảo an toàn theo luồng so với các luồng khác truy cập trạng thái LwIP toàn cầu với điều kiện là: 1) các luồng khác giữ khoá lõi LwIP trong khi thay đổi danh sách netif; và 2) bản thân đối tượng netif không bao giờ bị huỷ.

Trên các hệ thống dựa trên ổ cắm, việc lặp lại luôn ổn định khi đối mặt với các thay đổi đối với giao diện và/hoặc địa chỉ của hệ thống cơ bản.

Trên các hệ thống LwIP, quá trình lặp lại ổn định ngoại trừ trường hợp giao diện liên kết với địa chỉ hiện tại bị xoá. Trong trường hợp này, quá trình lặp lại có thể kết thúc sớm.

Hàm khởi tạo và hàm phá

InterfaceAddressIterator(void)
Tạo một đối tượng InterfaceAddressIterator.
~InterfaceAddressIterator(void)
Huỷ đối tượng InterfaceAddressIterator.

Hàm công khai

GetAddress(void)
Lấy địa chỉ giao diện hiện tại.
GetAddressWithPrefix(IPPrefix & addrWithPrefix)
void
Trả về một IPPrefix chứa địa chỉ và độ dài tiền tố cho địa chỉ hiện tại.
GetIPv6PrefixLength(void)
uint8_t
Email đại diện không dùng nữa cho GetPrefixLength(void)
GetInterface(void)
InterfaceId
Email đại diện không dùng nữa cho GetInterfaceId(void)
GetInterfaceId(void)
InterfaceId
Trả về id giao diện mạng được liên kết với địa chỉ giao diện hiện tại.
GetInterfaceName(char *nameBuf, size_t nameBufSize)
Lấy tên của giao diện mạng được liên kết với địa chỉ giao diện hiện tại.
GetPrefixLength(void)
uint8_t
Lấy tiền tố mạng liên kết với địa chỉ giao diện hiện tại.
HasBroadcastAddress(void)
bool
Trả về việc giao diện mạng được liên kết với địa chỉ giao diện hiện tại có địa chỉ truyền tin IPv4 hay không.
HasCurrent(void)
bool
IsUp(void)
bool
Trả về việc giao diện mạng được liên kết với địa chỉ giao diện hiện tại có hoạt động hay không.
Next(void)
bool
Chuyển trình lặp lại đến địa chỉ giao diện tiếp theo.
SupportsMulticast(void)
bool
Trả về việc giao diện mạng được liên kết với địa chỉ giao diện hiện tại có hỗ trợ phát đa hướng hay không.

Hàm công khai

GetAddress

IPAddress GetAddress(
  void
)

Lấy địa chỉ giao diện hiện tại.

Thông tin chi tiết
Trả về
địa chỉ giao diện hiện tại hoặc IPAddress::Any nếu trình lặp lại nằm ngoài vị trí cuối của danh sách địa chỉ.

GetAddressWithPrefix

void GetAddressWithPrefix(
  IPPrefix & addrWithPrefix
)

Trả về một IPPrefix chứa địa chỉ và độ dài tiền tố cho địa chỉ hiện tại.

GetIPv6PrefixLength

uint8_t GetIPv6PrefixLength(
  void
)

Email đại diện không dùng nữa cho GetPrefixLength(void)

GetInterface

InterfaceId GetInterface(
  void
)

Email đại diện không dùng nữa cho GetInterfaceId(void)

GetInterfaceId

InterfaceId GetInterfaceId(
  void
)

Trả về id giao diện mạng được liên kết với địa chỉ giao diện hiện tại.

Thông tin chi tiết
Trả về
mã nhận dạng giao diện hoặc INET_NULL_INTERFACEID nếu trình lặp lại nằm ngoài vị trí cuối của danh sách địa chỉ.

GetInterfaceName

INET_ERROR GetInterfaceName(
  char *nameBuf,
  size_t nameBufSize
)

Lấy tên của giao diện mạng được liên kết với địa chỉ giao diện hiện tại.

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

Thông tin chi tiết
Các tham số
[in] nameBuf
vùng bộ nhớ để ghi tên giao diện
[in] nameBufSize
kích thước của khu vực được biểu thị bằng nameBuf
Giá trị trả về
INET_NO_ERROR
kết quả thành công, tên giao diện đã được viết
INET_ERROR_NO_MEMORY
tên quá lớn nên không thể ghi vào bộ đệm
INET_ERROR_INCORRECT_STATE
trình lặp hiện không được định vị trên địa chỉ giao diện
other
lỗi hệ thống hoặc nền tảng khác

GetPrefixLength

uint8_t GetPrefixLength(
  void
)

Lấy tiền tố mạng liên kết với địa chỉ giao diện hiện tại.

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.

Thông tin chi tiết
Trả về
tiền tố mạng (tính bằng bit) hoặc 0 nếu trình lặp được đặt ngoài cuối danh sách địa chỉ.

HasBroadcastAddress

bool HasBroadcastAddress(
  void
)

Trả về việc giao diện mạng được liên kết với địa chỉ giao diện hiện tại có địa chỉ truyền tin IPv4 hay không.

Thông tin chi tiết
Trả về
true nếu giao diện có địa chỉ truyền tin, false nếu không có hoặc nếu trình lặp không được định vị trên địa chỉ giao diện.

HasCurrent

bool HasCurrent(
  void
)

InterfaceAddressIterator

 InterfaceAddressIterator(
  void
)

Tạo một đối tượng InterfaceAddressIterator.

Bắt đầu trình lặp lại tại địa chỉ mạng đầu tiên. Trên một số nền tảng, hàm khởi tạo này có thể phân bổ các tài nguyên được hàm khởi tạo tái chế.

IsUp

bool IsUp(
  void
)

Trả về việc giao diện mạng được liên kết với địa chỉ giao diện hiện tại có hoạt động hay không.

Thông tin chi tiết
Trả về
true nếu giao diện mạng hiện tại hướng lên, false nếu không hoặc nếu trình lặp không được định vị trên địa chỉ giao diện.

Tiếp theo

bool Next(
  void
)

Chuyển trình lặp lại đến địa chỉ giao diện tiếp theo.

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.

Thông tin chi tiết
Trả về
false nếu vượt quá phần cuối, nếu không thì true.

SupportsMulticast

bool SupportsMulticast(
  void
)

Trả về việc giao diện mạng được liên kết với địa chỉ giao diện hiện tại có hỗ trợ phát đa hướng hay không.

Thông tin chi tiết
Trả về
true nếu chế độ phát đa hướng được hỗ trợ, false nếu không được hỗ trợ hoặc nếu trình lặp không được định vị trên địa chỉ giao diện.

~InterfaceAddressIterator

 ~InterfaceAddressIterator(
  void
)

Huỷ đối tượng InterfaceAddressIterator.

Tái chế mọi tài nguyên do hàm khởi tạo phân bổ.