Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

netfilter: log: Fix log-level processing

auto75914331@hushmail.com reports that iptables does not correctly
output the KERN_<level>.

$IPTABLES -A RULE_0_in -j LOG --log-level notice --log-prefix "DENY in: "

result with linux 3.6-rc5
Sep 12 06:37:29 xxxxx kernel: <5>DENY in: IN=eth0 OUT= MAC=.......

result with linux 3.5.3 and older:
Sep 9 10:43:01 xxxxx kernel: DENY in: IN=eth0 OUT= MAC......

commit 04d2c8c83d0
("printk: convert the format for KERN_<LEVEL> to a 2 byte pattern")
updated the syslog header style but did not update netfilter uses.

Do so.

Use KERN_SOH and string concatenation instead of "%c" KERN_SOH_ASCII
as suggested by Eric Dumazet.

Signed-off-by: Joe Perches <joe@perches.com>
cc: auto75914331@hushmail.com
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>

authored by

Joe Perches and committed by
Pablo Neira Ayuso
16af511a 4a70bbfa

+3 -3
+1 -1
net/bridge/netfilter/ebt_log.c
··· 80 80 unsigned int bitmask; 81 81 82 82 spin_lock_bh(&ebt_log_lock); 83 - printk("<%c>%s IN=%s OUT=%s MAC source = %pM MAC dest = %pM proto = 0x%04x", 83 + printk(KERN_SOH "%c%s IN=%s OUT=%s MAC source = %pM MAC dest = %pM proto = 0x%04x", 84 84 '0' + loginfo->u.log.level, prefix, 85 85 in ? in->name : "", out ? out->name : "", 86 86 eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest,
+2 -2
net/netfilter/xt_LOG.c
··· 443 443 const struct nf_loginfo *loginfo, 444 444 const char *prefix) 445 445 { 446 - sb_add(m, "<%d>%sIN=%s OUT=%s ", loginfo->u.log.level, 447 - prefix, 446 + sb_add(m, KERN_SOH "%c%sIN=%s OUT=%s ", 447 + '0' + loginfo->u.log.level, prefix, 448 448 in ? in->name : "", 449 449 out ? out->name : ""); 450 450 #ifdef CONFIG_BRIDGE_NETFILTER