nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

כתובת פרוטוקול אינטרנט.

סיכום

Nest Inet Layer משתמשת באובייקטים מהמחלקה הזו כדי לייצג כתובות פרוטוקול אינטרנט (בהתאם לגרסת הפרוטוקול).

מאפיינים ציבוריים

Addr[4]
uint32_t
מערך מילים אטום שיכיל כתובות IP (ללא תלות בגרסת הפרוטוקול)

מאפיינים סטטיים ציבוריים

Any
האובייקט הייחודי של כתובת ה-IP ולא צוין.

פונקציות ציבוריות

GlobalId(void) const
uint64_t
מחלצים את מזהה הרשת הגלובלי של 16 ביט של כתובת IPv6 ULA.
InterfaceId(void) const
uint64_t
מחלצים את ה-IID של כתובת IPv6 ULA.
IsIPv4(void) const
bool
לבדוק אם הכתובת תואמת ל-IPv4.
IsIPv4Broadcast(void) const
bool
בדיקה אם הכתובת היא שידור IPv4.
IsIPv4Multicast(void) const
bool
לבדוק אם הכתובת היא Multicast של IPv4.
IsIPv6(void) const
bool
לבדוק אם הכתובת תואמת ל-IPv6.
IsIPv6GlobalUnicast(void) const
bool
בדיקה אם הכתובת היא כתובת unicast גלובלית של IPv6.
IsIPv6LinkLocal(void) const
bool
לבדוק אם הכתובת היא כתובת מקומית של קישור IPv6 (LL).
IsIPv6Multicast(void) const
bool
לבדוק אם הכתובת היא Multicast של IPv6.
IsIPv6ULA(void) const
bool
בודקים אם הכתובת היא כתובת מקומית ייחודית (ULA) של IPv6.
IsMulticast(void) const
bool
בודקים אם הכתובת היא IPv4 או IPv6 Multicast.
Subnet(void) const
uint16_t
מחלצים את מזהה רשת המשנה של 16 ביט של כתובת IPv6 ULA.
ToIPv4(void) const
מחלצים את כתובת ה-IPv4 כמבנה נתונים של פלטפורמה.
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
מחלצים את כתובת ה-IPv6 כמבנה נתונים של פלטפורמה.
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
פלט את כתובת ה-IP בפורמט קונבנציונלי להצגת טקסט.
Type(void) const
IPAddressType
מחלצים את הסוג של כתובת ה-IP.
WriteAddress(uint8_t *& p) const
void
פלט את כתובת ה-IP בייצוג רשת סטנדרטי.
operator!=(const IPAddress & other) const
bool
צריך להשוות את כתובת ה-IP הזו לכתובת אחרת לצורך חוסר שקילות.
operator=(const IPAddress & other)
אופרטור הקצאות רגיל.
operator==(const IPAddress & other) const
bool
לצורך השוואה, יש להשוות את כתובת ה-IP הזו לכתובת אחרת.

פונקציות סטטיות ציבוריות

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
מחדירים את כתובת ה-IPv4 ממבנה הנתונים של הפלטפורמה.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
מחדירים את כתובת ה-IPv6 ממבנה הנתונים של הפלטפורמה.
FromSockAddr(const struct sockaddr & sockaddr)
הוספת כתובת IPv6 מ-struct sockaddr& של POSIX
FromString(const char *str, IPAddress & output)
bool
סריקת כתובת ה-IP מהטקסט הרגיל של המצגת.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
סריקת כתובת ה-IP מהטקסט הרגיל של המצגת.
MakeIPv4Broadcast(void)
בנו כתובת שידור של IPv4.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
בנו כתובת IPv6 Multicast מהחלקים שלה.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
בנו כתובת IPv6 Multicast מהחלקים שלה.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
בנו כתובת זמנית, עם קידומת של כתובת Multicast של IPv6 מהחלקים שלה.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
בנייה של כתובת Multicast של IPv6 זמנית מהחלקים שלה.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
בנו כתובת ידועה של IPv6 Multicast מהחלקים שלה.
MakeLLA(uint64_t interfaceId)
בנו כתובת מקומית של קישור IPv6 (LL) מה-IID שלה.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
לבנות כתובת מקומית ייחודית של IPv6 (ULA) מהחלקים שלו.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
פלט את כתובת ה-IP בייצוג רשת סטנדרטי.

