From a8437e146808ee68c9b5979767a186a3da079107 Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Tue, 11 Dec 2012 15:46:08 +0100 Subject: script optimizer: support textual severities in compare operations as well --- grammar/rainerscript.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index e4c4f519..8f20bfcd 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -2547,6 +2547,23 @@ cnfexprOptimize_CMP_var(struct cnfexpr *expr) } free(cstr); } + } else if(!strcmp("$syslogseverity-text", ((struct cnfvar*)expr->l)->name)) { + if(expr->r->nodetype == 'S') { + char *cstr = es_str2cstr(((struct cnfstringval*)expr->r)->estr, NULL); + int sev = decodeSyslogName((uchar*)cstr, syslogPriNames); + if(sev == -1) { + parser_errmsg("invalid syslogseverity '%s', expression will always " + "evaluate to FALSE", cstr); + } else { + /* we can acutally optimize! */ + DBGPRINTF("optimizer: change comparison OP to FUNC prifilt()\n"); + func = cnffuncNew_prifilt(0); + prifiltSetSeverity(func->funcdata, sev, expr->nodetype); + cnfexprDestruct(expr); + expr = (struct cnfexpr*) func; + } + free(cstr); + } } else { expr = cnfexprOptimize_CMP_severity_facility(expr); } -- cgit v1.2.3