#include <linux/in.h>
#include <linux/inet.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/net.h>
#include <linux/proc_fs.h>
#include <linux/rculist.h>
#include <linux/seq_file.h>
#include <linux/socket.h>
#include <net/inet_sock.h>
#include <net/kcm.h>
#include <net/net_namespace.h>
#include <net/netns/generic.h>
#include <net/tcp.h>
#ifdef CONFIG_PROC_FS
static struct kcm_mux *kcm_get_first(struct seq_file *seq)
{ … }
static struct kcm_mux *kcm_get_next(struct kcm_mux *mux)
{ … }
static struct kcm_mux *kcm_get_idx(struct seq_file *seq, loff_t pos)
{ … }
static void *kcm_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{ … }
static void *kcm_seq_start(struct seq_file *seq, loff_t *pos)
__acquires(rcu)
{ … }
static void kcm_seq_stop(struct seq_file *seq, void *v)
__releases(rcu)
{ … }
struct kcm_proc_mux_state { … };
static void kcm_format_mux_header(struct seq_file *seq)
{ … }
static void kcm_format_sock(struct kcm_sock *kcm, struct seq_file *seq,
int i, int *len)
{ … }
static void kcm_format_psock(struct kcm_psock *psock, struct seq_file *seq,
int i, int *len)
{ … }
static void
kcm_format_mux(struct kcm_mux *mux, loff_t idx, struct seq_file *seq)
{ … }
static int kcm_seq_show(struct seq_file *seq, void *v)
{ … }
static const struct seq_operations kcm_seq_ops = …;
static int kcm_stats_seq_show(struct seq_file *seq, void *v)
{ … }
static int kcm_proc_init_net(struct net *net)
{ … }
static void kcm_proc_exit_net(struct net *net)
{ … }
static struct pernet_operations kcm_net_ops = …;
int __init kcm_proc_init(void)
{ … }
void __exit kcm_proc_exit(void)
{ … }
#endif