nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

adres IP.

Podsumowanie

Warstwa Nest Inet używa obiektów tej klasy do reprezentowania adresów protokołów internetowych (niezależnie od wersji protokołu).

Atrybuty publiczne

Addr[4]
uint32_t
Nieprzezroczysta tablica słów do uwzględnienia adresów IP (niezależnie od wersji protokołu)

Publiczne atrybuty statyczne

Any
Rozróżniony obiekt nieokreślonego adresu IP.

Funkcje publiczne

GlobalId(void) const
uint64_t
Wyodrębnij 16-bitowy globalny identyfikator sieci adresu ULA IPv6.
InterfaceId(void) const
uint64_t
Wyodrębnij IID adresu ULA IPv6.
IsIPv4(void) const
bool
Sprawdź, czy adres jest zgodny z protokołem IPv4.
IsIPv4Broadcast(void) const
bool
Sprawdź, czy adres to transmisja IPv4.
IsIPv4Multicast(void) const
bool
Sprawdź, czy adres jest multiemisją IPv4.
IsIPv6(void) const
bool
Sprawdź, czy adres jest zgodny z protokołem IPv6.
IsIPv6GlobalUnicast(void) const
bool
Sprawdź, czy adres jest globalnym adresem typu unicast IPv6.
IsIPv6LinkLocal(void) const
bool
Sprawdź, czy adres to adres lokalny połączenia IPv6 (LL).
IsIPv6Multicast(void) const
bool
Sprawdź, czy adres jest multiemisją IPv6.
IsIPv6ULA(void) const
bool
Sprawdź, czy adres jest unikalnym lokalnym adresem IPv6 (ULA).
IsMulticast(void) const
bool
Sprawdź, czy adres jest multiemisją IPv4 czy IPv6.
Subnet(void) const
uint16_t
Wyodrębnij 16-bitowy identyfikator podsieci adresu ULA IPv6.
ToIPv4(void) const
Wyodrębnij adres IPv4 jako strukturę danych platformy.
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
Wyodrębnij adres IPv6 jako strukturę danych platformy.
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
Emituj adres IP w konwencjonalnym formacie prezentacji tekstowej.
Type(void) const
IPAddressType
Wyodrębnij typ adresu IP.
WriteAddress(uint8_t *& p) const
void
Emisja adresu IP w standardowej reprezentacji sieci.
operator!=(const IPAddress & other) const
bool
Porównaj ten adres IP z innym, aby uzyskać równoważność.
operator=(const IPAddress & other)
Standardowy operator przypisywania.
operator==(const IPAddress & other) const
bool
Porównaj ten adres IP z innym, aby uzyskać informacje o jego równoważności.

Publiczne funkcje statyczne

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
Wstrzyknij adres IPv4 ze struktury danych platformy.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
Wstrzyknij adres IPv6 ze struktury danych platformy.
FromSockAddr(const struct sockaddr & sockaddr)
Wstrzyknij adres IPv6 z POSIX struct sockaddr&
FromString(const char *str, IPAddress & output)
bool
Zeskanuj adres IP zgodnie z konwencjonalnym tekstem prezentacji.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Zeskanuj adres IP zgodnie z konwencjonalnym tekstem prezentacji.
MakeIPv4Broadcast(void)
Utwórz adres rozgłoszeniowy IPv4.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Zbuduj adres multiemisji IPv6 z jego części.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Zbuduj adres multiemisji IPv6 z jego części.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Utwórz tymczasowy adres multiemisji IPv6 poprzedzony prefiksem z jego części.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Utwórz tymczasowy adres multiemisji IPv6 z jego części.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Zbuduj dobrze znany adres multicast IPv6 z jego części.
MakeLLA(uint64_t interfaceId)
Utwórz adres lokalny połączenia IPv6 (LL) z jego identyfikatora IID.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Zbuduj unikalny lokalny adres IPv6 (ULA) z jego części.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Emisja adresu IP w standardowej reprezentacji sieci.

Atrybuty publiczne

Addr

uint32_t Addr[4]

Nieprzezroczysta tablica słów do uwzględnienia adresów IP (niezależnie od wersji protokołu)

Adres IPv6 wykorzystuje wszystkie 128-bitowe liczby podzielone na 4 32-bitowe bajty sieciowe, uporządkowane nieoznaczone liczby całkowite. Adresy IPv4 to typ V4COMPAT, co oznacza, że pierwsze 3 słowa to zero, a 4 – adres IPv4 w kolejności bajtów w sieci.

Publiczne atrybuty statyczne

Dowolny

IPAddress Any

Rozróżniony obiekt nieokreślonego adresu IP.

