#include <linux/socket.h>
#include <linux/net.h>
#include <linux/ipv6.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/stddef.h>
#include <linux/export.h>
#include <net/net_namespace.h>
#include <net/ip.h>
#include <net/sock.h>
#include <net/tcp.h>
#include <net/udp.h>
#include <net/transp_v6.h>
#include <net/ipv6.h>
#define MAX4(a, b, c, d) …
#define SNMP_MIB_MAX …
static int sockstat6_seq_show(struct seq_file *seq, void *v)
{ … }
static const struct snmp_mib snmp6_ipstats_list[] = …;
static const struct snmp_mib snmp6_icmp6_list[] = …;
static const char *const icmp6type2name[256] = …;
static const struct snmp_mib snmp6_udp6_list[] = …;
static const struct snmp_mib snmp6_udplite6_list[] = …;
static void snmp6_seq_show_icmpv6msg(struct seq_file *seq, atomic_long_t *smib)
{ … }
static void snmp6_seq_show_item(struct seq_file *seq, void __percpu *pcpumib,
atomic_long_t *smib,
const struct snmp_mib *itemlist)
{ … }
static void snmp6_seq_show_item64(struct seq_file *seq, void __percpu *mib,
const struct snmp_mib *itemlist, size_t syncpoff)
{ … }
static int snmp6_seq_show(struct seq_file *seq, void *v)
{ … }
static int snmp6_dev_seq_show(struct seq_file *seq, void *v)
{ … }
int snmp6_register_dev(struct inet6_dev *idev)
{ … }
int snmp6_unregister_dev(struct inet6_dev *idev)
{ … }
static int __net_init ipv6_proc_init_net(struct net *net)
{ … }
static void __net_exit ipv6_proc_exit_net(struct net *net)
{ … }
static struct pernet_operations ipv6_proc_ops = …;
int __init ipv6_misc_proc_init(void)
{ … }
void ipv6_misc_proc_exit(void)
{ … }