CAP_SYSLOG(3)          FreeBSD Library Functions Manual          CAP_SYSLOG(3)

NAME

     cap_syslog, cap_vsyslog, cap_openlog, cap_closelog, cap_setlogmask -
     library for syslog in capability mode

LIBRARY

     library "libcap_syslog"

SYNOPSIS

     #include <libcasper.h>
     #include <casper/cap_syslog.h>

     void
     cap_syslog(cap_channel_t *chan, int pri, const char *fmt, ...);

     void
     cap_vsyslog(cap_channel_t *chan, int priority, const char *fmt,
         va_list ap);

     void
     cap_openlog(cap_channel_t *chan, const char *ident, int logopt,
         int facility);

     void
     cap_closelog(cap_channel_t *chan);

     int
     cap_setlogmask(cap_channel_t *chan, int maskpri);

DESCRIPTION

     The functions cap_syslog() cap_vsyslog() cap_openlog() cap_closelog()
     cap_setlogmask() are respectively equivalent to syslog(3), vsyslog(3),
     openlog(3), closelog(3), setlogmask(3) except that the connection to the
     system.syslog service needs to be provided.

     All of these functions are reentrant but not thread-safe.  That is, they
     may be called from separate threads only with different cap_channel_t
     arguments or with synchronization.

EXAMPLES

     The following example first opens a capability to casper and then uses
     this capability to create the system.syslog casper service to log
     messages.

     cap_channel_t *capcas, *capsyslog;

     /* Open capability to Casper. */
     capcas = cap_init();
     if (capcas == NULL)
             err(1, "Unable to contact Casper");

     /* Enter capability mode sandbox. */
     if (cap_enter() < 0 && errno != ENOSYS)
             err(1, "Unable to enter capability mode");

     /* Use Casper capability to create capability to the system.syslog service. */
     capsyslog = cap_service_open(capcas, "system.syslog");
     if (capsyslog == NULL)
             err(1, "Unable to open system.syslog service");

     /* Close Casper capability, we don't need it anymore. */
     cap_close(capcas);

     /* Let's log something. */
     cap_syslog(capsyslog, LOG_NOTICE, "System logs from capability mode.");

SEE ALSO

     cap_enter(2), closelog(3), err(3), openlog(3), setlogmask(3), syslog(3),
     vsyslog(3), capsicum(4), nv(9)

HISTORY

     The cap_syslog service first appeared in FreeBSD 10.3.

AUTHORS

     Mariusz Zaborski <oshogbo@FreeBSD.org>

FreeBSD 15.1-STABLE-HBSD       December 6, 2023                  CAP_SYSLOG(3)