nl::Inet::InterfaceAddressIterator

#include <src/inet/InetInterface.h>

איטרטור לרשימת כתובות ה-IP של ממשק הרשת של המערכת.

סיכום

משתמשים באובייקטים מהמחלקה הזו כדי לחזור על רשימת כתובות ה-IP של ממשק הרשת של המערכת.

שיטות במופע יחיד של המחלקה הזו לא בטוחות לשרשורים. עם זאת, ניתן להשתמש במופעים נפרדים בו-זמנית במספר שרשורים.

במערכות LwIP עם שרשורים מרובים, המכונות בטוחות לשרשורים ביחס לשרשורים אחרים שניגשים למצב LwIP הגלובלי, בתנאי ש: 1) ב-threads אחרים מחזיקים את נעילת הליבה של LwIP בזמן שהם משנים את רשימת ה-netifs. 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
מחזירה את מזהה ממשק הרשת המשויך לכתובת הממשק הנוכחית.
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
)

מחזירה את מזהה ממשק הרשת המשויך לכתובת הממשק הנוכחית.

פרטים
החזרות
מזהה הממשק או 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
)

מחזירה אם ממשק הרשת המשויך לכתובת הממשק הנוכחית הוא למעלה.

פרטים
החזרות
true אם ממשק הרשת הנוכחי מופעל, false אם לא, או אם האיטרטור לא ממוקם בכתובת של הממשק.

הבא

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.

ממחזר את כל המשאבים שהוקצו על ידי הבונה.