nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

Internet Protocol-Adresse.

Zusammenfassung

Die Nest-Inet-Schicht verwendet Objekte dieser Klasse, um Internetprotokolladressen (unabhängig von der Protokollversion) darzustellen.

Öffentliche Attribute

Addr[4]
uint32_t
Undurchsichtiges Wortarray zur Aufnahme von IP-Adressen (unabhängig von der Protokollversion)

Öffentliche statische Attribute

Any
Das unterschiedene nicht spezifizierte IP-Adressobjekt.

Öffentliche Funktionen

GlobalId(void) const
uint64_t
Extrahieren Sie die globale 16-Bit-Netzwerk-ID einer IPv6-ULA-Adresse.
InterfaceId(void) const
uint64_t
Extrahieren Sie die IID einer IPv6-ULA-Adresse.
IsIPv4(void) const
bool
Testen Sie, ob die Adresse IPv4-kompatibel ist.
IsIPv4Broadcast(void) const
bool
Testen Sie, ob die Adresse IPv4-Broadcast ist.
IsIPv4Multicast(void) const
bool
Testen Sie, ob die Adresse IPv4-Multicast ist.
IsIPv6(void) const
bool
Testen Sie, ob die Adresse IPv6-kompatibel ist.
IsIPv6GlobalUnicast(void) const
bool
Testen Sie, ob die Adresse eine globale IPv6-Unicast-Adresse ist.
IsIPv6LinkLocal(void) const
bool
Testen Sie, ob die Adresse eine IPv6-Link-Local-Adresse (LL) ist.
IsIPv6Multicast(void) const
bool
Testen Sie, ob die Adresse IPv6-Multicast ist.
IsIPv6ULA(void) const
bool
Testen Sie, ob die Adresse eine eindeutige IPv6-Adresse ist.
IsMulticast(void) const
bool
Testen Sie, ob die Adresse IPv4- oder IPv6-Multicast ist.
Subnet(void) const
uint16_t
Extrahieren Sie die 16-Bit-Subnetz-ID einer IPv6-ULA-Adresse.
ToIPv4(void) const
Extrahieren Sie die IPv4-Adresse als Plattformdatenstruktur.
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
Extrahieren Sie die IPv6-Adresse als Plattformdatenstruktur.
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
Geben Sie die IP-Adresse im herkömmlichen Textdarstellungsformat aus.
Type(void) const
IPAddressType
Extrahieren Sie den Typ der IP-Adresse.
WriteAddress(uint8_t *& p) const
void
Geben Sie die IP-Adresse in der Standard-Netzwerkdarstellung aus.
operator!=(const IPAddress & other) const
bool
Vergleichen Sie diese IP-Adresse mit einer anderen IP-Adresse auf Ungleichheiten.
operator=(const IPAddress & other)
Konventioneller Zuweisungsoperator.
operator==(const IPAddress & other) const
bool
Vergleichen Sie diese IP-Adresse mit einer anderen.

Öffentliche statische Funktionen

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
IPv4-Adresse aus einer Plattformdatenstruktur einschleusen
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
IPv6-Adresse aus einer Plattformdatenstruktur einschleusen
FromSockAddr(const struct sockaddr & sockaddr)
IPv6-Adresse aus einem POSIX-struct sockaddr& einschleusen
FromString(const char *str, IPAddress & output)
bool
Scannen Sie die IP-Adresse aus dem herkömmlichen Präsentationstext.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Scannen Sie die IP-Adresse aus dem herkömmlichen Präsentationstext.
MakeIPv4Broadcast(void)
Erstellen Sie eine IPv4-Broadcastadresse.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
IPv6-Multicast-Adresse aus ihren Teilen erstellen
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
IPv6-Multicast-Adresse aus ihren Teilen erstellen
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Erstellen Sie eine vorübergehende IPv6-Multicast-Adresse mit Präfix aus ihren Teilen.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Eine vorübergehende IPv6-Multicast-Adresse aus ihren Teilen erstellen.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Aus ihren Teilen eine bekannte IPv6-Multicast-Adresse erstellen
MakeLLA(uint64_t interfaceId)
Eine IPv6-Link-Local-Adresse (LL) aus ihrer IID konstruieren.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Erstellen Sie aus ihren Teilen eine eindeutige IPv6-Adresse (Unique-Local-IP-Adresse).
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Geben Sie die IP-Adresse in der Standard-Netzwerkdarstellung aus.

