Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

nl :: Инет :: Айпи адрес

#include <src/inet/IPAddress.h>

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

Резюме

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

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

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

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

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

Публичные функции

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

Публичные функции

GlobalId

uint64_t GlobalId(
  void
) const 

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

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

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

InterfaceId

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
Иначе

IsIPv4Multicast

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
Иначе

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

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

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

Подробности
Возвращаемые значения
true
Адрес - многоадресный IPv6
false
Иначе

IsIPv6ULA

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.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Извлеките IPv4-адрес как структуру данных платформы.

Если возможно, используйте ToIPv4() const для извлечения содержимого как IPv4-адреса. Адреса IPv6 и неуказанный адрес извлекаются как 0.0.0.0 .

Результат может иметь тип struct in_addr (в POSIX) или ip4_addr_tip4_addr_t ).

Подробности
Возврат
Инкапсулированный IPv4-адрес или 0.0.0.0 если адрес не указан или не является IPv4-адресом.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Извлеките IPv6-адрес как структуру данных платформы.

Если возможно, используйте ToIPv6() const для извлечения содержимого как IPv6-адреса. Адреса IPv4 и неуказанный адрес извлекаются как [::] .

Результат может иметь тип struct in6_addr (в POSIX) или ip6_addr_tip6_addr_t ).

Подробности
Возврат
Инкапсулированный IPv4-адрес или [::] if the address is either unspecified or not an IPv4 address.

ToIPv6

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 байтов 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
Адрес не указан.

WriteAddress

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
Иначе

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

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Это перегруженная функция, предоставленная для удобства. Она отличается от указанной выше функции только тем, какие аргументы она принимает.

FromIPv4

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

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Это перегруженная функция, предоставленная для удобства. Она отличается от указанной выше функции только тем, какие аргументы она принимает.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Введите IPv6-адрес из структуры данных платформы.

Используйте FromIPv6(const ip6_addr_t &addr) чтобы FromIPv6(const ip6_addr_t &addr) addr в качестве адреса IPv6.

Аргумент addr имеет тип const struct in6_addr& (в POSIX) или const ip6_addr_t& (в LwIP).

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

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Вставьте IPv6-адрес из struct sockaddr& POSIX struct sockaddr&

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

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

FromString

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

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

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

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

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

FromString

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
Иначе

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Создайте широковещательный адрес IPv4.

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

MakeIPv6Multicast

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

MakeIPv6Multicast

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

MakeIPv6PrefixMulticast

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) длинного scope groupId prefix prefixlen 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-адрес.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

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

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

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

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

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

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

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

MakeULA

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

ReadAddress

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

Передайте IP-адрес в стандартном сетевом представлении.

Используйте ReadAddress(uint8_t *&p, IPAddress &output) чтобы декодировать IP-адрес в p для output объекта.

Подробности
Параметры
[in,out] p
Ссылка на курсор, используемый для чтения.
[out] output
Объект для получения декодированного IP-адреса.