нл:: Инет:: IP-адрес

#include <src/inet/IPAddress.h>

Адрес интернет-протокола.

Краткое содержание

Уровень Nest Inet использует объекты этого класса для представления адресов интернет-протокола (независимо от версии протокола).

Публичные атрибуты

Addr [4]
uint32_t
Непрозрачный массив слов для хранения IP-адресов (независимо от версии протокола)

Публичные статические атрибуты

Any
Выделенный неуказанный объект IP-адреса.

Общественные функции

GlobalId (void) const
uint64_t
Извлеките 16-битный глобальный сетевой идентификатор адреса ULA IPv6.
InterfaceId (void) const
uint64_t
Извлеките IID адреса ULA IPv6.
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-битный идентификатор подсети адреса ULA IPv6.
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&
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.

Общественные функции

ГлобальныйИд

uint64_t GlobalId(
  void
) const 

Извлеките 16-битный глобальный сетевой идентификатор адреса ULA IPv6.

Используйте этот метод с уникальным локальным адресом IPv6 (ULA), чтобы извлечь глобальный идентификатор сети, который представляет собой 40 бит, следующих сразу за выделенным сетевым префиксом ULA, т. е. fd00::/8. Другими словами, глобальный идентификатор сети располагается в пяти байтах со 2-го по 6-й байты адреса.

Подробности
Возврат
40-битный глобальный идентификатор сети или ноль, если IP-адрес не является уникальным локальным адресом IPv6.

Идентификатор интерфейса

uint64_t InterfaceId(
  void
) const 

Извлеките IID адреса ULA IPv6.

Используйте этот метод с уникальным локальным адресом 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
В противном случае

IsIPv4Многоадресная рассылка

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.
false
В противном случае

IsIPv6Многоадресная рассылка

bool IsIPv6Multicast(
  void
) const 

Проверьте, является ли адрес многоадресной рассылкой IPv6.

Используйте этот метод, чтобы проверить, принадлежит ли адрес к семейству адресов IPv6 и имеет ли он зарезервированный префикс многоадресного адреса IPv6.

Подробности
Возвращаемые значения
true
Адрес — многоадресная рассылка IPv6.
false
В противном случае

ИсIPv6ULA

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-битный идентификатор подсети адреса ULA IPv6.

Используйте этот метод с уникальным локальным адресом IPv6 (ULA), чтобы извлечь идентификатор подсети, который представляет собой младшие 16 бит сетевого префикса. Префикс сети — это старшие 64 бита адреса. Другими словами, идентификатор подсети находится в 7 и 8 байтах 16-байтового адреса.

Подробности
Возврат
16-битный идентификатор подсети или ноль, если IP-адрес не является уникальным локальным адресом IPv6.

ТоIPv4

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.

ТоIPv4

struct in_addr ToIPv4(
  void
) const 

ТоIPv6

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.

ТоIPv6

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-совместимый IPv6-адрес» (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-адрес.

Фромсоккдр

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Внедрить адрес IPv6 из struct sockaddr&

Используйте FromSockAddr(const struct sockaddr& sockaddr) чтобы внедрить sockaddr.sa_addr в качестве IPv6-адреса.

Подробности
Возврат
Созданный IP-адрес.

Фромстринг

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

Сканируйте IP-адрес по его обычному тексту представления.

Используйте FromString(const char *str, IPAddress& output) для перезаписи IP-адреса путем сканирования обычного текстового представления, расположенного по str .

Подробности
Параметры
[in] str
Адрес выдаваемого текста.
[out] output
Объект, который будет присвоен сканируемому адресу.

Подробности
Возвращаемые значения
true
Формат презентации действителен.
false
В противном случае

Фромстринг

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
В противном случае

СделатьIPv4Broadcast

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-адрес.

MakeIPv6PrefixМногоадресная рассылка

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-адрес.

MakeIPv6TransientMulticast

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-адрес.

MakeIPv6WellKnownМногоадресная рассылка

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Постройте известный многоадресный адрес IPv6 из его частей.

Используйте MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) для создания многоадресного адреса IPv6 для scope области маршрутизации и идентификатора группы groupId .

Подробности
Возврат
Созданный IP-адрес.

СделатьLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Создайте локальный адрес канала IPv6 (LL) на основе его IID.

Используйте MakeLLA(uint64_t interfaceId) для создания локального адреса канала IPv6 (LL) с идентификатором интерфейса interfaceId .

Подробности
Возврат
Созданный IP-адрес.

СделатьULA

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-адреса.