Öffentliche Attribute

Addr

uint32_t Addr[4]

Undurchsichtiges Wortarray zur Aufnahme von IP-Adressen (unabhängig von der Protokollversion)

Bei IPv6-Adressen werden alle 128-Bit-Zahlen in vier geordnete 32-Bit-Ganzzahlen ohne Vorzeichen verwendet. IPv4-Adressen sind V4COMPAT, d.h. die ersten drei Wörter sind null und das vierte Wort enthält die IPv4-Adresse in Netzwerk-Byte-Reihenfolge.

Öffentliche statische Attribute

Beliebig

IPAddress Any

Das unterschiedene nicht spezifizierte IP-Adressobjekt.

Dieses Objekt wird als Konstante für Äquivalenzvergleiche verwendet. Es darf nicht von Nutzern der Nest-Ebene geändert werden.

Öffentliche Funktionen

GlobalId

uint64_t GlobalId(
  void
) const 

Extrahieren Sie die globale 16-Bit-Netzwerk-ID einer IPv6-ULA-Adresse.

Verwenden Sie diese Methode mit einer Unique-Local-IPv6-Adresse (ULA), um die globale Netzwerkkennung zu extrahieren, also die 40 Bits direkt nach dem Distinguished ULA-Netzwerkpräfix, z.B. fd00::/8. Mit anderen Worten, die globale Netzwerkkennung befindet sich in den fünf Byte zwischen dem zweiten und sechsten Byte der Adresse.

Details
Rückgabe
Globale 40-Bit-Netzwerk-ID oder null, wenn die IP-Adresse keine eindeutige IPv6-Adresse ist.

InterfaceId

uint64_t InterfaceId(
  void
) const 

Extrahieren Sie die IID einer IPv6-ULA-Adresse.

Verwenden Sie diese Methode mit einer eindeutigen IPv6-Adresse (ULA), um den Identifier Identifier (IID) zu extrahieren. Das sind die niedrigstwertigen 64 Bits der Adresse.

Details
Rückgabe
64-Bit-Schnittstellenkennung oder null, wenn die IP-Adresse keine eindeutige IPv6-Adresse ist.

IsIPv4

bool IsIPv4(
  void
) const 

Testen Sie, ob die Adresse IPv4-kompatibel ist.

Mit dieser Methode können Sie prüfen, ob die Adresse zur IPv4-Adressfamilie gehört. Beachten Sie, dass die nicht angegebene Adresse keine IPv4-Adresse ist.

Details
Rückgabewerte
true
Die Adresse ist IPv4 und nicht die nicht angegebene Adresse.
false
Die Adresse ist IPv6 oder die nicht angegebene Adresse.

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

Testen Sie, ob die Adresse IPv4-Broadcast ist.

Verwenden Sie diese Methode, um zu prüfen, ob die Adresse die spezielle IPv4-Broadcast-Adresse ist.

Details
Rückgabewerte
true
Adresse ist der IPv4-Broadcast
false
Andernfalls:

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Testen Sie, ob die Adresse IPv4-Multicast ist.

Mit dieser Methode können Sie prüfen, ob die Adresse eine IPv4-Multicast-Adresse ist.

Details
Rückgabewerte
true
Adresse ist ein IPv4-Multicast
false
Andernfalls:

IsIPv6

bool IsIPv6(
  void
) const 

Testen Sie, ob die Adresse IPv6-kompatibel ist.

Mit dieser Methode können Sie prüfen, ob die Adresse zur IPv6-Adressfamilie gehört. Beachten Sie, dass die nicht angegebene Adresse keine IPv6-Adresse ist.

Details
Rückgabewerte
true
Die Adresse ist IPv6 und nicht die nicht angegebene Adresse.
false
Die Adresse ist IPv4 oder die nicht angegebene Adresse.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

Testen Sie, ob die Adresse eine globale IPv6-Unicast-Adresse ist.

