KasperskyOS Community Edition 1.3

Dynamically creating IPC channels using the DCM system program

The KasperskyOS SDK provides the DCM (Dynamic Connection Manager) system program, which lets you dynamically create IPC channels. This program enables servers to notify clients about their provided endpoints, and pass callable handles for using these endpoints.

To use the DCM program, the KasperskyOS SDK provides the following files:

  • sysroot-*-kos/include/dcm/dcm_api.h – header file that defines the basic API
  • sysroot-*-kos/include/dcm/groups/pub.h – header file that defines the additional API for servers
  • sysroot-*-kos/include/dcm/groups/subscr.h – header file that defines the additional API for clients
  • sysroot-*-kos/include/dcm/dcm.h – header file for including clients and servers into source code
  • sysroot-*-kos/bin/dcm – executable file
  • sysroot-*-kos/lib/libdcm.a – client library
  • sysroot-*-kos/lib/libdcm_s.a – client library built with a -fPIC flag to ensure the possibility to link to a dynamic library
  • sysroot-*-kos/include/kl/core/DCM.*dl – formal specification files

IPC channels from clients and servers to the DCM must be statically created.

You can run multiple DCM processes. Each client and server can be connected to only one DCM process.

The DCM API uses IDs known as DCM handles . DCM handles identify objects that provide the following capabilities to clients and servers that use DCM:

  • Clients can receive notifications about the publishing and unpublishing of endpoints, and can make requests to create IPC channels to servers.
  • Servers can receive client requests to create IPC channels, and can accept or decline these requests.

The names of endpoints and endpoints interfaces should be defined according to the formal specifications of solution components. (For information about the qualified name of an endpoint, see Binding methods of security models to security events.) Instead of the qualified name of an endpoint, you can use any conditional name of this endpoint. The names of clients and servers are defined in the init description.

In this section

Using the base API (dcm_api.h)

Using the additional server API for servers (pub.h)

Using the additional API for clients (subscr.h)