מאפיינים ציבוריים

Addr

uint32_t Addr[4]

מערך מילים אטום שיכיל כתובות IP (ללא תלות בגרסת הפרוטוקול)

כתובת IPv6 משתמשת בכל מספרי ה-128 סיביות המפוצלים לארבעה מספרים שלמים לא חתומים של 32 ביט ברשת. כתובות IPv4 הן V4COMPAT, כלומר שלוש המילים הראשונות הן אפס והמילה הרביעית מכילה את כתובת IPv4 לפי סדר בייטים ברשת.

מאפיינים סטטיים ציבוריים

הכול

IPAddress Any

האובייקט הייחודי של כתובת ה-IP ולא צוין.

האובייקט הזה משמש כקבוע להשוואות שקילות. המשתמשים בשכבת Inet של Nest לא יכולים לשנות אותו.

פונקציות ציבוריות

GlobalId

uint64_t GlobalId(
  void
) const 

מחלצים את מזהה הרשת הגלובלי של 16 ביט של כתובת IPv6 ULA.

משתמשים בשיטה הזו עם כתובת מקומית ייחודית של IPv6 (ULA) כדי לחלץ את מזהה הרשת הגלובלית, שהוא 40 הביטים מיד אחרי הקידומת המובחנת של רשת ULA, כלומר fd00::/8. במילים אחרות, מזהה הרשת הגלובלית ממוקם ב-5 הבייטים מהבייט השני עד השישי בכתובת.

פרטים
החזרות
מזהה רשת גלובלי של 40 ביט, או אפס אם כתובת ה-IP היא לא כתובת מקומית ייחודית של IPv6.

InterfaceId

uint64_t InterfaceId(
  void
) const 

מחלצים את ה-IID של כתובת IPv6 ULA.

משתמשים בשיטה הזו עם כתובת מקומית ייחודית של IPv6 (ULA) כדי לחלץ את מזהה המזהה (IID), שהוא 64 הביטים המשמעותיים ביותר של הכתובת.

פרטים
החזרות
מזהה ממשק של 64 ביט, או אפס אם כתובת ה-IP אינה כתובת מקומית ייחודית של IPv6.

IsIPv4

bool IsIPv4(
  void
) const 

לבדוק אם הכתובת תואמת ל-IPv4.

אפשר להשתמש בשיטה הזו כדי לבדוק אם הכתובת שייכת למשפחת כתובות ה-IPv4. שימו לב: הכתובת שלא צוינה היא לא כתובת IPv4.

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

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

בדיקה אם הכתובת היא שידור IPv4.

אפשר להשתמש בשיטה הזו כדי לבדוק אם הכתובת היא למטרה המיוחדת של כתובת השידור של IPv4.

פרטים
מוחזר ערכים
true
הכתובת היא השידור של IPv4
false
אחרת

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

לבדוק אם הכתובת היא Multicast של IPv4.

אפשר להשתמש בשיטה הזו כדי לבדוק אם הכתובת היא כתובת של פרוטוקול IPv4 Multicast.

פרטים
מוחזר ערכים
true
הכתובת היא ה-Multicast של IPv4
false
אחרת

IsIPv6

bool IsIPv6(
  void
) const 

לבדוק אם הכתובת תואמת ל-IPv6.

משתמשים בשיטה הזו כדי לבדוק אם הכתובת שייכת למשפחת כתובות ה-IPv6. שימו לב: הכתובת שלא צוינה היא לא כתובת IPv6.

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

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

בדיקה אם הכתובת היא כתובת unicast גלובלית של IPv6.

משתמשים בשיטה הזו כדי לבדוק אם הכתובת שייכת למשפחת כתובות IPv6 ואם יש לה קידומת גלובלית של כתובת unicast.

פרטים
מוחזר ערכים
true
הכתובת היא פרוטוקול unicast גלובלי של IPv6
false
אחרת

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

לבדוק אם הכתובת היא כתובת מקומית של קישור IPv6 (LL).

