Программа RoutingTable реализует таблицу маршрутизации данных между программами. Таблица маршрутизации в Kaspersky IoT Secure Gateway 1000 может содержать не более 256 записей маршрутов.
Чтобы получить доступ к API программы RoutingTable, скомпонуйте вашу программу с библиотекой, используя CMake-команду target_link_libraries().
CMakeLists.txt
target_link_libraries(${EXECUTABLE_NAME} ${routing_table_ROUTE_PROVIDER_LIB})
API программы RoutingTable предоставляет следующие интерфейсы:
IEndpointNameProviderСодержит метод, позволяющий получить имена конечных точек (endpoints) программ. Реализация метода осуществляется на стороне клиента.
IRouteProviderСодержит метод, позволяющий получить существующие записи маршрутов для программ.
Использование API программы RoutingTable вы можете посмотреть в примере routing_table_example_package.
Обратите внимание: имена конечных точек программ в Kaspersky IoT Secure Gateway 1000 должны быть уникальны. Уникальность имен конечных точек системой Kaspersky IoT Secure Gateway 1000 не проверяется. Корректная работоспособность программы RoutingTable при маршрутизации данных к разным конечным точкам с одинаковым именем не гарантируется.
Структура записи маршрута
Запись маршрута определена структурой applications::routing::Route. Одна или несколько записей маршрутов могут объединяться в вектор RouteList. Каждая запись маршрута содержит три параметра:
sourceИсточник.
destinationПолучатель.
activeФлаг, определяющий активен маршрут или нет.
Источник и получатель описываются структурой applications::routing::ApplicationEndpointName, содержащей идентификатор программы и ее конечную точку (endpoint). Одна или несколько структур applications::routing::ApplicationEndpointName могут объединяться в вектор ApplicationEndpointNameList.
Получение идентификаторов программ
API программы RoutingTable позволяет получить идентификатор программы с помощью следующих методов:
applications::routing::GetAppIdByTaskName()Метод возвращает идентификатор программы по входному значению имени задачи. Если идентификатор программы не найден, метод возвращает значение INVALID_APP_ID.
applications::routing::GetAppId()Метод возвращает идентификатор программы, статически скомпонованной с библиотекой программы RoutingTable. Если идентификатор программы не найден, метод возвращает значение INVALID_APP_ID.
Описание методов получения идентификатора программы представлено в файле /opt/KasperskyOS-SDK-KISG-Platform-<version>/sysroot-*-kos/include/component/secure_platform/routing_table/route_provider_api/application_id_api.h.
application_id_api.h (фрагмент)
...
namespace applications::routing {
AppId GetAppIdByTaskName(const std::string& task) noexcept;
AppId GetAppId() noexcept;
}
...