Blame view
net/xfrm/xfrm_proc.c
3.14 KB
558f82ef6 [XFRM]: Define pa... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* * xfrm_proc.c * * Copyright (C)2006-2007 USAGI/WIDE Project * * Authors: Masahide NAKAMURA <nakam@linux-ipv6.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <linux/proc_fs.h> #include <linux/seq_file.h> |
bc3b2d7fb net: Add export.h... |
15 |
#include <linux/export.h> |
558f82ef6 [XFRM]: Define pa... |
16 17 |
#include <net/snmp.h> #include <net/xfrm.h> |
5833929cc net: constify MIB... |
18 |
static const struct snmp_mib xfrm_mib_list[] = { |
558f82ef6 [XFRM]: Define pa... |
19 20 21 22 23 24 |
SNMP_MIB_ITEM("XfrmInError", LINUX_MIB_XFRMINERROR), SNMP_MIB_ITEM("XfrmInBufferError", LINUX_MIB_XFRMINBUFFERERROR), SNMP_MIB_ITEM("XfrmInHdrError", LINUX_MIB_XFRMINHDRERROR), SNMP_MIB_ITEM("XfrmInNoStates", LINUX_MIB_XFRMINNOSTATES), SNMP_MIB_ITEM("XfrmInStateProtoError", LINUX_MIB_XFRMINSTATEPROTOERROR), SNMP_MIB_ITEM("XfrmInStateModeError", LINUX_MIB_XFRMINSTATEMODEERROR), |
9472c9ef6 [XFRM]: Fix stati... |
25 |
SNMP_MIB_ITEM("XfrmInStateSeqError", LINUX_MIB_XFRMINSTATESEQERROR), |
558f82ef6 [XFRM]: Define pa... |
26 27 28 29 30 31 32 33 34 35 36 37 38 |
SNMP_MIB_ITEM("XfrmInStateExpired", LINUX_MIB_XFRMINSTATEEXPIRED), SNMP_MIB_ITEM("XfrmInStateMismatch", LINUX_MIB_XFRMINSTATEMISMATCH), SNMP_MIB_ITEM("XfrmInStateInvalid", LINUX_MIB_XFRMINSTATEINVALID), SNMP_MIB_ITEM("XfrmInTmplMismatch", LINUX_MIB_XFRMINTMPLMISMATCH), SNMP_MIB_ITEM("XfrmInNoPols", LINUX_MIB_XFRMINNOPOLS), SNMP_MIB_ITEM("XfrmInPolBlock", LINUX_MIB_XFRMINPOLBLOCK), SNMP_MIB_ITEM("XfrmInPolError", LINUX_MIB_XFRMINPOLERROR), SNMP_MIB_ITEM("XfrmOutError", LINUX_MIB_XFRMOUTERROR), SNMP_MIB_ITEM("XfrmOutBundleGenError", LINUX_MIB_XFRMOUTBUNDLEGENERROR), SNMP_MIB_ITEM("XfrmOutBundleCheckError", LINUX_MIB_XFRMOUTBUNDLECHECKERROR), SNMP_MIB_ITEM("XfrmOutNoStates", LINUX_MIB_XFRMOUTNOSTATES), SNMP_MIB_ITEM("XfrmOutStateProtoError", LINUX_MIB_XFRMOUTSTATEPROTOERROR), SNMP_MIB_ITEM("XfrmOutStateModeError", LINUX_MIB_XFRMOUTSTATEMODEERROR), |
9472c9ef6 [XFRM]: Fix stati... |
39 |
SNMP_MIB_ITEM("XfrmOutStateSeqError", LINUX_MIB_XFRMOUTSTATESEQERROR), |
558f82ef6 [XFRM]: Define pa... |
40 41 42 43 |
SNMP_MIB_ITEM("XfrmOutStateExpired", LINUX_MIB_XFRMOUTSTATEEXPIRED), SNMP_MIB_ITEM("XfrmOutPolBlock", LINUX_MIB_XFRMOUTPOLBLOCK), SNMP_MIB_ITEM("XfrmOutPolDead", LINUX_MIB_XFRMOUTPOLDEAD), SNMP_MIB_ITEM("XfrmOutPolError", LINUX_MIB_XFRMOUTPOLERROR), |
72032fdbc xfrm: Introduce L... |
44 |
SNMP_MIB_ITEM("XfrmFwdHdrError", LINUX_MIB_XFRMFWDHDRERROR), |
558f82ef6 [XFRM]: Define pa... |
45 46 |
SNMP_MIB_SENTINEL }; |
558f82ef6 [XFRM]: Define pa... |
47 48 |
static int xfrm_statistics_seq_show(struct seq_file *seq, void *v) { |
c68cd1a01 netns xfrm: /proc... |
49 |
struct net *net = seq->private; |
558f82ef6 [XFRM]: Define pa... |
50 51 52 53 |
int i; for (i=0; xfrm_mib_list[i].name; i++) seq_printf(seq, "%-24s\t%lu ", xfrm_mib_list[i].name, |
7d720c3e4 percpu: add __per... |
54 55 |
snmp_fold_field((void __percpu **) net->mib.xfrm_statistics, |
91b208c7c net: make xfrm_st... |
56 |
xfrm_mib_list[i].entry)); |
558f82ef6 [XFRM]: Define pa... |
57 58 59 60 61 |
return 0; } static int xfrm_statistics_seq_open(struct inode *inode, struct file *file) { |
c68cd1a01 netns xfrm: /proc... |
62 |
return single_open_net(inode, file, xfrm_statistics_seq_show); |
558f82ef6 [XFRM]: Define pa... |
63 |
} |
5ca1b998d net: file_operati... |
64 |
static const struct file_operations xfrm_statistics_seq_fops = { |
558f82ef6 [XFRM]: Define pa... |
65 66 67 68 |
.owner = THIS_MODULE, .open = xfrm_statistics_seq_open, .read = seq_read, .llseek = seq_lseek, |
c68cd1a01 netns xfrm: /proc... |
69 |
.release = single_release_net, |
558f82ef6 [XFRM]: Define pa... |
70 |
}; |
c68cd1a01 netns xfrm: /proc... |
71 |
int __net_init xfrm_proc_init(struct net *net) |
558f82ef6 [XFRM]: Define pa... |
72 |
{ |
c68cd1a01 netns xfrm: /proc... |
73 |
if (!proc_net_fops_create(net, "xfrm_stat", S_IRUGO, |
558f82ef6 [XFRM]: Define pa... |
74 |
&xfrm_statistics_seq_fops)) |
c68cd1a01 netns xfrm: /proc... |
75 76 77 |
return -ENOMEM; return 0; } |
558f82ef6 [XFRM]: Define pa... |
78 |
|
c68cd1a01 netns xfrm: /proc... |
79 80 81 |
void xfrm_proc_fini(struct net *net) { proc_net_remove(net, "xfrm_stat"); |
558f82ef6 [XFRM]: Define pa... |
82 |
} |