нл:: Инет:: 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
объекта.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|