משתמשים בשיטה הזו כדי לבדוק אם הכתובת שייכת למשפחת כתובות IPv6 ושהקידומת של כתובת הקישור המקומית של IPv6 שמורה.

פרטים
מוחזר ערכים
true
הכתובת היא קישור מקומי בפורמט IPv6
false
אחרת

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

לבדוק אם הכתובת היא Multicast של IPv6.

משתמשים בשיטה הזו כדי לבדוק אם הכתובת שייכת למשפחת כתובות IPv6 ושיש לה קידומת שמורה של כתובת IPv6.

פרטים
מוחזר ערכים
true
הכתובת היא Multicast של IPv6
false
אחרת

איסIPv6ULA

bool IsIPv6ULA(
  void
) const 

בודקים אם הכתובת היא כתובת מקומית ייחודית (ULA) של IPv6.

משתמשים בשיטה הזו כדי לבדוק אם הכתובת שייכת למשפחת כתובות IPv6 ושהקידומת של הכתובת הייחודית של IPv6 שמורה.

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

IsMulticast

bool IsMulticast(
  void
) const 

בודקים אם הכתובת היא IPv4 או IPv6 Multicast.

משתמשים בשיטה הזו כדי לבדוק אם הכתובת שייכת למשפחת הכתובות של IPv4 או IPv6 ואם יש לה קידומת שמורה של כתובת IPv4 או IPv6.

פרטים
מוחזר ערכים
true
הכתובת היא IPv4 או IPv6 Multicast
false
אחרת

רשת משנה

uint16_t Subnet(
  void
) const 

מחלצים את מזהה רשת המשנה של 16 ביט של כתובת IPv6 ULA.

משתמשים בשיטה הזו עם כתובת מקומית ייחודית של IPv6 (ULA) כדי לחלץ את מזהה רשת המשנה, שהוא לפחות 16 ביטים מקידומת הרשת. קידומת הרשת היא 64 הביטים המשמעותיים ביותר של הכתובת. במילים אחרות, המזהה של רשת המשנה נמצא בבייטים השביעיים והשמיניים של כתובת של 16 בייטים.

פרטים
החזרות
מזהה של רשת משנה של 16 ביט, או אפס אם כתובת ה-IP אינה כתובת מקומית ייחודית של IPv6.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

מחלצים את כתובת ה-IPv4 כמבנה נתונים של פלטפורמה.

אם אפשר, משתמשים ב-ToIPv4() const כדי לחלץ את התוכן מכתובת IPv4. כתובות IPv6 והכתובת שלא צוינה נשלפות כ-0.0.0.0.

התוצאה היא מסוג struct in_addr (ב-POSIX) או ip4_addr_t (ב-LwIP).

פרטים
החזרות
כתובת ה-IPv4 הנכללת, או 0.0.0.0 אם הכתובת לא צוינה או שאינה כתובת IPv4.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

מחלצים את כתובת ה-IPv6 כמבנה נתונים של פלטפורמה.

אם אפשר, משתמשים ב-ToIPv6() const כדי לחלץ את התוכן מכתובת IPv6. כתובות IPv4 והכתובת שלא צוינה נשלפות כ-[::].

התוצאה היא מסוג struct in6_addr (ב-POSIX) או ip6_addr_t (ב-LwIP).

פרטים
החזרות
כתובת ה-IPv4 המקודדת, או [::] if the address is either unspecified or not an IPv4 address.

ToIPv6

struct in6_addr ToIPv6(
  void
) const 

מחרוזת ToString

char * ToString(
  char *buf,
  uint32_t bufSize
) const 

פלט את כתובת ה-IP בפורמט קונבנציונלי להצגת טקסט.

משתמשים ב-ToString(char *buf, uint32_t bufSize) const כדי לכתוב בזיכרון שממוקם ב-buf את הפורמט המקובל להצגת טקסט של כתובת IP, והוא מגיע ל-bufSize בייטים, כולל תו הסיום NUL.

פרטים
פרמטרים
[out] buf
הכתובת של הטקסט שנשלח.
[in] bufSize
גודל מאגר הנתונים הזמני של הטקסט שנפלט.

