#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/skbuff.h>
#include <linux/if_arp.h>
#include <linux/ip.h>
#include <net/ipv6.h>
#include <net/icmp.h>
#include <net/udp.h>
#include <net/tcp.h>
#include <net/route.h>
#include <linux/netfilter.h>
#include <linux/netfilter_bridge.h>
#include <linux/netfilter_ipv6.h>
#include <linux/netfilter/xt_LOG.h>
#include <net/netfilter/nf_log.h>
static const struct nf_loginfo default_loginfo = …;
struct arppayload { … };
static bool nf_log_allowed(const struct net *net)
{ … }
static void nf_log_dump_vlan(struct nf_log_buf *m, const struct sk_buff *skb)
{ … }
static void noinline_for_stack
dump_arp_packet(struct nf_log_buf *m,
const struct nf_loginfo *info,
const struct sk_buff *skb, unsigned int nhoff)
{ … }
static void
nf_log_dump_packet_common(struct nf_log_buf *m, u8 pf,
unsigned int hooknum, const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
const struct nf_loginfo *loginfo, const char *prefix,
struct net *net)
{ … }
static void nf_log_arp_packet(struct net *net, u_int8_t pf,
unsigned int hooknum, const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
const struct nf_loginfo *loginfo,
const char *prefix)
{ … }
static struct nf_logger nf_arp_logger __read_mostly = …;
static void nf_log_dump_sk_uid_gid(struct net *net, struct nf_log_buf *m,
struct sock *sk)
{ … }
static noinline_for_stack int
nf_log_dump_tcp_header(struct nf_log_buf *m,
const struct sk_buff *skb,
u8 proto, int fragment,
unsigned int offset,
unsigned int logflags)
{ … }
static noinline_for_stack int
nf_log_dump_udp_header(struct nf_log_buf *m,
const struct sk_buff *skb,
u8 proto, int fragment,
unsigned int offset)
{ … }
static noinline_for_stack void
dump_ipv4_packet(struct net *net, struct nf_log_buf *m,
const struct nf_loginfo *info,
const struct sk_buff *skb, unsigned int iphoff)
{ … }
static noinline_for_stack void
dump_ipv6_packet(struct net *net, struct nf_log_buf *m,
const struct nf_loginfo *info,
const struct sk_buff *skb, unsigned int ip6hoff,
int recurse)
{ … }
static void dump_mac_header(struct nf_log_buf *m,
const struct nf_loginfo *info,
const struct sk_buff *skb)
{ … }
static void nf_log_ip_packet(struct net *net, u_int8_t pf,
unsigned int hooknum, const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
const struct nf_loginfo *loginfo,
const char *prefix)
{ … }
static struct nf_logger nf_ip_logger __read_mostly = …;
static void nf_log_ip6_packet(struct net *net, u_int8_t pf,
unsigned int hooknum, const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
const struct nf_loginfo *loginfo,
const char *prefix)
{ … }
static struct nf_logger nf_ip6_logger __read_mostly = …;
static void nf_log_unknown_packet(struct net *net, u_int8_t pf,
unsigned int hooknum,
const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
const struct nf_loginfo *loginfo,
const char *prefix)
{ … }
static void nf_log_netdev_packet(struct net *net, u_int8_t pf,
unsigned int hooknum,
const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
const struct nf_loginfo *loginfo,
const char *prefix)
{ … }
static struct nf_logger nf_netdev_logger __read_mostly = …;
static struct nf_logger nf_bridge_logger __read_mostly = …;
static int __net_init nf_log_syslog_net_init(struct net *net)
{ … }
static void __net_exit nf_log_syslog_net_exit(struct net *net)
{ … }
static struct pernet_operations nf_log_syslog_net_ops = …;
static int __init nf_log_syslog_init(void)
{ … }
static void __exit nf_log_syslog_exit(void)
{ … }
module_init(…) …;
module_exit(nf_log_syslog_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;
MODULE_ALIAS(…) …;
MODULE_ALIAS(…) …;
MODULE_ALIAS(…) …;
MODULE_ALIAS(…) …;
MODULE_ALIAS_NF_LOGGER(…);
MODULE_ALIAS_NF_LOGGER(…);
MODULE_ALIAS_NF_LOGGER(…);
MODULE_ALIAS_NF_LOGGER(…);
MODULE_ALIAS_NF_LOGGER(…);