linux/include/net/netfilter/nf_log.h
<<
>>
Prefs
   1#ifndef _NF_LOG_H
   2#define _NF_LOG_H
   3
   4#include <linux/netfilter.h>
   5#include <linux/netfilter/nf_log.h>
   6
   7/* Log tcp sequence, tcp options, ip options and uid owning local socket */
   8#define NF_LOG_DEFAULT_MASK     0x0f
   9
  10/* This flag indicates that copy_len field in nf_loginfo is set */
  11#define NF_LOG_F_COPY_LEN       0x1
  12
  13enum nf_log_type {
  14        NF_LOG_TYPE_LOG         = 0,
  15        NF_LOG_TYPE_ULOG,
  16        NF_LOG_TYPE_MAX
  17};
  18
  19struct nf_loginfo {
  20        u_int8_t type;
  21        union {
  22                struct {
  23                        /* copy_len will be used iff you set
  24                         * NF_LOG_F_COPY_LEN in flags
  25                         */
  26                        u_int32_t copy_len;
  27                        u_int16_t group;
  28                        u_int16_t qthreshold;
  29                        u_int16_t flags;
  30                } ulog;
  31                struct {
  32                        u_int8_t level;
  33                        u_int8_t logflags;
  34                } log;
  35        } u;
  36};
  37
  38typedef void nf_logfn(struct net *net,
  39                      u_int8_t pf,
  40                      unsigned int hooknum,
  41                      const struct sk_buff *skb,
  42                      const struct net_device *in,
  43                      const struct net_device *out,
  44                      const struct nf_loginfo *li,
  45                      const char *prefix);
  46
  47struct nf_logger {
  48        char                    *name;
  49        enum nf_log_type        type;
  50        nf_logfn                *logfn;
  51        struct module           *me;
  52};
  53
  54/* Function to register/unregister log function. */
  55int nf_log_register(u_int8_t pf, struct nf_logger *logger);
  56void nf_log_unregister(struct nf_logger *logger);
  57
  58int nf_log_set(struct net *net, u_int8_t pf, const struct nf_logger *logger);
  59void nf_log_unset(struct net *net, const struct nf_logger *logger);
  60
  61int nf_log_bind_pf(struct net *net, u_int8_t pf,
  62                   const struct nf_logger *logger);
  63void nf_log_unbind_pf(struct net *net, u_int8_t pf);
  64
  65int nf_logger_find_get(int pf, enum nf_log_type type);
  66void nf_logger_put(int pf, enum nf_log_type type);
  67void nf_logger_request_module(int pf, enum nf_log_type type);
  68
  69#define MODULE_ALIAS_NF_LOGGER(family, type) \
  70        MODULE_ALIAS("nf-logger-" __stringify(family) "-" __stringify(type))
  71
  72/* Calls the registered backend logging function */
  73__printf(8, 9)
  74void nf_log_packet(struct net *net,
  75                   u_int8_t pf,
  76                   unsigned int hooknum,
  77                   const struct sk_buff *skb,
  78                   const struct net_device *in,
  79                   const struct net_device *out,
  80                   const struct nf_loginfo *li,
  81                   const char *fmt, ...);
  82
  83__printf(8, 9)
  84void nf_log_trace(struct net *net,
  85                  u_int8_t pf,
  86                  unsigned int hooknum,
  87                  const struct sk_buff *skb,
  88                  const struct net_device *in,
  89                  const struct net_device *out,
  90                  const struct nf_loginfo *li,
  91                  const char *fmt, ...);
  92
  93struct nf_log_buf;
  94
  95struct nf_log_buf *nf_log_buf_open(void);
  96__printf(2, 3) int nf_log_buf_add(struct nf_log_buf *m, const char *f, ...);
  97void nf_log_buf_close(struct nf_log_buf *m);
  98
  99/* common logging functions */
 100int nf_log_dump_udp_header(struct nf_log_buf *m, const struct sk_buff *skb,
 101                           u8 proto, int fragment, unsigned int offset);
 102int nf_log_dump_tcp_header(struct nf_log_buf *m, const struct sk_buff *skb,
 103                           u8 proto, int fragment, unsigned int offset,
 104                           unsigned int logflags);
 105void nf_log_dump_sk_uid_gid(struct nf_log_buf *m, struct sock *sk);
 106void nf_log_dump_packet_common(struct nf_log_buf *m, u_int8_t pf,
 107                               unsigned int hooknum, const struct sk_buff *skb,
 108                               const struct net_device *in,
 109                               const struct net_device *out,
 110                               const struct nf_loginfo *loginfo,
 111                               const char *prefix);
 112
 113#endif /* _NF_LOG_H */
 114