הערה: לא תואם ל-RFC 5952 בפלטפורמות מסוימות. באופן ספציפי, לא ניתן להחיל דחיסה אפס לפי סעיף 4.2.

פרטים
החזרות
הארגומנט buf אם אין שגיאת פורמט. אחרת, הוא יהיה אפס.

סוג

IPAddressType Type(
  void
) const 

מחלצים את הסוג של כתובת ה-IP.

משתמשים בשיטה הזו כדי להחזיר ערך מסוג המספור IPAddressType כדי לציין את הסוג של כתובת ה-IP.

פרטים
מוחזר ערכים
kIPAddressType_IPv4
הכתובת היא IPv4.
kIPAddressType_IPv6
הכתובת היא IPv6.
kIPAddressType_Any
הכתובת היא הכתובת שלא צוינה.

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

פלט את כתובת ה-IP בייצוג רשת סטנדרטי.

כדי לקודד את כתובת ה-IP בפורמט בינארי שמוגדר על ידי RFC 4291 עבור כתובות IPv6, צריך להשתמש ב-WriteAddress(uint8_t *&p). כתובות IPv4 מקודדות בהתאם לסעיף 2.5.5.1 "תאימות ל-IPv4 כתובת IPv6 (V4COMPAT).

פרטים
פרמטרים
[in,out] p
הפניה לסמן שישמש לכתיבה.

operator!=

bool operator!=(
  const IPAddress & other
) const 

צריך להשוות את כתובת ה-IP הזו לכתובת אחרת לצורך חוסר שקילות.

פרטים
פרמטרים
[in] other
הכתובת להשוואה.
מוחזר ערכים
true
אם היא שווה ל-other
false
אחרת

operator=

IPAddress & operator=(
  const IPAddress & other
)

אופרטור הקצאות רגיל.

פרטים
פרמטרים
[in] other
הכתובת להעתקה.
החזרות
הפניה לאובייקט הזה.

אופרטור==

bool operator==(
  const IPAddress & other
) const 

לצורך השוואה, יש להשוות את כתובת ה-IP הזו לכתובת אחרת.

פרטים
פרמטרים
[in] other
הכתובת להשוואה.
מוחזר ערכים
true
אם היא שווה ל-other
false
אחרת

פונקציות סטטיות ציבוריות

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

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

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

מחדירים את כתובת ה-IPv4 ממבנה הנתונים של הפלטפורמה.

אפשר להשתמש ב-FromIPv4(const ip4_addr_t &addr) כדי להחדיר את addr ככתובת IPv4.

הארגומנט addr הוא מסוג const struct in_addr& (ב-POSIX) או const ip4_addr_t& (ב-LwIP).

פרטים
החזרות
כתובת ה-IP המורכבת.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

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

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

מחדירים את כתובת ה-IPv6 ממבנה הנתונים של הפלטפורמה.

אפשר להשתמש ב-FromIPv6(const ip6_addr_t &addr) כדי להחדיר את addr ככתובת IPv6.

הארגומנט addr הוא מסוג const struct in6_addr& (ב-POSIX) או const ip6_addr_t& (ב-LwIP).

פרטים
החזרות
כתובת ה-IP המורכבת.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

הוספת כתובת IPv6 מ-struct sockaddr& של POSIX

אפשר להשתמש ב-FromSockAddr(const struct sockaddr& sockaddr) כדי להחדיר את sockaddr.sa_addr ככתובת IPv6.

פרטים
החזרות
כתובת ה-IP המורכבת.

FromString

bool FromString(
  const char *str,
  IPAddress & output
)

סריקת כתובת ה-IP מהטקסט הרגיל של המצגת.

אפשר להשתמש ב-FromString(const char *str, IPAddress& output) כדי להחליף כתובת IP על ידי סריקת התצוגה של טקסט רגיל שנמצאת בכתובת str.

פרטים
פרמטרים
[in] str
הכתובת של הטקסט שנשלח.
[out] output
האובייקט שיש להגדיר לכתובת שנסרקה.

פרטים
מוחזר ערכים
true
פורמט המצגת חוקי
false
אחרת

FromString

bool FromString(
  const char *str,
  size_t strLen,
  IPAddress & output
)

