Merge remote-tracking branch 'omap_dss2/for-next'
[deliverable/linux.git] / include / net / netfilter / nf_log.h
CommitLineData
f01ffbd6
PM
1#ifndef _NF_LOG_H
2#define _NF_LOG_H
3
ca735b3a
EL
4#include <linux/netfilter.h>
5
f01ffbd6
PM
6/* those NF_LOG_* defines and struct nf_loginfo are legacy definitios that will
7 * disappear once iptables is replaced with pkttables. Please DO NOT use them
8 * for any new code! */
9#define NF_LOG_TCPSEQ 0x01 /* Log TCP sequence numbers */
10#define NF_LOG_TCPOPT 0x02 /* Log TCP options */
11#define NF_LOG_IPOPT 0x04 /* Log IP options */
12#define NF_LOG_UID 0x08 /* Log UID owning local socket */
13#define NF_LOG_MASK 0x0f
14
7643507f
VP
15/* This flag indicates that copy_len field in nf_loginfo is set */
16#define NF_LOG_F_COPY_LEN 0x1
17
5962815a
PNA
18enum nf_log_type {
19 NF_LOG_TYPE_LOG = 0,
20 NF_LOG_TYPE_ULOG,
21 NF_LOG_TYPE_MAX
22};
f01ffbd6
PM
23
24struct nf_loginfo {
25 u_int8_t type;
26 union {
27 struct {
7643507f
VP
28 /* copy_len will be used iff you set
29 * NF_LOG_F_COPY_LEN in flags
30 */
f01ffbd6
PM
31 u_int32_t copy_len;
32 u_int16_t group;
33 u_int16_t qthreshold;
7643507f 34 u_int16_t flags;
f01ffbd6
PM
35 } ulog;
36 struct {
37 u_int8_t level;
38 u_int8_t logflags;
39 } log;
40 } u;
41};
42
8cdb46da
HS
43typedef void nf_logfn(struct net *net,
44 u_int8_t pf,
f01ffbd6
PM
45 unsigned int hooknum,
46 const struct sk_buff *skb,
47 const struct net_device *in,
48 const struct net_device *out,
49 const struct nf_loginfo *li,
50 const char *prefix);
51
52struct nf_logger {
5962815a
PNA
53 char *name;
54 enum nf_log_type type;
55 nf_logfn *logfn;
56 struct module *me;
f01ffbd6
PM
57};
58
59/* Function to register/unregister log function. */
ca735b3a
EL
60int nf_log_register(u_int8_t pf, struct nf_logger *logger);
61void nf_log_unregister(struct nf_logger *logger);
62
779994fa 63int nf_log_set(struct net *net, u_int8_t pf, const struct nf_logger *logger);
30e0c6a6
G
64void nf_log_unset(struct net *net, const struct nf_logger *logger);
65
66int nf_log_bind_pf(struct net *net, u_int8_t pf,
67 const struct nf_logger *logger);
68void nf_log_unbind_pf(struct net *net, u_int8_t pf);
f01ffbd6 69
fab4085f
PNA
70int nf_logger_find_get(int pf, enum nf_log_type type);
71void nf_logger_put(int pf, enum nf_log_type type);
960649d1 72void nf_logger_request_module(int pf, enum nf_log_type type);
fab4085f
PNA
73
74#define MODULE_ALIAS_NF_LOGGER(family, type) \
75 MODULE_ALIAS("nf-logger-" __stringify(family) "-" __stringify(type))
76
f01ffbd6 77/* Calls the registered backend logging function */
30e0c6a6
G
78__printf(8, 9)
79void nf_log_packet(struct net *net,
80 u_int8_t pf,
f01ffbd6
PM
81 unsigned int hooknum,
82 const struct sk_buff *skb,
83 const struct net_device *in,
84 const struct net_device *out,
7b2f9631 85 const struct nf_loginfo *li,
b9075fa9 86 const char *fmt, ...);
f01ffbd6 87
4017a7ee
PNA
88__printf(8, 9)
89void nf_log_trace(struct net *net,
90 u_int8_t pf,
91 unsigned int hooknum,
92 const struct sk_buff *skb,
93 const struct net_device *in,
94 const struct net_device *out,
95 const struct nf_loginfo *li,
96 const char *fmt, ...);
97
27fd8d90
PNA
98struct nf_log_buf;
99
100struct nf_log_buf *nf_log_buf_open(void);
101__printf(2, 3) int nf_log_buf_add(struct nf_log_buf *m, const char *f, ...);
102void nf_log_buf_close(struct nf_log_buf *m);
103
83e96d44
PNA
104/* common logging functions */
105int nf_log_dump_udp_header(struct nf_log_buf *m, const struct sk_buff *skb,
106 u8 proto, int fragment, unsigned int offset);
107int nf_log_dump_tcp_header(struct nf_log_buf *m, const struct sk_buff *skb,
108 u8 proto, int fragment, unsigned int offset,
109 unsigned int logflags);
110void nf_log_dump_sk_uid_gid(struct nf_log_buf *m, struct sock *sk);
111void nf_log_dump_packet_common(struct nf_log_buf *m, u_int8_t pf,
112 unsigned int hooknum, const struct sk_buff *skb,
113 const struct net_device *in,
114 const struct net_device *out,
115 const struct nf_loginfo *loginfo,
116 const char *prefix);
117
f01ffbd6 118#endif /* _NF_LOG_H */
This page took 0.514982 seconds and 5 git commands to generate.