diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-04-18 16:18:43 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-04-18 16:18:43 +0200 |
commit | 1b01c2095245cf00e3aa6ba92d6653cc65d2b7e2 (patch) | |
tree | 69af95cebb33eada96c966fa226ac7e6e7696a0c /runtime | |
parent | e4d87aac957ea639935f56fb8b03f3c03d037491 (diff) | |
parent | 68538a9013c59036d8825ef97a0a91552a9e7e99 (diff) | |
download | rsyslog-1b01c2095245cf00e3aa6ba92d6653cc65d2b7e2.tar.gz rsyslog-1b01c2095245cf00e3aa6ba92d6653cc65d2b7e2.tar.xz rsyslog-1b01c2095245cf00e3aa6ba92d6653cc65d2b7e2.zip |
Merge branch 'v5-stable' into v5-stable-newstats
Conflicts:
runtime/msg.c
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/msg.c | 21 | ||||
-rw-r--r-- | runtime/ruleset.c | 10 | ||||
-rw-r--r-- | runtime/ruleset.h | 15 |
3 files changed, 41 insertions, 5 deletions
diff --git a/runtime/msg.c b/runtime/msg.c index 810a396e..f5c6184c 100644 --- a/runtime/msg.c +++ b/runtime/msg.c @@ -1057,6 +1057,12 @@ static rsRetVal MsgSerialize(msg_t *pThis, strm_t *pStrm) objSerializePTR(pStrm, pCSAPPNAME, CSTR); objSerializePTR(pStrm, pCSPROCID, CSTR); objSerializePTR(pStrm, pCSMSGID, CSTR); + + if(pThis->pRuleset != NULL) { + rulesetGetName(pThis->pRuleset); + CHKiRet(obj.SerializeProp(pStrm, UCHAR_CONSTANT("pszRuleset"), PROPTYPE_PSZ, + rulesetGetName(pThis->pRuleset))); + } /* offset must be serialized after pszRawMsg, because we need that to obtain the correct * MSG size. @@ -1663,6 +1669,16 @@ void MsgSetRuleset(msg_t *pMsg, ruleset_t *pRuleset) } +/* rgerhards 2012-04-18: set associated ruleset (by ruleset name) + * If ruleset cannot be found, no update is done. + */ +static void +MsgSetRulesetByName(msg_t *pMsg, cstr_t *rulesetName) +{ + rulesetGetRuleset(&(pMsg->pRuleset), rsCStrGetSzStrNoNULL(rulesetName)); +} + + /* set TAG in msg object * (rewritten 2009-06-18 rgerhards) */ @@ -3196,8 +3212,13 @@ rsRetVal MsgSetProperty(msg_t *pThis, var_t *pProp) memcpy(&pThis->tRcvdAt, &pProp->val.vSyslogTime, sizeof(struct syslogTime)); } else if(isProp("tTIMESTAMP")) { memcpy(&pThis->tTIMESTAMP, &pProp->val.vSyslogTime, sizeof(struct syslogTime)); + } else if(isProp("pszRuleset")) { + MsgSetRulesetByName(pThis, pProp->val.pStr); } else if(isProp("pszMSG")) { dbgprintf("no longer supported property pszMSG silently ignored\n"); + } else { + dbgprintf("unknown supported property '%s' silently ignored\n", + rsCStrGetSzStrNoNULL(pProp->pcsName)); } finalize_it: diff --git a/runtime/ruleset.c b/runtime/ruleset.c index 69968a52..2f307f05 100644 --- a/runtime/ruleset.c +++ b/runtime/ruleset.c @@ -315,8 +315,8 @@ GetRulesetQueue(ruleset_t *pThis) /* Find the ruleset with the given name and return a pointer to its object. */ -static rsRetVal -GetRuleset(ruleset_t **ppRuleset, uchar *pszName) +rsRetVal +rulesetGetRuleset(ruleset_t **ppRuleset, uchar *pszName) { DEFiRet; assert(ppRuleset != NULL); @@ -338,7 +338,7 @@ SetDefaultRuleset(uchar *pszName) DEFiRet; assert(pszName != NULL); - CHKiRet(GetRuleset(&pRuleset, pszName)); + CHKiRet(rulesetGetRuleset(&pRuleset, pszName)); pDfltRuleset = pRuleset; dbgprintf("default rule set changed to %p: '%s'\n", pRuleset, pszName); @@ -356,7 +356,7 @@ SetCurrRuleset(uchar *pszName) DEFiRet; assert(pszName != NULL); - CHKiRet(GetRuleset(&pRuleset, pszName)); + CHKiRet(rulesetGetRuleset(&pRuleset, pszName)); pCurrRuleset = pRuleset; dbgprintf("current rule set changed to %p: '%s'\n", pRuleset, pszName); @@ -594,7 +594,7 @@ CODESTARTobjQueryInterface(ruleset) pIf->SetName = setName; pIf->DebugPrintAll = debugPrintAll; pIf->GetCurrent = GetCurrent; - pIf->GetRuleset = GetRuleset; + pIf->GetRuleset = rulesetGetRuleset; pIf->SetDefaultRuleset = SetDefaultRuleset; pIf->SetCurrRuleset = SetCurrRuleset; pIf->GetRulesetQueue = GetRulesetQueue; diff --git a/runtime/ruleset.h b/runtime/ruleset.h index b055a71d..52e633eb 100644 --- a/runtime/ruleset.h +++ b/runtime/ruleset.h @@ -54,6 +54,7 @@ BEGINinterface(ruleset) /* name must also be changed in ENDinterface macro! */ qqueue_t* (*GetRulesetQueue)(ruleset_t*); /* v3, 2009-11-04 */ parserList_t* (*GetParserList)(msg_t *); + /* v4 */ ENDinterface(ruleset) #define rulesetCURR_IF_VERSION 4 /* increment whenever you change the interface structure! */ @@ -61,4 +62,18 @@ ENDinterface(ruleset) /* prototypes */ PROTOTYPEObj(ruleset); + +/* Get name associated to ruleset. This function cannot fail (except, + * of course, if previously something went really wrong). Returned + * pointer is read-only. + * rgerhards, 2012-04-18 + */ +static inline uchar* +rulesetGetName(ruleset_t *pRuleset) +{ + return pRuleset->pszName; +} + + +rsRetVal rulesetGetRuleset(ruleset_t **ppRuleset, uchar *pszName); #endif /* #ifndef INCLUDED_RULESET_H */ |