diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2011-04-19 07:22:48 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2011-04-19 07:22:48 +0200 |
commit | d34f9cc38c6e77550465811143db3ac13158ba66 (patch) | |
tree | e326a6de5416515b9edd710e19efe56437efe626 /plugins | |
parent | 72c235744023d10e1a9b44c90b65a6b34029e471 (diff) | |
parent | bb67fd7fbf99ce0ec01b347fad5d1d9d101bfa5d (diff) | |
download | rsyslog-d34f9cc38c6e77550465811143db3ac13158ba66.tar.gz rsyslog-d34f9cc38c6e77550465811143db3ac13158ba66.tar.xz rsyslog-d34f9cc38c6e77550465811143db3ac13158ba66.zip |
Merge branch 'v5-devel-systemd-pri' into v5-devel
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/imklog/imklog.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/plugins/imklog/imklog.c b/plugins/imklog/imklog.c index 69c8cd1a..c09fa4d8 100644 --- a/plugins/imklog/imklog.c +++ b/plugins/imklog/imklog.c @@ -186,12 +186,28 @@ rsRetVal imklogLogIntMsg(int priority, char *fmt, ...) rsRetVal Syslog(int priority, uchar *pMsg) { DEFiRet; + int pri = -1; rsRetVal localRet; - /* Output using syslog */ - localRet = parsePRI(&pMsg, &priority); - if(localRet != RS_RET_INVALID_PRI && localRet != RS_RET_OK) - FINALIZE; + /* first check if we have two PRIs. This can happen in case of systemd, + * in which case the second PRI is the rigth one. + * TODO: added kernel timestamp support to this PoC. -- rgerhards, 2011-03-18 + */ + if(pMsg[3] == '<') { /* could be a pri... */ + uchar *pMsgTmp = pMsg + 3; + localRet = parsePRI(&pMsgTmp, &pri); + if(localRet == RS_RET_OK && pri >= 8 && pri <= 192) { + /* *this* is our PRI */ + DBGPRINTF("imklog detected secondary PRI in klog msg\n"); + pMsg = pMsgTmp; + priority = pri; + } + } + if(pri == -1) { + localRet = parsePRI(&pMsg, &priority); + if(localRet != RS_RET_INVALID_PRI && localRet != RS_RET_OK) + FINALIZE; + } /* if we don't get the pri, we use whatever we were supplied */ /* ignore non-kernel messages if not permitted */ |