sd_machine_get_class(3) — Linux manual page


SD_MACHINE_GET_CLASS(3)   sd_machine_get_class   SD_MACHINE_GET_CLASS(3)

NAME         top

       sd_machine_get_class, sd_machine_get_ifindices - Determine the
       class and network interface indices of a locally running virtual
       machine or container

SYNOPSIS         top

       #include <systemd/sd-login.h>

       int sd_machine_get_class(const char* machine, char **class);

       int sd_machine_get_ifindices(const char* machine,
                                    int **ret_ifindices);

DESCRIPTION         top

       sd_machine_get_class() may be used to determine the class of a
       locally running virtual machine or container that is registered
       with systemd-machined.service(8). The string returned is either
       "vm" or "container". The returned string needs to be freed with
       the libc free(3) call after use.

       sd_machine_get_ifindices() may be used to determine the numeric
       indices of the network interfaces on the host that are pointing
       towards the specified locally running virtual machine or
       container. The vm or container must be registered with
       systemd-machined.service(8). The output parameter ret_ifindices
       may be passed as NULL when the output value is not needed. The
       returned array needs to be freed with the libc free(3) call after

RETURN VALUE         top

       On success, these functions return a non-negative integer.
       sd_machine_get_ifindices() returns the number of the relevant
       network interfaces. On failure, these calls return a negative
       errno-style error code.

       Returned errors may indicate the following problems:

           The specified machine does not exist or is currently not

           An input parameter was invalid (out of range, or NULL, where
           that is not accepted).

           Memory allocation failed.

NOTES         top

       Functions described here are available as a shared library, which
       can be compiled against and linked to with the
       libsystemd pkg-config(1) file.

       The code described here uses getenv(3), which is declared to be
       not multi-thread-safe. This means that the code calling the
       functions described here must not call setenv(3) from a parallel
       thread. It is recommended to only do calls to setenv() from an
       early phase of the program when no other threads have been

HISTORY         top

       sd_machine_get_class() and sd_machine_get_ifindices() were added
       in version 217.

SEE ALSO         top

       systemd(1), sd-login(3), systemd-machined.service(8),

COLOPHON         top

       This page is part of the systemd (systemd system and service
       manager) project.  Information about the project can be found at
       ⟨⟩.  If you have
       a bug report for this manual page, see
       This page was obtained from the project's upstream Git repository
       ⟨⟩ on 2023-12-22.  (At that
       time, the date of the most recent commit that was found in the
       repository was 2023-12-22.)  If you discover any rendering
       problems in this HTML version of the page, or you believe there
       is a better or more up-to-date source for the page, or you have
       corrections or improvements to the information in this COLOPHON
       (which is not part of the original manual page), send a mail to

systemd 255                                      SD_MACHINE_GET_CLASS(3)

Pages that refer to this page: systemd.directives(7)systemd.index(7)