/* * include/types/sink.h * This file provides definitions for event sinks * * Copyright (C) 2000-2019 Willy Tarreau - w@1wt.eu * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, version 2.1 * exclusively. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TYPES_SINK_H #define _TYPES_SINK_H #include #include #include #include /* A sink may be of 4 distinct types : * - file descriptor (such as stdout) * - ring buffer, readable from CLI */ enum sink_type { SINK_TYPE_NEW, // not yet initialized SINK_TYPE_FD, // events sent to a file descriptor SINK_TYPE_BUFFER, // events sent to a ring buffer }; /* This indicates the default event format, which is the destination's * preferred format, but may be overridden by the source. */ enum sink_fmt { SINK_FMT_RAW, // raw text sent as-is SINK_FMT_SHORT, // raw text prefixed with a syslog level SINK_FMT_ISO, // raw text prefixed with ISO time SINK_FMT_TIMED, // syslog level then ISO SINK_FMT_RFC3164, // regular syslog SINK_FMT_RFC5424, // extended syslog }; /* describes the configuration and current state of an event sink */ struct sink { struct list sink_list; // position in the sink list const char *name; // sink name const char *desc; // sink description enum sink_fmt fmt; // format expected by the sink enum sink_type type; // type of storage uint8_t syslog_facility; // used by syslog format uint8_t syslog_minlvl; // used by syslog & short formats uint32_t maxlen; // max message length (truncated above) struct { __decl_hathreads(HA_RWLOCK_T lock); // shared/excl for dropped struct ring *ring; // used by ring buffer and STRM sender unsigned int dropped; // dropped events since last one. int fd; // fd num for FD type sink } ctx; }; #endif /* _TYPES_SINK_H */ /* * Local variables: * c-indent-level: 8 * c-basic-offset: 8 * End: */