API определен в заголовочном файле sysroot-*-kos/include/kos_net.h из состава KasperskyOS SDK.
API позволяет:
Сведения о функциях 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()
Макрос |
Описание |
Значение по умолчанию |
Использование в |
Использование в |
|---|---|---|---|---|
|
Имя сетевого интерфейса, используемого для подключения |
|
|
|
|
IP-адрес, назначаемый сетевому интерфейсу |
|
|
|
|
Маска подсети |
|
|
|
|
Основной шлюз |
|
|
|
|
Максимальный размер передаваемого пакета в байтах (англ. Maximum Transmission Unit, MTU) |
|
|
|
|
Время ожидания в секундах |
|
|
|
Сведения о функциях API
Функции kos_net.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Получает список доступных в системе сетевых интерфейсов. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Настраивает сетевой интерфейс с использованием IPv4-адресации. Входные параметры Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Преобразует текстовое представление IPv6-адреса в бинарный формат, а также опционально формирует маску префикса на основе указанного размера префикса. Параметры [in]
Возвращаемые значения В случае успеха возвращает |
|
Назначение Настраивает сетевой интерфейс с использованием IPv6-адресации. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Получает список сетевых интерфейсов, которые доступны в системе, и выводит данные о каждом сетевом интерфейсе в стандартный вывод. Параметры Нет. Возвращаемые значения В случае успеха возвращает |
|
Назначение Ожидает появление доступного сетевого интерфейса, который отвечает заданным флагами ожидания требованиям. Параметры
Возвращаемые значения В случае успеха возвращает |
Пример использования функций 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;
}
}
В начало