Настройка и статус сетевых интерфейсов (kos_net.h)

12 января 2026

ID kos_net_api

API определен в заголовочном файле sysroot-*-kos/include/kos_net.h из состава KasperskyOS SDK.

API позволяет:

  • получать список доступных в системе сетевых интерфейсов;
  • выводить данные о доступных сетевых интерфейсах в стандартный вывод;
  • преобразовывать текстовое представление IPv6-адреса в бинарный формат;
  • ожидать появления сетевых интерфейсов с заданными параметрами в списке доступных;
  • настраивать доступные сетевые интерфейсы с использованием IPv4- и IPv6-адресации.

Сведения о функциях API приведены в таблице ниже.

Чтобы получить список сетевых интерфейсов, доступных в системе, необходимо вызвать функцию get_ifaces_addrs(). Эта функция возвращает в параметре pif связанный список структур ifaddrs, каждая из которых содержит данные о сетевом интерфейсе: имя, флаги, IP-адрес, маску подсети. Структура ifaddrs определена в заголовочном файле sysroot-*-kos/include/ifaddrs.h.

Для вывода информации о доступных сетевых интерфейсах в стандартный вывод необходимо использовать функцию list_network_ifaces(). Эта функция не имеет параметров. В стандартном выводе отображаются следующие данные о каждом сетевом интерфейсе: имя, тип, статус активности и адрес сетевого интерфейса с маской подсети.

Пример вывода функции list_network_ifaces():

Name Type Running Address/mask

lo0 inet Yes ::1/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

lo0 inet Yes fe80:1::1/ffff:ffff:ffff:ffff::

lo0 inet Yes 127.0.0.1/255.0.0.0

en0 mac Yes 52:58:00:12:34:bb

en0 inet Yes 10.0.2.15/255.255.255.

en0 inet Yes fe80:2::5058:ff:fe12:34bb/ffff:ffff:ffff:ffff::

Чтобы преобразовать текстовое представление IPv6-адреса в бинарный формат, необходимо использовать функцию ip6_parse_addr(). Через входной параметр ip_str принимает текстовое представление IPv6-адреса в соответствии с пунктами 2.2 и 2.3 спецификации RFC 4291 в формате:

<ipv6_адрес>[/<размер_префикса>]

Через выходной параметр dst_mask функция возвращает указатель на структуру sockaddr_in6, содержащую маску префикса в поле sin6_addr. Через выходной параметр dst_ip функция возвращает указатель на другую структуру sockaddr_in6, содержащую IPv6-адрес в поле sin6_addr. Структура sockaddr_in6 определена в заголовочном файле sysroot-*-kos/include/strict/posix/netinet/in.6.

Для ожидания появления сетевого интерфейса с требуемыми параметрами в списке доступных, необходимо использовать функцию wait_for_iface(). Через входной параметр name эта функция получает имя сетевого интерфейса, появление которого ожидается. Если этот параметр не указан (NULL), то будет ожидаться появление любого сетевого интерфейса, кроме тех, имена которых начинаются на lo*. Через входной параметр wait_flags функция получает флаги, которые определяют параметры ожидания: наличие IP-адресов и основных шлюзов. Эти флаги можно комбинировать. Время ожидания появления требуемого сетевого интерфейса в секундах задается в параметре timeout.

Чтобы настроить доступные сетевые интерфейсы с использованием IPv4- или IPv6-адресации API предоставляет две функции: configure_net_iface() и configure_net_iface6(). Для упрощения настройки сетевых интерфейсов предусмотрены макросы, которые можно использовать в качестве входных параметров для этих функций (см. в таблице ниже).

Макросы функций configure_net_iface() и configure_net_iface6()

Сведения о функциях API

Функции kos_net.h

Пример использования функций API:

#include <kos_net.h>

int main(int argc, char *argv[])

{

// Ожидание сетевого интерфейса с именем en0 в течении 60 сек в списке доступных.

if (!wait_for_iface(DEFAULT_INTERFACE, IWF_EXISTS, DEFAULT_TIMEOUT))

{

perror("Network interface does not exists");

return EXIT_FAILURE;

}en0

// Настройка сетевого интерфейса en0 значениями по умолчанию.

if (!configure_net_iface(DEFAULT_INTERFACE, DEFAULT_ADDR, DEFAULT_MASK, DEFAULT_GATEWAY, DEFAULT_MTU))

{

perror("Can't configure network");

return EXIT_FAILURE;

}

}

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!