nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

adresu IP.

Podsumowanie

Nest Inet Layer 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 na adresy IP (niezależnie od wersji protokołu)

Publiczne atrybuty statyczne

Any
Wyróżniony nieokreślony obiekt 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 identyfikator IID adresu ULA IPv6.
IsIPv4(void) const
bool
Sprawdź, czy adres jest zgodny z IPv4.
IsIPv4Broadcast(void) const
bool
Sprawdź, czy adres jest rozpowszechniany przez IPv4.
IsIPv4Multicast(void) const
bool
Sprawdź, czy adres to multiemisja IPv4.
IsIPv6(void) const
bool
Sprawdź, czy adres jest zgodny z IPv6.
IsIPv6GlobalUnicast(void) const
bool
Sprawdź, czy adres jest globalnym adresem IPv6 typu unicast.
IsIPv6LinkLocal(void) const
bool
Sprawdź, czy adres jest adresem IPv6 połączenia lokalnego (LL).
IsIPv6Multicast(void) const
bool
Sprawdź, czy adres to multiemisja IPv6.
IsIPv6ULA(void) const
bool
Sprawdź, czy adres jest unikalnym adresem lokalnym IPv6 (ULA).
IsMulticast(void) const
bool
Sprawdź, czy adres to IPv4 czy multiemisja IPv6.
Subnet(void) const
uint16_t
Wyodrębnij 16-bitowy identyfikator podsieci IPv6 adresu ULA.
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 *
Emisja adresu IP w standardowym formacie prezentacji tekstowej.
Type(void) const
IPAddressType
Wyodrębnij typ adresu IP.
WriteAddress(uint8_t *& p) const
void
Przekazywanie adresu IP w standardowej reprezentacji sieci.
operator!=(const IPAddress & other) const
bool
Porównaj ten adres IP z innymi, aby sprawdzić ich zgodność.
operator=(const IPAddress & other)
Tradycyjny operator przypisywania.
operator==(const IPAddress & other) const
bool
Porównaj ten adres IP z innym, aby sprawdzić jego zgodność.

Publiczne funkcje statyczne

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
Wstaw adres IPv4 ze struktury danych platformy.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
Wstaw 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
Przeskanuj adres IP na podstawie standardowego tekstu prezentacji.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Przeskanuj adres IP na podstawie standardowego tekstu 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])
Utwórz adres multiemisji IPv6 z jego części.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Utwórz adres multiemisji IPv6 z jego części.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Utwórz przejściowy adres IPv6 z 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 przejściowy adres multiemisji IPv6 z jego części.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Zbuduj znany adres multiemisji IPv6 z jego części.
MakeLLA(uint64_t interfaceId)
Utwórz adres lokalny połączenia IPv6 (LL) na podstawie jego identyfikatora IID.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Zbuduj unikalny adres lokalny IPv6 (ULA) z jego części.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Przekazywanie adresu IP w standardowej reprezentacji sieci.

Atrybuty publiczne

Dodaj

uint32_t Addr[4]

Nieprzezroczysta tablica słów na adresy IP (niezależnie od wersji protokołu)

Adres IPv6 używa wszystkich 128-bitowych bitów na cztery 32-bitowe sieciowe liczby całkowite uporządkowane w bajtach. Adresy IPv4 mają format V4COMPAT, co oznacza, że pierwsze 3 słowa to 0, a czwarte słowo zawiera adres IPv4 w sieciowej kolejności bajtów.

Publiczne atrybuty statyczne

Dowolny

IPAddress Any

Wyróżniony nieokreślony obiekt adresu IP.

Ten obiekt służy jako stała przy porównywaniu równoważności. Nie mogą jej użytkownicy modyfikować w warstwie Nest Inet.

Funkcje publiczne

GlobalId

uint64_t GlobalId(
  void
) const 

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

Użyj tej metody z unikalnym adresem lokalnym IPv6 (ULA), aby wyodrębnić globalny identyfikator sieci, który jest 40 bitami następujących tuż po wyróżniającym prefiksie sieci ULA, czyli fd00::/8. Inaczej mówiąc, globalny identyfikator sieci znajduje się w 5 bajtach od 2 do 6 bajtu w adresie.

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

InterfaceId

uint64_t InterfaceId(
  void
) const 

Wyodrębnij identyfikator IID adresu ULA IPv6.

Użyj tej metody z unikalnym adresem lokalnym 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 adresem lokalnym IPv6.

IsIPv4

bool IsIPv4(
  void
) const 

Sprawdź, czy adres jest zgodny z IPv4.

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv4. Uwaga: 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 jest rozpowszechniany przez IPv4.

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

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

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Sprawdź, czy adres to multiemisja IPv4.

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

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

IsIPv6

bool IsIPv6(
  void
) const 

Sprawdź, czy adres jest zgodny z IPv6.

