| Server IP : 216.92.14.13 / Your IP : 216.73.217.126 Web Server : Apache System : Linux vps4089.pairvps.com 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 User : rmlac2fmr ( 1040637) PHP Version : 8.2.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/include/eventlog/ |
Upload File : |
/*
* Event Logging API
* Copyright (c) 2003 BalaBit IT Ltd.
* All rights reserved.
* Author: Balazs Scheidler
*
* EventLog library public functions.
*
* $Id: evtlog.h,v 1.5 2004/08/20 19:53:52 bazsi Exp $
*
* Some of the ideas are based on the discussions on the log-analysis
* mailing list (http://www.loganalysis.org/).
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of BalaBit nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY BALABIT AND CONTRIBUTORS `AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
#ifndef __EVTLOG_H_INCLUDED
#define __EVTLOG_H_INCLUDED
#ifndef _MSC_VER
# include <syslog.h>
#endif
#include <stdarg.h>
#include "evtmaps.h"
#define EVT_PRI_EMERG 0 /* system is unusable */
#define EVT_PRI_ALERT 1 /* action must be taken immediately */
#define EVT_PRI_CRIT 2 /* critical conditions */
#define EVT_PRI_ERR 3 /* error conditions */
#define EVT_PRI_WARNING 4 /* warning conditions */
#define EVT_PRI_NOTICE 5 /* normal but significant condition */
#define EVT_PRI_INFO 6 /* informational */
#define EVT_PRI_DEBUG 7 /* debug-level messages */
#define EVT_FAC_KERN (0<<3) /* kernel messages */
#define EVT_FAC_USER (1<<3) /* random user-level messages */
#define EVT_FAC_MAIL (2<<3) /* mail system */
#define EVT_FAC_DAEMON (3<<3) /* system daemons */
#define EVT_FAC_AUTH (4<<3) /* security/authorization messages */
#define EVT_FAC_SYSLOG (5<<3) /* messages generated internally by syslogd */
#define EVT_FAC_LPR (6<<3) /* line printer subsystem */
#define EVT_FAC_NEWS (7<<3) /* network news subsystem */
#define EVT_FAC_UUCP (8<<3) /* UUCP subsystem */
#define EVT_FAC_CRON (9<<3) /* clock daemon */
#define EVT_FAC_AUTHPRIV (10<<3) /* security/authorization messages (private) */
#define EVT_FAC_FTP (11<<3) /* ftp daemon */
/* other codes through 15 reserved for system use */
#define EVT_FAC_LOCAL0 (16<<3) /* reserved for local use */
#define EVT_FAC_LOCAL1 (17<<3) /* reserved for local use */
#define EVT_FAC_LOCAL2 (18<<3) /* reserved for local use */
#define EVT_FAC_LOCAL3 (19<<3) /* reserved for local use */
#define EVT_FAC_LOCAL4 (20<<3) /* reserved for local use */
#define EVT_FAC_LOCAL5 (21<<3) /* reserved for local use */
#define EVT_FAC_LOCAL6 (22<<3) /* reserved for local use */
#define EVT_FAC_LOCAL7 (23<<3) /* reserved for local use */
#ifdef __GNUC__
#define EVT_GNUC_PRINTF_FUNC(format_idx, first_arg_idx) __attribute__((format(printf, format_idx, first_arg_idx)))
#else
#define EVT_GNUC_PRINTF_FUNC(format_idx, first_arg_idx)
#endif
/* EVTCONTEXT encapsulates logging specific parameters like the
* program name and facility to use */
typedef struct __evtcontext EVTCONTEXT;
/* EVTREC is an event log record, contains a description and one or more
* name/value pairs */
typedef struct __evtrec EVTREC;
/* EVTTAG is a name value pair, comprising an event record */
typedef struct __evttag EVTTAG;
/* eventlog contexts */
/**
* evt_ctx_init:
* @prog: program name to use to identify this process as
* @syslog_fac: syslog facility code, like EVT_FAC_AUTH
*
* This function creates a new eventlog context.
*
* Returns: the new context, or NULL on failure
**/
EVTCONTEXT *evt_ctx_init(const char *prog, int syslog_fac);
/**
* evt_ctx_free:
* @ctx: context to free
*
* This function frees an eventlog context.
**/
void evt_ctx_free(EVTCONTEXT *ctx);
/**
* evt_ctx_tag_hook_add:
**/
int evt_ctx_tag_hook_add(EVTCONTEXT *ctx, int (*func)(EVTREC *e, void *user_ptr), void *user_ptr);
/* event record manipulation */
EVTREC *evt_rec_init(EVTCONTEXT *ctx, int syslog_pri, const char *desc);
void evt_rec_add_tag(EVTREC *e, EVTTAG *tag);
void evt_rec_add_tagsv(EVTREC *e, va_list tags);
void evt_rec_add_tags(EVTREC *e, EVTTAG *first, ...);
int evt_rec_get_syslog_pri(EVTREC *e);
void evt_rec_free(EVTREC *e);
/**
* evt_rec_tag_*:
* @tag: specifies tag name as string
* @value: specifies a value in the given type
*
* Adds the specified tag/value pair to EVTREC.
*
* Return value: 0 to indicate failure and 1 for success
**/
EVTTAG *evt_tag_str(const char *tag, const char *value);
EVTTAG *evt_tag_int(const char *tag, int value);
EVTTAG *evt_tag_long(const char *tag, long value);
EVTTAG *evt_tag_errno(const char *tag, int err);
EVTTAG *evt_tag_printf(const char *tag, const char *format, ...) EVT_GNUC_PRINTF_FUNC(2, 3);
/**
* evt_format:
* @e: event record
*
* Formats the given event as specified by the current configuration.
*
* Return value: returns a newly allocated string. The caller is responsible
* for freeing the returned value.
**/
char *evt_format(EVTREC *e);
/**
* evt_log:
* @e: event record
*
* Formats and sends the given event as specified by the current
* configuration. This function blocks and will not return until the message
* is sent. The function consumes its argument, that is the caller does not
* need to free the event record after passing it to evt_log().
*
* Return value: 0 to indicate failure and 1 for success
*
**/
int evt_log(EVTREC *e);
/* syslog wrapper */
void evt_openlog(const char *ident, int option, int facility);
void evt_closelog(void);
void evt_vsyslog(int pri, const char *format, va_list ap);
void evt_syslog(int pri, const char *format, ...) EVT_GNUC_PRINTF_FUNC(2, 3);
#ifdef EVENTLOG_SYSLOG_MACROS
#define openlog evt_openlog
#define syslog evt_syslog
#define vsyslog evt_vsyslog
#define closelog evt_closelog
#endif
#endif