nl :: إنت :: عنوان IP

#include <src/inet/IPAddress.h>

عنوان بروتوكول الإنترنت.

ملخص

تستخدم طبقة Nest Inet كائنات من هذه الفئة لتمثيل عناوين بروتوكول الإنترنت (بغض النظر عن إصدار البروتوكول).

السمات العامة

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
اختبر ما إذا كان العنوان هو IPv4 متعدد البث.
IsIPv6 (void) const
bool
اختبر ما إذا كان العنوان متوافقًا مع IPv6.
IsIPv6GlobalUnicast (void) const
bool
اختبر ما إذا كان العنوان هو عنوان أحادي الإرسال العام IPv6.
IsIPv6LinkLocal (void) const
bool
اختبر ما إذا كان العنوان هو عنوان الارتباط المحلي IPv6 (LL).
IsIPv6Multicast (void) const
bool
اختبر ما إذا كان العنوان هو IPv6 متعدد البث.
IsIPv6ULA (void) const
bool
اختبر ما إذا كان العنوان هو عنوان IPv6 المحلي الفريد (ULA).
IsMulticast (void) const
bool
اختبر ما إذا كان العنوان متعدد البث IPv4 أو IPv6.
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 من POSIX struct sockaddr&
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 متعدد البث من أجزائه.
MakeIPv6Multicast (uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
قم ببناء عنوان IPv6 متعدد البث من أجزائه.
MakeIPv6PrefixMulticast (uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
أنشئ عنوان بث عابر ببادئة IPv6 من أجزائه.
MakeIPv6TransientMulticast (uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
أنشئ عنوان بث متعدد IPv6 عابر من أجزائه.
MakeIPv6WellKnownMulticast (uint8_t aScope, uint32_t aGroupId)
أنشئ عنوان بث متعدد IPv6 معروف جيدًا من أجزائه.
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 في تمثيل الشبكة القياسي.

السمات العامة

العنوان

uint32_t Addr[4]

مصفوفة كلمات مبهمة لتحتوي على عناوين IP (بغض النظر عن إصدار البروتوكول)

يستخدم عنوان IPv6 كل 128 بت مقسمة إلى أربعة أعداد صحيحة بدون إشارة مرتبة 32 بت للشبكة. عناوين IPv4 هي V4COMPAT ، أي أن الكلمات الثلاث الأولى هي صفر ، بينما تحتوي الكلمة الرابعة على عنوان IPv4 بترتيب بايت الشبكة.

السمات العامة الثابتة

أي

IPAddress Any

كائن عنوان IP المميز غير المحدد.

يتم استخدام هذا الكائن باعتباره ثابتًا لمقارنات التكافؤ. يجب ألا يتم تعديله بواسطة مستخدمي طبقة Nest Inet.

الوظائف العامة

GlobalId

uint64_t GlobalId(
  void
) const 

استخراج معرف الشبكة العمومية 16 بت لعنوان IPv6 ULA.

استخدم هذه الطريقة مع عنوان IPv6 المحلي الفريد (ULA) لاستخراج معرف الشبكة العالمية ، وهو 40 بت بعد بادئة شبكة ULA المميزة ، أي fd00 :: / 8. بمعنى آخر ، يقع معرف الشبكة العالمية في الخمس بايتات من الثانية إلى السادسة بايت في العنوان.

تفاصيل
عائدات
معرف شبكة عالمية 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 

اختبر ما إذا كان العنوان هو IPv4 متعدد البث.

استخدم هذه الطريقة للتحقق مما إذا كان العنوان هو عنوان IPv4 متعدد البث.

تفاصيل
إرجاع القيم
true
العنوان هو البث المتعدد IPv4
false
غير ذلك

IsIPv6

bool IsIPv6(
  void
) const 

اختبر ما إذا كان العنوان متوافقًا مع IPv6.

استخدم هذه الطريقة للتحقق مما إذا كان العنوان ينتمي إلى عائلة عناوين IPv6. لاحظ جيدًا: العنوان غير المحدد ليس عنوان IPv6.

تفاصيل
إرجاع القيم
true
العنوان هو IPv6 وليس العنوان غير المحدد.
false
العنوان هو IPv4 أو العنوان غير المحدد.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

اختبر ما إذا كان العنوان هو عنوان أحادي الإرسال العام IPv6.

استخدم هذه الطريقة للتحقق مما إذا كان العنوان ينتمي إلى عائلة عناوين IPv6 ولديه بادئة عنوان أحادي الإرسال العام.

تفاصيل
إرجاع القيم
true
العنوان هو IPv6 أحادي الإرسال العالمي
false
غير ذلك

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

اختبر ما إذا كان العنوان هو عنوان الارتباط المحلي IPv6 (LL).

استخدم هذه الطريقة للتحقق مما إذا كان العنوان ينتمي إلى عائلة عناوين IPv6 ولديه بادئة عنوان ارتباط محلي محجوز لـ IPv6.

تفاصيل
إرجاع القيم
true
العنوان هو IPv6-link-local
false
غير ذلك

IsIPv6 متعدد الإرسال

bool IsIPv6Multicast(
  void
) const 

اختبر ما إذا كان العنوان هو IPv6 متعدد البث.

استخدم هذه الطريقة للتحقق مما إذا كان العنوان ينتمي إلى عائلة عناوين IPv6 ولديه بادئة عنوان البث المتعدد IPv6 المحجوز.

تفاصيل
إرجاع القيم
true
العنوان هو IPv6 متعدد البث
false
غير ذلك

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

اختبر ما إذا كان العنوان هو عنوان IPv6 المحلي الفريد (ULA).

استخدم هذه الطريقة للتحقق مما إذا كان العنوان ينتمي إلى عائلة عناوين IPv6 ولديه بادئة عنوان محلي فريد محجوز لـ IPv6.

تفاصيل
إرجاع القيم
true
العنوان هو IPv6 محلي فريد
false
غير ذلك

IsMulticast

bool IsMulticast(
  void
) const 

اختبر ما إذا كان العنوان متعدد البث IPv4 أو IPv6.

استخدم هذه الطريقة للتحقق مما إذا كان العنوان ينتمي إلى عائلة عناوين IPv4 أو IPv6 ولديه بادئة عنوان البث المتعدد IPv4 أو IPv6 المحجوز.

تفاصيل
إرجاع القيم
true
العنوان هو البث المتعدد IPv4 أو IPv6
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 

إلى سلسلة

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

انبعث عنوان IP بتنسيق عرض نصي تقليدي.

استخدام ToString(char *buf, uint32_t bufSize) const لكتابة شكل عرض النص التقليدي من عنوان IP إلى الذاكرة الموجودة في buf ويمتد بقدر 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
العنوان هو العنوان غير المحدد.

اكتب العنوان

void WriteAddress(
  uint8_t *& p
) const 

انبعث عنوان IP في تمثيل الشبكة القياسي.

استخدام WriteAddress(uint8_t *&p) لتشفير عنوان IP في تنسيق ثنائي المحددة من قبل RFC 4291 للعناوين IPv6. يتم ترميز عناوين IPv4 وفقًا للقسم 2.5.5.1 "عنوان IPv4 المتوافق مع IPv4" (V4COMPAT).

تفاصيل
المعلمات
[in,out] p
إشارة إلى المؤشر لاستخدامه في الكتابة.

عامل! =

bool operator!=(
  const IPAddress & other
) const 

قارن عنوان IP هذا بآخر من أجل عدم التكافؤ.

تفاصيل
المعلمات
[in] other
العنوان المراد مقارنته.
إرجاع القيم
true
إذا ما يعادل other
false
غير ذلك

عامل التشغيل =

IPAddress & operator=(
  const IPAddress & other
)

عامل التخصيص التقليدي.

تفاصيل
المعلمات
[in] other
العنوان المراد نسخه.
عائدات
إشارة إلى هذا الكائن.

عامل التشغيل ==

bool operator==(
  const IPAddress & other
) const 

قارن عنوان IP هذا بآخر من أجل التكافؤ.

تفاصيل
المعلمات
[in] other
العنوان المراد مقارنته.
إرجاع القيم
true
إذا ما يعادل other
false
غير ذلك

وظائف ثابتة عامة

من IPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

هذه وظيفة عضو محملة بشكل زائد ، مقدمة للراحة. إنها تختلف عن الوظيفة المذكورة أعلاه فقط في الحجة (الحجج) التي تقبلها.

من IPv4

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 الذي تم إنشاؤه.

من IPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

هذه وظيفة عضو محملة بشكل زائد ، مقدمة للراحة. إنها تختلف عن الوظيفة المذكورة أعلاه فقط في الحجة (الحجج) التي تقبلها.

من IPv6

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 من POSIX struct sockaddr&

استخدام 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
غير ذلك

MakeIPv4 البث

IPAddress MakeIPv4Broadcast(
  void
)

أنشئ عنوان بث IPv4.

تفاصيل
عائدات
عنوان IP الذي تم إنشاؤه.

IPv6 متعدد الإرسال

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

قم ببناء عنوان IPv6 متعدد البث من أجزائه.

استخدام MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) لبناء عنوان الإرسال المتعدد الإصدار IPv6 مع flags لتوجيه نطاق scope والثمانية مجموعة معرف groupId .

تفاصيل
عائدات
عنوان IP الذي تم إنشاؤه.

IPv6 متعدد الإرسال

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

قم ببناء عنوان IPv6 متعدد البث من أجزائه.

استخدام MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) لبناء عنوان الإرسال المتعدد الإصدار IPv6 مع flags لتوجيه نطاق scope ومجموعة معرف groupId .

تفاصيل
عائدات
عنوان IP الذي تم إنشاؤه.

IPv6Prefix متعدد الإرسال

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

أنشئ عنوان بث عابر ببادئة IPv6 من أجزائه.

استخدام MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) لبناء عابرة، بادئة ب IPv6 الإرسال عنوان مع لتوجيه نطاق scope والثمانية مجموعة معرف groupId ، المؤهلين من خلال البادئة prefix من طول prefixlen بت.