Ten obiekt jest używany jako stała w porównaniach równoważności. Nie mogą go zmieniać użytkownicy Nest Inet Layer.

Funkcje publiczne

GlobalId

uint64_t GlobalId(
  void
) const 

Wyodrębnij 16-bitowy globalny identyfikator sieci adresu ULA IPv6.

Użyj tej metody z unikalnym lokalnym adresem IPv6 (ULA), aby wyodrębnić globalny identyfikator sieci, czyli 40 bitów następujących bezpośrednio po wyróżniającym prefiksie sieci ULA, np. fd00::/8. Inaczej mówiąc, globalny identyfikator sieci znajduje się wśród 5 bajtów w adresie, od 2 do 6 bajta.

Szczegóły
Zwroty
40-bitowy globalny identyfikator sieci lub zero, jeśli adres IP nie jest unikalnym lokalnym adresem IPv6.

InterfaceId

uint64_t InterfaceId(
  void
) const 

Wyodrębnij IID adresu ULA IPv6.

Użyj tej metody z unikalnym lokalnym adresem IPv6 (ULA), aby wyodrębnić identyfikator (IID), czyli najmniej istotne 64 bity adresu.

Szczegóły
Zwroty
64-bitowy identyfikator interfejsu lub zero, jeśli adres IP nie jest unikalnym lokalnym adresem IPv6.

IsIPv4

bool IsIPv4(
  void
) const 

Sprawdź, czy adres jest zgodny z protokołem IPv4.

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv4. Pamiętaj, że nieokreślony adres nie jest adresem IPv4.

Szczegóły
Zwracane wartości
true
Adres to IPv4, a nie nieokreślony adres.
false
Adres to IPv6 lub nieokreślony adres.

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

Sprawdź, czy adres to transmisja IPv4.

Użyj tej metody, aby sprawdzić, czy adres jest specjalnym adresem rozgłoszeniowym IPv4.

Szczegóły
Zwracane wartości
true
Adres to emisja IPv4
false
W innym przypadku

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Sprawdź, czy adres jest multiemisją IPv4.

Użyj tej metody, aby sprawdzić, czy adres jest adresem multiemisji IPv4.

Szczegóły
Zwracane wartości
true
Adres to transmisja grupowa IPv4
false
W innym przypadku

IsIPv6

bool IsIPv6(
  void
) const 

Sprawdź, czy adres jest zgodny z protokołem IPv6.

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv6. Pamiętaj, że nieokreślony adres nie jest adresem IPv6.

Szczegóły
Zwracane wartości
true
Adres to IPv6, a nie nieokreślony adres.
false
Adres to IPv4 lub nieokreślony adres.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

Sprawdź, czy adres jest globalnym adresem typu unicast IPv6.

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv6 i ma globalny prefiks adresu typu unicast.

Szczegóły
Zwracane wartości
true
Adres to globalna transmisja pojedyncza IPv6
false
W innym przypadku

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Sprawdź, czy adres to adres lokalny połączenia IPv6 (LL).

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv6 i ma zarezerwowany prefiks adresu lokalnego połączenia IPv6.

Szczegóły
Zwracane wartości
true
Adres to połączenie lokalne IPv6
false
W innym przypadku

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Sprawdź, czy adres jest multiemisją IPv6.

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv6 i ma zarezerwowany prefiks adresu multiemisji IPv6.

Szczegóły
Zwracane wartości
true
Adres to multicast IPv6
false
W innym przypadku

IPv6ULA

bool IsIPv6ULA(
  void
) const 

Sprawdź, czy adres jest unikalnym lokalnym adresem IPv6 (ULA).

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv6 i ma zarezerwowany prefiks lokalnego unikalnego adresu IPv6.

Szczegóły
Zwracane wartości
true
Adres IPv6 jest unikalny
false
W innym przypadku

IsMulticast

bool IsMulticast(
  void
) const 

Sprawdź, czy adres jest multiemisją IPv4 czy IPv6.

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv4 lub IPv6 i ma zarezerwowany prefiks adresu multiemisji IPv4 lub IPv6.

Szczegóły
Zwracane wartości
true
Adres to multicast IPv4 lub IPv6
false
W innym przypadku

Podsieć

uint16_t Subnet(
  void
) const 

Wyodrębnij 16-bitowy identyfikator podsieci adresu ULA IPv6.

Użyj tej metody z unikalnym lokalnym adresem IPv6 (ULA), aby wyodrębnić identyfikator podsieci, czyli najmniej istotne 16 bitów prefiksu sieci. Prefiks sieci to najbardziej istotne 64 bity adresu. Inaczej mówiąc, identyfikator podsieci znajduje się w 7 i 8 bajcie 16-bajtowego adresu.

