нл:: Инет:: 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.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
IsIPv4Broadcast
bool IsIPv4Broadcast( void ) const
Проверьте, является ли адрес широковещательным IPv4.
Используйте этот метод, чтобы проверить, является ли адрес широковещательным адресом IPv4 специального назначения.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
IsIPv4Многоадресная рассылка
bool IsIPv4Multicast( void ) const
Проверьте, является ли адрес многоадресной рассылкой IPv4.
Используйте этот метод, чтобы проверить, является ли адрес многоадресным адресом IPv4.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
IsIPv6
bool IsIPv6( void ) const
Проверьте, совместим ли адрес с IPv6.
Используйте этот метод, чтобы проверить, принадлежит ли адрес к семейству адресов IPv6. Обратите внимание: неуказанный адрес не является адресом IPv6.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
IsIPv6GlobalUnicast
bool IsIPv6GlobalUnicast( void ) const
Проверьте, является ли адрес глобальным одноадресным адресом IPv6.
Используйте этот метод, чтобы проверить, принадлежит ли адрес к семейству адресов IPv6 и имеет ли он глобальный префикс одноадресной рассылки.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
IsIPv6LinkLocal
bool IsIPv6LinkLocal( void ) const
Проверьте, является ли адрес локальным адресом канала IPv6 (LL).
Используйте этот метод, чтобы проверить, принадлежит ли адрес к семейству адресов IPv6 и имеет ли он зарезервированный префикс локального адреса канала IPv6.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
IsIPv6Многоадресная рассылка
bool IsIPv6Multicast( void ) const
Проверьте, является ли адрес многоадресной рассылкой IPv6.
Используйте этот метод, чтобы проверить, принадлежит ли адрес к семейству адресов IPv6 и имеет ли он зарезервированный префикс многоадресного адреса IPv6.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
ИсIPv6ULA
bool IsIPv6ULA( void ) const
Проверьте, является ли адрес уникальным локальным адресом IPv6 (ULA).
Используйте этот метод, чтобы проверить, принадлежит ли адрес к семейству адресов IPv6 и имеет ли он зарезервированный префикс уникального локального адреса IPv6.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
IsMulticast
bool IsMulticast( void ) const
Проверьте, является ли адрес многоадресной рассылкой IPv4 или IPv6.
Используйте этот метод, чтобы проверить, принадлежит ли адрес к семейству адресов IPv4 или IPv6 и имеет ли он зарезервированный префикс многоадресного адреса IPv4 или IPv6.
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
Подсеть
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.
| Подробности | |||||
|---|---|---|---|---|---|
| Параметры | 
  | 
Обратите внимание: не соответствует RFC 5952 на некоторых платформах. В частности, нулевое сжатие не может применяться в соответствии с разделом 4.2.
| Подробности | |
|---|---|
| Возврат |  Аргумент  buf если нет ошибок форматирования, или ноль в противном случае.  | 
Тип
IPAddressType Type( void ) const
Извлеките тип IP-адреса.
 Используйте этот метод, чтобы вернуть значение перечисляемого типа IPAddressType чтобы указать тип IP-адреса.
| Подробности | |||||||
|---|---|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
Написать адрес
void WriteAddress( uint8_t *& p ) const
Укажите IP-адрес в стандартном сетевом представлении.
 Используйте WriteAddress(uint8_t *&p) для кодирования IP-адреса в двоичном формате, определенном RFC 4291 для адресов IPv6. Адреса IPv4 кодируются в соответствии с разделом 2.5.5.1 «IPv4-совместимый IPv6-адрес» (V4COMPAT).
| Подробности | |||
|---|---|---|---|
| Параметры | 
  | 
оператор!=
bool operator!=( const IPAddress & other ) const
Сравните этот IP-адрес с другим на предмет неэквивалентности.
| Подробности | |||||
|---|---|---|---|---|---|
| Параметры | 
  | ||||
| Возвращаемые значения | 
  | 
оператор=
IPAddress & operator=( const IPAddress & other )
Обычный оператор присваивания.
| Подробности | |||
|---|---|---|---|
| Параметры | 
  | ||
| Возврат |  Ссылка на этот объект.   | 
оператор==
bool operator==( const IPAddress & other ) const
Сравните этот IP-адрес с другим на предмет эквивалентности.
| Подробности | |||||
|---|---|---|---|---|---|
| Параметры | 
  | ||||
| Возвращаемые значения | 
  | 
Публичные статические функции
Из 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 .
| Подробности | |||||
|---|---|---|---|---|---|
| Параметры | 
  | 
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
Фромстринг
bool FromString( const char *str, size_t strLen, IPAddress & output )
Сканируйте IP-адрес из обычного текста презентации.
 Используйте FromString(const char *str, size_t strLen, IPAddress& output) чтобы перезаписать IP-адрес путем сканирования обычного текстового представления, расположенного по str .
| Подробности | |||||||
|---|---|---|---|---|---|---|---|
| Параметры | 
  | 
| Подробности | |||||
|---|---|---|---|---|---|
| Возвращаемые значения | 
  | 
Сделать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 объекта.
| Подробности | |||||
|---|---|---|---|---|---|
| Параметры | 
  |