تفاصيل
عائدات
عنوان IP الذي تم إنشاؤه.

IPv6TransientMulticast

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

أنشئ عنوان بث متعدد IPv6 عابر من أجزائه.

استخدام MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) لبناء عابرة الإصدار IPv6 الإرسال عنوان مع flags لتوجيه نطاق scope والثمانية مجموعة معرف groupId .

تفاصيل
عائدات
عنوان IP الذي تم إنشاؤه.

IPv6WellKnown متعدد الإرسال

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

أنشئ عنوان بث متعدد IPv6 معروف جيدًا من أجزائه.

استخدام MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) لبناء عنوان الإرسال المتعدد IPv6 من أجل توجيه نطاق scope ومجموعة معرف groupId .

تفاصيل
عائدات
عنوان IP الذي تم إنشاؤه.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

أنشئ عنوان ارتباط محلي IPv6 (LL) من IID الخاص به.

استخدام MakeLLA(uint64_t interfaceId) لبناء الارتباط المحلي عنوان IPv6 (LL) مع واجهة معرف interfaceId .

تفاصيل
عائدات
عنوان IP الذي تم إنشاؤه.

ميكولا

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 الذي تم إنشاؤه.

قراءة العنوان

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

انبعث عنوان IP في تمثيل الشبكة القياسي.

استخدام ReadAddress(uint8_t *&p, IPAddress &output) لفك عنوان IP في p إلى كائن output .

تفاصيل
المعلمات
[in,out] p
إشارة إلى المؤشر لاستخدامه للقراءة.
[out] output
كائن لتلقي عنوان IP الذي تم فك ترميزه.