Szczegóły
Zwroty
16-bitowy identyfikator podsieci lub wartość 0, jeśli adres IP nie jest unikalnym lokalnym adresem IPv6.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Wyodrębnij adres IPv4 jako strukturę danych platformy.

Jeśli to możliwe, użyj metody ToIPv4() const, aby wyodrębnić zawartość jako adres IPv4. Adresy IPv6 i nieokreślony adres są wyodrębniane jako 0.0.0.0.

Wynik jest typu struct in_addr (w POSIX) lub ip4_addr_t (w LwIP).

Szczegóły
Zwroty
Zamknięty adres IPv4 lub 0.0.0.0, jeśli adres nie jest określony albo nie jest adresem IPv4.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Wyodrębnij adres IPv6 jako strukturę danych platformy.

Jeśli to możliwe, użyj metody ToIPv6() const, aby wyodrębnić zawartość jako adres IPv6. Adresy IPv4 i nieokreślony adres są wyodrębniane jako [::].

Wynik jest typu struct in6_addr (w POSIX) lub ip6_addr_t (w LwIP).

Szczegóły
Zwroty
Zamknięty adres IPv4, czyli [::] if the address is either unspecified or not an IPv4 address.

ToIPv6

struct in6_addr ToIPv6(
  void
) const 

Ciąg

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

Emituj adres IP w konwencjonalnym formacie prezentacji tekstowej.

Użyj ToString(char *buf, uint32_t bufSize) const, aby zapisać konwencjonalną prezentację tekstową adresu IP w pamięci znajdującej się pod adresem buf i rozciągać maksymalnie bufSize B, włącznie ze znakiem zakończenia NUL.

Szczegóły
Parametry
[out] buf
Adres wysyłanego tekstu.
[in] bufSize
Rozmiar bufora wysyłanego tekstu.

Uwaga: na niektórych platformach nie jest zgodny ze standardem RFC 5952. Zgodnie z artykułem 4.2 nie można stosować metody „zero kompresji”.

Szczegóły
Zwroty
Argument buf, jeśli nie ma błędu formatowania, lub zero w innym przypadku.

Typ

IPAddressType Type(
  void
) const 

Wyodrębnij typ adresu IP.

Użyj tej metody, aby zwrócić wartość określonego typu IPAddressType w celu wskazania typu adresu IP.

Szczegóły
Zwracane wartości
kIPAddressType_IPv4
Adres to IPv4.
kIPAddressType_IPv6
Adres to IPv6.
kIPAddressType_Any
Adres jest nieokreślony.

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

Emisja adresu IP w standardowej reprezentacji sieci.

Użyj WriteAddress(uint8_t *&p), aby zakodować adres IP w formacie binarnym zdefiniowanym przez RFC 4291 dla adresów IPv6. Adresy IPv4 są kodowane zgodnie z sekcją 2.5.5.1 „Zgodne z protokołem IPv4 Adres IPv6 (V4COMPAT).

Szczegóły
Parametry
[in,out] p
Odniesienie do kursora, który ma być używany do pisania.

operator!=

bool operator!=(
  const IPAddress & other
) const 

Porównaj ten adres IP z innym, aby uzyskać równoważność.

Szczegóły
Parametry
[in] other
Adres do porównania.
Zwracane wartości
true
Jeśli odpowiada wartości other
false
W innym przypadku

operator=

IPAddress & operator=(
  const IPAddress & other
)

Standardowy operator przypisywania.

Szczegóły
Parametry
[in] other
Adres do skopiowania.
Zwroty
Odwołanie do tego obiektu.

operator==

bool operator==(
  const IPAddress & other
) const 

Porównaj ten adres IP z innym, aby uzyskać informacje o jego równoważności.

Szczegóły
Parametry
[in] other
Adres do porównania.
Zwracane wartości
true
Jeśli odpowiada wartości other
false
W innym przypadku

Publiczne funkcje statyczne

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Jest to przeciążona funkcja członkowska dla wygody. Różni się od powyższej funkcji tylko akceptowanymi argumentami.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Wstrzyknij adres IPv4 ze struktury danych platformy.

Użyj FromIPv4(const ip4_addr_t &addr), aby wstrzyknąć addr jako adres IPv4.

Argument addr jest typu const struct in_addr& (w POSIX) lub const ip4_addr_t& (w LwIP).

Szczegóły
Zwroty
Utworzony adres IP.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Jest to przeciążona funkcja członkowska dla wygody. Różni się od powyższej funkcji tylko akceptowanymi argumentami.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Wstrzyknij adres IPv6 ze struktury danych platformy.

Użyj FromIPv6(const ip6_addr_t &addr), aby wstrzyknąć addr jako adres IPv6.

