inet_net_ntop()

Преобразовать номер сети Интернет в формат CIDR

Прототип:

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
char * inet_net_ntop( int af,
const void *src,
int bits,
char *dst,
size_t size );

Аргументы:

af
Семейство адресов. В настоящее время поддерживается только AF_INET.
src
Указатель на номер сети Интернет, который требуется преобразовать. Формат адреса интерпретируется согласно af.
bits
Количество бит, определяющих номер сети (src).
dst
Указатель на буфер, в котором функция может хранить преобразованный адрес.
size
Размер буфера dst, в байтах.

Библиотека:

libsocket

Описание:

Функция inet_net_ntop() преобразует номер сети Интернет из сетевого формата (обычно struct in_addr или другой двоичной формы в сетевом порядке байтов) в формат представления CIDR (Classless Internet Domain Routing), который подходит для целей внешнего отображения.

С CIDR один IP-адрес может использоваться для обозначения множества уникальных IP-адресов. IP-адрес CIDR выглядит как обычный IP-адрес, за исключением того, что он заканчивается косой чертой (/), за которой следует число, называемое префиксом IP. Например:

172.200.0.0/16

Префикс IP указывает, сколько адресов покрывается адресом CIDR, при этом меньшие числа покрывают большее количество адресов.

Сетевые номера (Интернет-адреса IPv4)

Можно указать Интернет-адрес в виде четырех чисел, разделенных точками или в виде номера Интернет-сетей, используя одну из следующих форм:

a.b.c.d/bits
a.b.c.d
При указании адреса в виде четырех чисел, каждая часть интерпретируется как байт данных и назначается слева направо четырем байтам номера сети Интернет (или адреса Интернет). Когда номер сети Интернет рассматривается как 32-битное целое число, в системе, которая использует прямой порядок байтов (т.е. справа налево, например, процессоры Intel 486 и Pentium), байты, упомянутые выше, отображаются как “d.c.b.a”.
a.b.c
При указании адреса в виде трех составных частей, последняя часть интерпретируется как 16-битная величина и помещается в два крайних правых байта номера сети Интернет (или сетевого адреса). Это делает трехкомпонентный формат адреса удобным для указания сетевых адресов класса B как net.net.host.
a.b
При указании адреса, состоящего из двух частей, последняя часть интерпретируется как 24-битная величина и помещается в крайние правые три байта номера сети Интернет (или сетевого адреса). Это делает формат, состоящий из двух частей, удобным для указания сетевых номеров класса A как net.host.
a
При указании адреса, состоящего из одной части, значение сохраняется непосредственно в сетевом номере Интернета (сетевом адресе) без какой-либо перестановки байтов.

Все числа, представленные как «части» в точечной нотации, могут быть десятичными, восьмеричными или шестнадцатеричными, согласно языку C. То есть число интерпретируется как десятичное, если оно не имеет в начале 0 (восьмеричное) или 0x или 0X (шестнадцатеричное) в начале.

Возвращаемое значение:

Указатель на строку dst. Если возникла ошибка функция возвращает NULL, код ошибки записывается в errno.

Коды ошибок:

ENOENT
Некорректный аргумент af.

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

inet_aton(), inet_net_ntop()




Предыдущий раздел: Описание API сетевой библиотеки