Mit dieser Methode können Sie prüfen, ob die Adresse zur IPv6-Adressfamilie gehört und das globale Unicast-Adresspräfix hat.

Details
Rückgabewerte
true
Adresse ist globales IPv6-Unicast
false
Andernfalls:

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Testen Sie, ob die Adresse eine IPv6-Link-Local-Adresse (LL) ist.

Mit dieser Methode können Sie prüfen, ob die Adresse zur IPv6-Adressfamilie gehört und das reservierte Link-Local-Adresspräfix von IPv6 hat.

Details
Rückgabewerte
true
Adresse ist IPv6-Link-Local
false
Andernfalls:

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Testen Sie, ob die Adresse IPv6-Multicast ist.

Mit dieser Methode können Sie prüfen, ob die Adresse zur IPv6-Adressfamilie gehört und das reservierte IPv6-Multicast-Adresspräfix hat.

Details
Rückgabewerte
true
Adresse ist IPv6-Multicast
false
Andernfalls:

ISIPv6ULA

bool IsIPv6ULA(
  void
) const 

Testen Sie, ob die Adresse eine eindeutige IPv6-Adresse ist.

Mit dieser Methode können Sie prüfen, ob die Adresse zur IPv6-Adressfamilie gehört und das reservierte Präfix für eindeutige IPv6-Adressen hat.

Details
Rückgabewerte
true
Adresse ist lokal (IPv6)
false
Andernfalls:

IsMulticast

bool IsMulticast(
  void
) const 

Testen Sie, ob die Adresse IPv4- oder IPv6-Multicast ist.

Prüfen Sie mit dieser Methode, ob die Adresse zur IPv4- oder IPv6-Adressfamilie gehört und das reservierte IPv4- oder IPv6-Multicast-Adresspräfix hat.

Details
Rückgabewerte
true
Adresse ist IPv4- oder IPv6-Multicast
false
Andernfalls:

Subnetz

uint16_t Subnet(
  void
) const 

Extrahieren Sie die 16-Bit-Subnetz-ID einer IPv6-ULA-Adresse.

Verwenden Sie diese Methode mit einer eindeutigen IPv6-Adresse (ULA), um die Subnetzkennung zu extrahieren. Das sind die niedrigstwertigen 16 Bits des Netzwerkpräfixes. Das Netzwerkpräfix umfasst die höchstwertigen 64 Bits der Adresse. Mit anderen Worten, die Subnetzkennung befindet sich im 7. und 8. Byte einer 16-Byte-Adresse.

Details
Rückgabe
16-Bit-Subnetzkennung oder null, wenn die IP-Adresse keine eindeutige IPv6-Adresse ist.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Extrahieren Sie die IPv4-Adresse als Plattformdatenstruktur.

Verwenden Sie nach Möglichkeit ToIPv4() const, um den Inhalt als IPv4-Adresse zu extrahieren. IPv6-Adressen und die nicht angegebene Adresse werden als 0.0.0.0 extrahiert.

Das Ergebnis ist entweder struct in_addr (bei POSIX) oder ip4_addr_t (bei LwIP).

Details
Rückgabe
Die gekapselte IPv4-Adresse oder 0.0.0.0, wenn die Adresse nicht angegeben ist oder keine IPv4-Adresse ist.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Extrahieren Sie die IPv6-Adresse als Plattformdatenstruktur.

Verwenden Sie nach Möglichkeit ToIPv6() const, um den Inhalt als IPv6-Adresse zu extrahieren. IPv4-Adressen und die nicht angegebene Adresse werden als [::] extrahiert.

Das Ergebnis ist entweder struct in6_addr (bei POSIX) oder ip6_addr_t (bei LwIP).

Details
Rückgabe
Die gekapselte IPv4-Adresse oder [::] if the address is either unspecified or not an IPv4 address.

ToIPv6

struct in6_addr ToIPv6(
  void
) const 

ZuString

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

Geben Sie die IP-Adresse im herkömmlichen Textdarstellungsformat aus.

Verwenden Sie ToString(char *buf, uint32_t bufSize) const, um die konventionelle Textdarstellungsform der IP-Adresse in den Arbeitsspeicher unter buf zu schreiben und bis zu bufSize Byte, einschließlich des NUL-Beendigungszeichens, zu erweitern.