סריקת כתובת ה-IP מהטקסט הרגיל של המצגת.

אפשר להשתמש ב-FromString(const char *str, size_t strLen, IPAddress& output) כדי להחליף כתובת IP על ידי סריקת התצוגה של טקסט רגיל שנמצאת בכתובת str.

פרטים
פרמטרים
[in] str
מצביע אל הטקסט שרוצים לסרוק.
[in] strLen
אורך הטקסט שרוצים לסרוק.
[out] output
האובייקט שיש להגדיר לכתובת שנסרקה.

פרטים
מוחזר ערכים
true
פורמט המצגת חוקי
false
אחרת

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

בנו כתובת שידור של IPv4.

פרטים
החזרות
כתובת ה-IP המורכבת.

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

בנו כתובת IPv6 Multicast מהחלקים שלה.

משתמשים ב-MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) כדי ליצור כתובת Multicast של IPv6 עם flags להיקף הניתוב scope ו-8 תווים של מזהה הקבוצה groupId.

פרטים
החזרות
כתובת ה-IP המורכבת.

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  uint32_t aGroupId
)

בנו כתובת IPv6 Multicast מהחלקים שלה.

משתמשים ב-MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) כדי ליצור כתובת Multicast של IPv6 עם flags עבור היקף הניתוב scope ומזהה הקבוצה groupId.

פרטים
החזרות
כתובת ה-IP המורכבת.

MakeIPv6PrefixMulticast

IPAddress MakeIPv6PrefixMulticast(
  uint8_t aScope,
  uint8_t aPrefixLength,
  const uint64_t & aPrefix,
  uint32_t aGroupId
)

בנו כתובת זמנית, עם קידומת של כתובת Multicast של IPv6 מהחלקים שלה.

צריך להשתמש ב-MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) כדי ליצור כתובת משולבת של IPv6, בעלת קידומת עבור היקף הניתוב scope, ושמיניות של מזהה הקבוצה groupId, שאושרו על ידי הקידומת prefix באורך prefixlen ביטים.

פרטים
החזרות
כתובת ה-IP המורכבת.

MakeIPv6TransientMulticast

IPAddress MakeIPv6TransientMulticast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

בנייה של כתובת Multicast של IPv6 זמנית מהחלקים שלה.

משתמשים ב-MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) כדי ליצור כתובת Multicast של IPv6 זמנית עם flags להיקף הניתוב scope ו-8 תווים של מזהה הקבוצה groupId.

פרטים
החזרות
כתובת ה-IP המורכבת.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

בנו כתובת ידועה של IPv6 Multicast מהחלקים שלה.

משתמשים ב-MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) כדי ליצור כתובת Multicast של IPv6 עבור היקף הניתוב scope ומזהה הקבוצה groupId.

פרטים
החזרות
כתובת ה-IP המורכבת.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

בנו כתובת מקומית של קישור IPv6 (LL) מה-IID שלה.

משתמשים ב-MakeLLA(uint64_t interfaceId) כדי ליצור כתובת מקומית מסוג קישור של IPv6 (LL) עם מזהה הממשק interfaceId.

פרטים
החזרות
כתובת ה-IP המורכבת.

MakeULA

IPAddress MakeULA(
  uint64_t globalId,
  uint16_t subnet,
  uint64_t interfaceId
)

לבנות כתובת מקומית ייחודית של IPv6 (ULA) מהחלקים שלו.

שימוש ב-MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) כדי ליצור כתובת מקומית ייחודית (ULA) עם מזהה רשת גלובלי globalId, מזהה רשת משנה subnet ומזהה ממשק (IID) interfaceId.

פרטים
החזרות
כתובת ה-IP המורכבת.

ReadAddress

void ReadAddress(
  const uint8_t *& p,
  IPAddress & output
)

פלט את כתובת ה-IP בייצוג רשת סטנדרטי.

משתמשים ב-ReadAddress(uint8_t *&p, IPAddress &output) כדי לפענח את כתובת ה-IP ב-p לאובייקט output.

פרטים
פרמטרים
[in,out] p
הפניה לסמן שישמש לקריאה.
[out] output
אובייקט לקבלת כתובת IP מפוענחת.