mirror of
https://github.com/rsyslog/rsyslog.git
synced 2026-03-19 14:09:30 +01:00
Why: Commit 3ee31a8d0 added shared named ratelimit support (ratelimit.name + ratelimitNewFromConfig) but only wired it into imtcp, imptcp, and imudp. Seven modules with existing ratelimit.interval/ratelimit.burst support were left without the ability to reference shared ratelimit() objects. Impact: Adds ratelimit.name parameter to omfwd, omelasticsearch, omhttp, imhttp, imjournal, imklog, and imuxsock. Existing configurations remain unchanged. Before: These seven modules could only use inline ratelimit.interval/ratelimit.burst parameters. After: All modules can now reference shared ratelimit() configuration objects via ratelimit.name. Technical Overview: For each module, the same pattern from the imudp reference implementation is applied: - Add uchar *pszRatelimitName to config struct - Add ratelimit.name to cnfparamdescr - Change interval/burst defaults to -1 (sentinel) - Parse ratelimit.name in config handler - Add mutual-exclusivity check (name vs interval/burst) - Branch ratelimiter creation on pszRatelimitName: if set, call ratelimitNewFromConfig(); else legacy path - Free pszRatelimitName in destructor imuxsock is the most complex: it supports both per-socket ratelimit.name and syssock.ratelimit.name, with the per-source hashtable ratelimiter path also updated. imklog uses legacy parameter names (ratelimitinterval, ratelimitburst) but the new parameter uses the dotted form (ratelimit.name) for consistency. Each module receives a parameter doc page, module doc update, and a config-validation test. With the help of AI-Agents: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
79 lines
2.7 KiB
C
79 lines
2.7 KiB
C
/* imklog.h
|
|
* These are the definitions for the klog message generation module.
|
|
*
|
|
* File begun on 2007-12-17 by RGerhards
|
|
* Major change: 2008-04-09: switched to a driver interface for
|
|
* several platforms
|
|
*
|
|
* Copyright 2007-2015 Rainer Gerhards and Adiscon GmbH.
|
|
*
|
|
* This file is part of rsyslog.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
* -or-
|
|
* see COPYING.ASL20 in the source distribution
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
#ifndef IMKLOG_H_INCLUDED
|
|
#define IMKLOG_H_INCLUDED 1
|
|
|
|
#include "rsyslog.h"
|
|
#include "dirty.h"
|
|
#include "ratelimit.h"
|
|
|
|
/* we need to have the modConf type present in all submodules */
|
|
struct modConfData_s {
|
|
rsconf_t *pConf;
|
|
int iFacilIntMsg;
|
|
uchar *pszPath;
|
|
int console_log_level;
|
|
sbool bParseKernelStamp;
|
|
sbool bKeepKernelStamp;
|
|
sbool bPermitNonKernel;
|
|
sbool configSetViaV2Method;
|
|
ratelimit_t *ratelimiter;
|
|
int ratelimitInterval;
|
|
int ratelimitBurst;
|
|
uchar *pszRatelimitName;
|
|
ruleset_t *pBindRuleset; /* ruleset to bind (use system default if unspecified) */
|
|
uchar *pszBindRuleset;
|
|
};
|
|
|
|
/* interface to "drivers"
|
|
* the platform specific drivers must implement these entry points. Only one
|
|
* driver may be active at any given time, thus we simply rely on the linker
|
|
* to resolve the addresses.
|
|
* rgerhards, 2008-04-09
|
|
*/
|
|
rsRetVal klogLogKMsg(modConfData_t *pModConf);
|
|
rsRetVal klogAfterRun(modConfData_t *pModConf);
|
|
rsRetVal klogWillRunPrePrivDrop(modConfData_t *pModConf);
|
|
rsRetVal klogWillRunPostPrivDrop(modConfData_t *pModConf);
|
|
int klogFacilIntMsg(void);
|
|
|
|
/* the functions below may be called by the drivers */
|
|
rsRetVal imklogLogIntMsg(syslog_pri_t priority, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
|
|
rsRetVal Syslog(modConfData_t *pModConf, syslog_pri_t priority, uchar *msg, struct timeval *tp);
|
|
|
|
/* prototypes */
|
|
extern int klog_getMaxLine(void); /* work-around for klog drivers to get configured max line size */
|
|
extern int InitKsyms(modConfData_t *);
|
|
extern void DeinitKsyms(void);
|
|
extern int InitMsyms(void);
|
|
extern void DeinitMsyms(void);
|
|
extern char *ExpandKadds(char *, char *);
|
|
extern void SetParanoiaLevel(int);
|
|
|
|
#endif /* #ifndef IMKLOG_H_INCLUDED */
|
|
/* vi:set ai:
|
|
*/
|