Details
Parameter
[out] buf
Die Adresse des ausgegebenen Textes.
[in] bufSize
Die Größe des Zwischenspeichers für den ausgegebenen Text.

Hinweis: Auf einigen Plattformen nicht RFC 5952-konform. Eine Null-Komprimierung darf gemäß Abschnitt 4.2 nicht angewendet werden.

Details
Rückgabe
Das Argument buf, wenn kein Formatierungsfehler vorhanden ist, andernfalls Null.

Typ

IPAddressType Type(
  void
) const 

Extrahieren Sie den Typ der IP-Adresse.

Verwenden Sie diese Methode, um einen Wert des Enum-Typs IPAddressType zurückzugeben, der den Typ der IP-Adresse angibt.

Details
Rückgabewerte
kIPAddressType_IPv4
Die Adresse lautet IPv4.
kIPAddressType_IPv6
Die Adresse lautet IPv6.
kIPAddressType_Any
Die Adresse ist die nicht angegebene Adresse.

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

Geben Sie die IP-Adresse in der Standard-Netzwerkdarstellung aus.

Codieren Sie die IP-Adresse mit WriteAddress(uint8_t *&p) im Binärformat, das durch RFC 4291 für IPv6-Adressen definiert ist. IPv4-Adressen sind gemäß Abschnitt 2.5.5.1 "IPv4-kompatibel IPv6-Adresse (V4COMPAT)

Details
Parameter
[in,out] p
Verweis auf den Cursor, der zum Schreiben verwendet werden soll.

operator!=

bool operator!=(
  const IPAddress & other
) const 

Vergleichen Sie diese IP-Adresse mit einer anderen IP-Adresse auf Ungleichheiten.

Details
Parameter
[in] other
Die zu vergleichende Adresse.
Rückgabewerte
true
Entspricht other
false
Andernfalls:

operator=

IPAddress & operator=(
  const IPAddress & other
)

Konventioneller Zuweisungsoperator.

Details
Parameter
[in] other
Die zu kopierende Adresse.
Rückgabe
Ein Verweis auf dieses Objekt.

Operator==

bool operator==(
  const IPAddress & other
) const 

Vergleichen Sie diese IP-Adresse mit einer anderen.

Details
Parameter
[in] other
Die zu vergleichende Adresse.
Rückgabewerte
true
Entspricht other
false
Andernfalls:

Öffentliche statische Funktionen

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Dies ist eine überlastete Mitgliederfunktion, die der Einfachheit halber zur Verfügung gestellt wird. Sie unterscheidet sich von der obigen Funktion nur darin, welche Argumente sie akzeptiert.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

IPv4-Adresse aus einer Plattformdatenstruktur einschleusen

Verwenden Sie FromIPv4(const ip4_addr_t &addr), um addr als IPv4-Adresse einzufügen.

Das Argument addr ist entweder vom Typ const struct in_addr& (bei POSIX) oder const ip4_addr_t& (bei LwIP).

Details
Rückgabe
Die erstellte IP-Adresse.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Dies ist eine überlastete Mitgliederfunktion, die der Einfachheit halber zur Verfügung gestellt wird. Sie unterscheidet sich von der obigen Funktion nur darin, welche Argumente sie akzeptiert.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

IPv6-Adresse aus einer Plattformdatenstruktur einschleusen

Verwenden Sie FromIPv6(const ip6_addr_t &addr), um addr als IPv6-Adresse einzufügen.

Das Argument addr ist entweder vom Typ const struct in6_addr& (bei POSIX) oder const ip6_addr_t& (bei LwIP).

Details
Rückgabe
Die erstellte IP-Adresse.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

IPv6-Adresse aus einem POSIX-struct sockaddr& einschleusen

Verwenden Sie FromSockAddr(const struct sockaddr& sockaddr), um sockaddr.sa_addr als IPv6-Adresse einzufügen.

Details
Rückgabe
Die erstellte IP-Adresse.

FromString

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

Scannen Sie die IP-Adresse aus dem herkömmlichen Präsentationstext.

Verwenden Sie FromString(const char *str, IPAddress& output), um eine IP-Adresse durch Scannen einer herkömmlichen Textpräsentation unter str zu überschreiben.

