77 unsigned int hooknum,
78 const struct sk_buff *skb,
79 const struct net_device *in,
80 const struct net_device *out,
81 const struct nf_loginfo *loginfo,
82 const char *fmt, ...)
83{
84 va_list args;
85 char prefix[NF_LOG_PREFIXLEN];
86 const struct nf_logger *logger;
87
88 rcu_read_lock();
89 logger = rcu_dereference(nf_loggers[pf]);
90 if (logger) {
91 va_start(args, fmt);
92 vsnprintf(prefix, sizeof(prefix), fmt, args);
93 va_end(args);
94 logger->logfn(pf, hooknum, skb, in, out, loginfo, prefix);
95 }
96 rcu_read_unlock();
97}
98EXPORT_SYMBOL(nf_log_packet);
99
100#ifdef CONFIG_PROC_FS
101static void *seq_start(struct seq_file *seq, loff_t *pos)
102 __acquires(RCU)
103{
104 rcu_read_lock();
105
106 if (*pos >= ARRAY_SIZE(nf_loggers))
107 return NULL;
108
109 return pos;
110}
111
112static void *seq_next(struct seq_file *s, void *v, loff_t *pos)
113{
114 (*pos)++;
115
116 if (*pos >= ARRAY_SIZE(nf_loggers))
117 return NULL;