Użyj tej metody, aby sprawdzić, czy adres należy do rodziny adresów IPv6. Uwaga: 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 IPv6 typu unicast.

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

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

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Sprawdź, czy adres jest adresem IPv6 połączenia lokalnego (LL).

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

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

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Sprawdź, czy adres to multiemisja 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 multiemisja IPv6
false
W innym przypadku

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

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

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

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

IsMulticast

bool IsMulticast(
  void
) const 

Sprawdź, czy adres to IPv4 czy multiemisja 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 IPv4 lub IPv6 multiemisja
false
W innym przypadku

Podsieć

uint16_t Subnet(
  void
) const 

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

Użyj tej metody z unikalnym adresem lokalnym IPv6 (ULA), aby wyodrębnić identyfikator podsieci, czyli najmniej istotne 16 bitów prefiksu sieci. Prefiks sieci to najważniejsze 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 zero, jeśli adres IP nie jest unikalnym adresem lokalnym IPv6.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Wyodrębnij adres IPv4 jako strukturę danych platformy.

Jeśli to możliwe, użyj funkcji 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
Herbaty adres IPv4 lub 0.0.0.0, jeśli adres jest nieokreślony lub 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 funkcji 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 

ToString

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

Emisja adresu IP w standardowym formacie prezentacji tekstowej.

Za pomocą ToString(char *buf, uint32_t bufSize) const zapisz w pamięci znajdującej się w buf tradycyjną formę prezentacji tekstowej adresu IP i rozszerz maksymalnie o bufSize B, łącznie ze znakiem zakończenia NUL.

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

Uwaga: na niektórych platformach brak zgodności ze standardem RFC 5952. W szczególności, zgodnie z artykułem 4.2, nie można stosować zerowej kompresji.

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

Typ

IPAddressType Type(
  void
) const 

Wyodrębnij typ adresu IP.

Użyj tej metody, aby zwrócić wartość typu wymienionego IPAddressType, aby wskazać typ 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 

Przekazywanie adresu IP w standardowej reprezentacji sieci.

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

Szczegóły
Parametry
[in,out] p
Odniesienie do kursora używanego do pisania.

!=

bool operator!=(
  const IPAddress & other
) const 

Porównaj ten adres IP z innymi, aby sprawdzić ich zgodność.

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

operator=

IPAddress & operator=(
  const IPAddress & other
)

Tradycyjny 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 sprawdzić jego zgodność.

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

Publiczne funkcje statyczne

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Jest to przeciążona funkcja subskrybenta, udostępniona dla wygody. Różni się ona od funkcji powyżej jedynie argumentami, które akceptuje.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Wstaw 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 subskrybenta, udostępniona dla wygody. Różni się ona od funkcji powyżej jedynie argumentami, które akceptuje.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Wstaw 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
)

Przeskanuj adres IP na podstawie standardowego tekstu prezentacji.

Za pomocą polecenia FromString(const char *str, IPAddress& output) możesz zastąpić adres IP przez zeskanowanie standardowej prezentacji tekstowej znajdującej się pod adresem str.

Szczegóły
Parametry
[in] str
Adres emitowanego 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
)

Przeskanuj adres IP na podstawie standardowego tekstu prezentacji.

Za pomocą polecenia FromString(const char *str, size_t strLen, IPAddress& output) możesz zastąpić adres IP przez zeskanowanie standardowej prezentacji tekstowej znajdującej się pod adresem str.

Szczegóły
Parametry
[in] str
Wskaźnik do tekstu, który ma zostać przeskanowany.
[in] strLen
Długość tekstu do skanowania.
[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]
)

Utwórz 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 identyfikatora grupy groupId.

Szczegóły
Zwroty
Utworzony adres IP.

MakeIPv6Multicast

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

Utwórz 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 przejściowy adres IPv6 z prefiksem z jego części.

Użyj MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) do utworzenia tymczasowego adresu multiemisji IPv6 z prefiksem scope i oktetami identyfikatora grupy groupId kwalifikowanymi 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 przejściowy adres multiemisji IPv6 z jego części.

Użyj MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) do utworzenia tymczasowego adresu multiemisji IPv6 z flags dla zakresu scope i oktetów identyfikatora grupy groupId.

Szczegóły
Zwroty
Utworzony adres IP.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Zbuduj znany adres multiemisji IPv6 z jego części.

Użyj funkcji 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) na podstawie jego identyfikatora IID.

Użyj MakeLLA(uint64_t interfaceId), aby utworzyć adres połączenia lokalnego 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 adres lokalny 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
)

Przekazywanie adresu IP w standardowej reprezentacji sieci.

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

Szczegóły
Parametry
[in,out] p
Odniesienie do kursora używanego do odczytu.
[out] output
Obiekt do odbioru zdekodowanego adresu IP.