[NETFILTER]: Restore {ipt,ip6t,ebt}_LOG compatibility
The nfnetlink_log infrastructure changes broke compatiblity of the LOG targets. They currently use whatever log backend was registered first, which means that if ipt_ULOG was loaded first, no messages will be printed to the ring buffer anymore. Restore compatiblity by using the old log functions by default and only use the nf_log backend if the user explicitly said so. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
45fe4dc08c
Коммит
bafac2a512
|
@ -3,6 +3,7 @@
|
|||
|
||||
#define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */
|
||||
#define EBT_LOG_ARP 0x02
|
||||
#define EBT_LOG_NFLOG 0x04
|
||||
#define EBT_LOG_MASK (EBT_LOG_IP | EBT_LOG_ARP)
|
||||
#define EBT_LOG_PREFIX_SIZE 30
|
||||
#define EBT_LOG_WATCHER "log"
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
#define IPT_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define IPT_LOG_IPOPT 0x04 /* Log IP options */
|
||||
#define IPT_LOG_UID 0x08 /* Log UID owning local socket */
|
||||
#define IPT_LOG_MASK 0x0f
|
||||
#define IPT_LOG_NFLOG 0x10 /* Log using nf_log backend */
|
||||
#define IPT_LOG_MASK 0x1f
|
||||
|
||||
struct ipt_log_info {
|
||||
unsigned char level;
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
#define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define IP6T_LOG_IPOPT 0x04 /* Log IP options */
|
||||
#define IP6T_LOG_UID 0x08 /* Log UID owning local socket */
|
||||
#define IP6T_LOG_MASK 0x0f
|
||||
#define IP6T_LOG_NFLOG 0x10 /* Log using nf_log backend */
|
||||
#define IP6T_LOG_MASK 0x1f
|
||||
|
||||
struct ip6t_log_info {
|
||||
unsigned char level;
|
||||
|
|
|
@ -166,7 +166,12 @@ static void ebt_log(const struct sk_buff *skb, unsigned int hooknr,
|
|||
li.u.log.level = info->loglevel;
|
||||
li.u.log.logflags = info->bitmask;
|
||||
|
||||
nf_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li, info->prefix);
|
||||
if (info->bitmask & EBT_LOG_NFLOG)
|
||||
nf_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li,
|
||||
info->prefix);
|
||||
else
|
||||
ebt_log_packet(PF_BRIDGE, hooknr, skb, in, out, &li,
|
||||
info->prefix);
|
||||
}
|
||||
|
||||
static struct ebt_watcher log =
|
||||
|
|
|
@ -425,7 +425,12 @@ ipt_log_target(struct sk_buff **pskb,
|
|||
li.u.log.level = loginfo->level;
|
||||
li.u.log.logflags = loginfo->logflags;
|
||||
|
||||
nf_log_packet(PF_INET, hooknum, *pskb, in, out, &li, loginfo->prefix);
|
||||
if (loginfo->logflags & IPT_LOG_NFLOG)
|
||||
nf_log_packet(PF_INET, hooknum, *pskb, in, out, &li,
|
||||
loginfo->prefix);
|
||||
else
|
||||
ipt_log_packet(PF_INET, hooknum, *pskb, in, out, &li,
|
||||
loginfo->prefix);
|
||||
|
||||
return IPT_CONTINUE;
|
||||
}
|
||||
|
|
|
@ -436,7 +436,12 @@ ip6t_log_target(struct sk_buff **pskb,
|
|||
li.u.log.level = loginfo->level;
|
||||
li.u.log.logflags = loginfo->logflags;
|
||||
|
||||
nf_log_packet(PF_INET6, hooknum, *pskb, in, out, &li, loginfo->prefix);
|
||||
if (loginfo->logflags & IP6T_LOG_NFLOG)
|
||||
nf_log_packet(PF_INET6, hooknum, *pskb, in, out, &li,
|
||||
loginfo->prefix);
|
||||
else
|
||||
ip6t_log_packet(PF_INET6, hooknum, *pskb, in, out, &li,
|
||||
loginfo->prefix);
|
||||
|
||||
return IP6T_CONTINUE;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче