mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
[NETFILTER]: Extend netfilter logging API
This patch is in preparation to nfnetlink_log: - loggers now have to register struct nf_logger instead of nf_logfn - nf_log_unregister() replaced by nf_log_unregister_pf() and nf_log_unregister_logger() - add comment to ip[6]t_LOG.h to assure nobody redefines flags - add /proc/net/netfilter/nf_log to tell user which logger is currently registered for which address family - if user has configured logging, but no logging backend (logger) is available, always spit a message to syslog, not just the first time. - split ip[6]t_LOG.c into two parts: Backend: Always try to register as logger for the respective address family Frontend: Always log via nf_log_packet() API - modify all users of nf_log_packet() to accomodate additional argument Signed-off-by: Harald Welte <laforge@netfilter.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
838ab63649
commit
608c8e4f7b
10 changed files with 299 additions and 125 deletions
|
|
@ -114,15 +114,51 @@ void nf_unregister_sockopt(struct nf_sockopt_ops *reg);
|
|||
|
||||
extern struct list_head nf_hooks[NPROTO][NF_MAX_HOOKS];
|
||||
|
||||
typedef void nf_logfn(unsigned int hooknum,
|
||||
/* those NF_LOG_* defines and struct nf_loginfo are legacy definitios that will
|
||||
* disappear once iptables is replaced with pkttables. Please DO NOT use them
|
||||
* for any new code! */
|
||||
#define NF_LOG_TCPSEQ 0x01 /* Log TCP sequence numbers */
|
||||
#define NF_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define NF_LOG_IPOPT 0x04 /* Log IP options */
|
||||
#define NF_LOG_UID 0x08 /* Log UID owning local socket */
|
||||
#define NF_LOG_MASK 0x0f
|
||||
|
||||
#define NF_LOG_TYPE_LOG 0x01
|
||||
#define NF_LOG_TYPE_ULOG 0x02
|
||||
|
||||
struct nf_loginfo {
|
||||
u_int8_t type;
|
||||
union {
|
||||
struct {
|
||||
u_int32_t copy_len;
|
||||
u_int16_t group;
|
||||
u_int16_t qthreshold;
|
||||
} ulog;
|
||||
struct {
|
||||
u_int8_t level;
|
||||
u_int8_t logflags;
|
||||
} log;
|
||||
} u;
|
||||
};
|
||||
|
||||
typedef void nf_logfn(unsigned int pf,
|
||||
unsigned int hooknum,
|
||||
const struct sk_buff *skb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
const struct nf_loginfo *li,
|
||||
const char *prefix);
|
||||
|
||||
struct nf_logger {
|
||||
struct module *me;
|
||||
nf_logfn *logfn;
|
||||
char *name;
|
||||
};
|
||||
|
||||
/* Function to register/unregister log function. */
|
||||
int nf_log_register(int pf, nf_logfn *logfn);
|
||||
void nf_log_unregister(int pf, nf_logfn *logfn);
|
||||
int nf_log_register(int pf, struct nf_logger *logger);
|
||||
void nf_log_unregister_pf(int pf);
|
||||
void nf_log_unregister_logger(struct nf_logger *logger);
|
||||
|
||||
/* Calls the registered backend logging function */
|
||||
void nf_log_packet(int pf,
|
||||
|
|
@ -130,6 +166,7 @@ void nf_log_packet(int pf,
|
|||
const struct sk_buff *skb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
struct nf_loginfo *li,
|
||||
const char *fmt, ...);
|
||||
|
||||
/* Activate hook; either okfn or kfree_skb called, unless a hook
|
||||
|
|
@ -221,6 +258,11 @@ struct nf_queue_rerouter {
|
|||
extern int nf_register_queue_rerouter(int pf, struct nf_queue_rerouter *rer);
|
||||
extern int nf_unregister_queue_rerouter(int pf);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
#include <linux/proc_fs.h>
|
||||
extern struct proc_dir_entry *proc_net_netfilter;
|
||||
#endif
|
||||
|
||||
#else /* !CONFIG_NETFILTER */
|
||||
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb)
|
||||
static inline void nf_ct_attach(struct sk_buff *new, struct sk_buff *skb) {}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef _IPT_LOG_H
|
||||
#define _IPT_LOG_H
|
||||
|
||||
/* make sure not to change this without changing netfilter.h:NF_LOG_* (!) */
|
||||
#define IPT_LOG_TCPSEQ 0x01 /* Log TCP sequence numbers */
|
||||
#define IPT_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define IPT_LOG_IPOPT 0x04 /* Log IP options */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef _IP6T_LOG_H
|
||||
#define _IP6T_LOG_H
|
||||
|
||||
/* make sure not to change this without changing netfilter.h:NF_LOG_* (!) */
|
||||
#define IP6T_LOG_TCPSEQ 0x01 /* Log TCP sequence numbers */
|
||||
#define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define IP6T_LOG_IPOPT 0x04 /* Log IP options */
|
||||
|
|
|
|||
Loading…
Reference in a new issue