diff options
Diffstat (limited to 'net/netfilter/xt_connbytes.c')
-rw-r--r-- | net/netfilter/xt_connbytes.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/net/netfilter/xt_connbytes.c b/net/netfilter/xt_connbytes.c index 5b138506690..2b8418c257c 100644 --- a/net/netfilter/xt_connbytes.c +++ b/net/netfilter/xt_connbytes.c | |||
@@ -40,46 +40,46 @@ connbytes_mt(const struct sk_buff *skb, struct xt_action_param *par) | |||
40 | case XT_CONNBYTES_PKTS: | 40 | case XT_CONNBYTES_PKTS: |
41 | switch (sinfo->direction) { | 41 | switch (sinfo->direction) { |
42 | case XT_CONNBYTES_DIR_ORIGINAL: | 42 | case XT_CONNBYTES_DIR_ORIGINAL: |
43 | what = counters[IP_CT_DIR_ORIGINAL].packets; | 43 | what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets); |
44 | break; | 44 | break; |
45 | case XT_CONNBYTES_DIR_REPLY: | 45 | case XT_CONNBYTES_DIR_REPLY: |
46 | what = counters[IP_CT_DIR_REPLY].packets; | 46 | what = atomic64_read(&counters[IP_CT_DIR_REPLY].packets); |
47 | break; | 47 | break; |
48 | case XT_CONNBYTES_DIR_BOTH: | 48 | case XT_CONNBYTES_DIR_BOTH: |
49 | what = counters[IP_CT_DIR_ORIGINAL].packets; | 49 | what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets); |
50 | what += counters[IP_CT_DIR_REPLY].packets; | 50 | what += atomic64_read(&counters[IP_CT_DIR_REPLY].packets); |
51 | break; | 51 | break; |
52 | } | 52 | } |
53 | break; | 53 | break; |
54 | case XT_CONNBYTES_BYTES: | 54 | case XT_CONNBYTES_BYTES: |
55 | switch (sinfo->direction) { | 55 | switch (sinfo->direction) { |
56 | case XT_CONNBYTES_DIR_ORIGINAL: | 56 | case XT_CONNBYTES_DIR_ORIGINAL: |
57 | what = counters[IP_CT_DIR_ORIGINAL].bytes; | 57 | what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes); |
58 | break; | 58 | break; |
59 | case XT_CONNBYTES_DIR_REPLY: | 59 | case XT_CONNBYTES_DIR_REPLY: |
60 | what = counters[IP_CT_DIR_REPLY].bytes; | 60 | what = atomic64_read(&counters[IP_CT_DIR_REPLY].bytes); |
61 | break; | 61 | break; |
62 | case XT_CONNBYTES_DIR_BOTH: | 62 | case XT_CONNBYTES_DIR_BOTH: |
63 | what = counters[IP_CT_DIR_ORIGINAL].bytes; | 63 | what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes); |
64 | what += counters[IP_CT_DIR_REPLY].bytes; | 64 | what += atomic64_read(&counters[IP_CT_DIR_REPLY].bytes); |
65 | break; | 65 | break; |
66 | } | 66 | } |
67 | break; | 67 | break; |
68 | case XT_CONNBYTES_AVGPKT: | 68 | case XT_CONNBYTES_AVGPKT: |
69 | switch (sinfo->direction) { | 69 | switch (sinfo->direction) { |
70 | case XT_CONNBYTES_DIR_ORIGINAL: | 70 | case XT_CONNBYTES_DIR_ORIGINAL: |
71 | bytes = counters[IP_CT_DIR_ORIGINAL].bytes; | 71 | bytes = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes); |
72 | pkts = counters[IP_CT_DIR_ORIGINAL].packets; | 72 | pkts = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets); |
73 | break; | 73 | break; |
74 | case XT_CONNBYTES_DIR_REPLY: | 74 | case XT_CONNBYTES_DIR_REPLY: |
75 | bytes = counters[IP_CT_DIR_REPLY].bytes; | 75 | bytes = atomic64_read(&counters[IP_CT_DIR_REPLY].bytes); |
76 | pkts = counters[IP_CT_DIR_REPLY].packets; | 76 | pkts = atomic64_read(&counters[IP_CT_DIR_REPLY].packets); |
77 | break; | 77 | break; |
78 | case XT_CONNBYTES_DIR_BOTH: | 78 | case XT_CONNBYTES_DIR_BOTH: |
79 | bytes = counters[IP_CT_DIR_ORIGINAL].bytes + | 79 | bytes = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes) + |
80 | counters[IP_CT_DIR_REPLY].bytes; | 80 | atomic64_read(&counters[IP_CT_DIR_REPLY].bytes); |
81 | pkts = counters[IP_CT_DIR_ORIGINAL].packets + | 81 | pkts = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets) + |
82 | counters[IP_CT_DIR_REPLY].packets; | 82 | atomic64_read(&counters[IP_CT_DIR_REPLY].packets); |
83 | break; | 83 | break; |
84 | } | 84 | } |
85 | if (pkts != 0) | 85 | if (pkts != 0) |