Details
Parameter
[in] str
Die Adresse des ausgegebenen Textes.
[out] output
Das Objekt, das auf die gescannte Adresse festgelegt werden soll.

Details
Rückgabewerte
true
Das Präsentationsformat ist gültig
false
Andernfalls:

FromString

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

Scannen Sie die IP-Adresse aus dem herkömmlichen Präsentationstext.

Verwenden Sie FromString(const char *str, size_t strLen, IPAddress& output), um eine IP-Adresse durch Scannen einer herkömmlichen Textpräsentation unter str zu überschreiben.

Details
Parameter
[in] str
Ein Zeiger auf den Text, der gescannt werden soll.
[in] strLen
Die Länge des zu scannenden Textes.
[out] output
Das Objekt, das auf die gescannte Adresse festgelegt werden soll.

Details
Rückgabewerte
true
Das Präsentationsformat ist gültig
false
Andernfalls:

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Erstellen Sie eine IPv4-Broadcastadresse.

Details
Rückgabe
Die erstellte IP-Adresse.

MakeIPv6Multicast

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

IPv6-Multicast-Adresse aus ihren Teilen erstellen

Verwenden Sie MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]), um eine IPv6-Multicast-Adresse mit flags für den Routingbereich scope und die Gruppenkennungs-Oktette groupId zu erstellen.

Details
Rückgabe
Die erstellte IP-Adresse.

MakeIPv6Multicast

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

IPv6-Multicast-Adresse aus ihren Teilen erstellen

Verwenden Sie MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId), um eine IPv6-Multicast-Adresse mit flags für den Routingbereich scope und die Gruppen-ID groupId zu erstellen.

Details
Rückgabe
Die erstellte IP-Adresse.

MakeIPv6PrefixMulticast

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

Erstellen Sie eine vorübergehende IPv6-Multicast-Adresse mit Präfix aus ihren Teilen.

Verwenden Sie MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId), um eine vorübergehende IPv6-Multicast-Adresse mit dem Routingbereich scope und den Oktetten groupId der Gruppenkennung zu erstellen, die durch das Präfix prefix mit einer Länge von prefixlen Bit qualifiziert sind.

Details
Rückgabe
Die erstellte IP-Adresse.

MakeIPv6TransientMulticast

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

Eine vorübergehende IPv6-Multicast-Adresse aus ihren Teilen erstellen.

Verwenden Sie MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]), um eine vorübergehende IPv6-Multicast-Adresse mit flags für den Routingbereich scope und die Gruppenkennungs-Oktette groupId zu erstellen.

Details
Rückgabe
Die erstellte IP-Adresse.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Aus ihren Teilen eine bekannte IPv6-Multicast-Adresse erstellen

Verwenden Sie MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId), um eine IPv6-Multicast-Adresse für den Routingbereich scope und die Gruppen-ID groupId zu erstellen.

Details
Rückgabe
Die erstellte IP-Adresse.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Eine IPv6-Link-Local-Adresse (LL) aus ihrer IID konstruieren.

Verwenden Sie MakeLLA(uint64_t interfaceId), um eine IPv6-Link-Local-Adresse (LL) mit der Schnittstellenkennung interfaceId zu erstellen.

Details
Rückgabe
Die erstellte IP-Adresse.

MakeULA

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

Erstellen Sie aus ihren Teilen eine eindeutige IPv6-Adresse (Unique-Local-IP-Adresse).

Verwenden Sie MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId), um eine eindeutige lokale Adresse (ULA) mit der globalen Netzwerk-ID globalId, der Subnetz-ID subnet und der Schnittstellen-ID (IID) interfaceId zu erstellen.

Details
Rückgabe
Die erstellte IP-Adresse.

ReadAddress

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

Geben Sie die IP-Adresse in der Standard-Netzwerkdarstellung aus.

Decodieren Sie die IP-Adresse unter p mit ReadAddress(uint8_t *&p, IPAddress &output) im Objekt output.

Details
Parameter
[in,out] p
Verweis auf den Cursor, der zum Lesen verwendet werden soll.
[out] output
Objekt zum Empfangen der decodierten IP-Adresse.