Argument addr jest typu const struct in6_addr& (w POSIX) lub const ip6_addr_t& (w LwIP).

Szczegóły
Zwroty
Utworzony adres IP.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Wstrzyknij adres IPv6 z POSIX struct sockaddr&

Użyj FromSockAddr(const struct sockaddr& sockaddr), aby wstrzyknąć sockaddr.sa_addr jako adres IPv6.

Szczegóły
Zwroty
Utworzony adres IP.

FromString

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

Zeskanuj adres IP zgodnie z konwencjonalnym tekstem prezentacji.

Użyj metody FromString(const char *str, IPAddress& output), aby zastąpić adres IP przez przeskanowanie tradycyjnej prezentacji tekstowej znajdującej się pod adresem str.

Szczegóły
Parametry
[in] str
Adres wysyłanego tekstu.
[out] output
Obiekt, który ma zostać ustawiony na zeskanowany adres.

Szczegóły
Zwracane wartości
true
Format prezentacji jest prawidłowy
false
W innym przypadku

FromString

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

Zeskanuj adres IP zgodnie z konwencjonalnym tekstem prezentacji.

Użyj metody FromString(const char *str, size_t strLen, IPAddress& output), aby zastąpić adres IP przez przeskanowanie tradycyjnej prezentacji tekstowej znajdującej się pod adresem str.

Szczegóły
Parametry
[in] str
wskaźnik do tekstu do zeskanowania.
[in] strLen
Długość tekstu do zeskanowania.
[out] output
Obiekt, który ma zostać ustawiony na zeskanowany adres.

Szczegóły
Zwracane wartości
true
Format prezentacji jest prawidłowy
false
W innym przypadku

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Utwórz adres rozgłoszeniowy IPv4.

Szczegóły
Zwroty
Utworzony adres IP.

MakeIPv6Multicast

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

Zbuduj adres multiemisji IPv6 z jego części.

Użyj MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]), aby utworzyć adres multiemisji IPv6 z flags dla zakresu routingu scope i oktetów z identyfikatorem grupy groupId.

Szczegóły
Zwroty
Utworzony adres IP.

MakeIPv6Multicast

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

Zbuduj adres multiemisji IPv6 z jego części.

Użyj MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId), aby utworzyć adres multiemisji IPv6 z flags dla zakresu routingu scope i identyfikatora grupy groupId.

Szczegóły
Zwroty
Utworzony adres IP.

MakeIPv6PrefixMulticast

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

Utwórz tymczasowy adres multiemisji IPv6 poprzedzony prefiksem z jego części.

Użyj MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId), aby utworzyć przejściowy adres multiemisyjny IPv6 z prefiksem dla zakresu routingu scope i oktetem identyfikatora grupy groupId, kwalifikowanym prefiksem prefix o długości prefixlen bitów.

Szczegóły
Zwroty
Utworzony adres IP.

MakeIPv6TransientMulticast

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

Utwórz tymczasowy adres multiemisji IPv6 z jego części.

Użyj polecenia MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]), aby utworzyć tymczasowy adres multiemisji IPv6 z użyciem flags dla zakresu routingu scope i oktetów z identyfikatorem grupy groupId.

Szczegóły
Zwroty
Utworzony adres IP.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Zbuduj dobrze znany adres multicast IPv6 z jego części.

Użyj polecenia MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId), aby utworzyć adres multiemisji IPv6 dla zakresu routingu scope i identyfikatora grupy groupId.

Szczegóły
Zwroty
Utworzony adres IP.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Utwórz adres lokalny połączenia IPv6 (LL) z jego identyfikatora IID.

Użyj MakeLLA(uint64_t interfaceId) do utworzenia adresu lokalnego linku IPv6 (LL) z identyfikatorem interfejsu interfaceId.

Szczegóły
Zwroty
Utworzony adres IP.

MakeULA

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

Zbuduj unikalny lokalny adres IPv6 (ULA) z jego części.

Użyj funkcji MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId), aby utworzyć unikalny adres lokalny (ULA) z globalnym identyfikatorem sieci globalId, identyfikatorem podsieci subnet i identyfikatorem interfejsu (IID) interfaceId.

Szczegóły
Zwroty
Utworzony adres IP.

ReadAddress

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

Emisja adresu IP w standardowej reprezentacji sieci.

Użyj funkcji ReadAddress(uint8_t *&p, IPAddress &output), aby zdekodować adres IP p dla obiektu output.

Szczegóły
Parametry
[in,out] p
Odwołanie do kursora, który ma być używany do czytania.
[out] output
Obiekt odbierający zdekodowany adres IP.