diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/netfilter/nf_conntrack_common.h | 8 | ||||
| -rw-r--r-- | include/linux/netfilter/nfnetlink_conntrack.h | 8 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack.h | 6 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack_acct.h | 51 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack_extend.h | 2 |
5 files changed, 58 insertions, 17 deletions
diff --git a/include/linux/netfilter/nf_conntrack_common.h b/include/linux/netfilter/nf_conntrack_common.h index bad1eb760f61..885cbe282260 100644 --- a/include/linux/netfilter/nf_conntrack_common.h +++ b/include/linux/netfilter/nf_conntrack_common.h | |||
| @@ -122,7 +122,7 @@ enum ip_conntrack_events | |||
| 122 | IPCT_NATINFO_BIT = 10, | 122 | IPCT_NATINFO_BIT = 10, |
| 123 | IPCT_NATINFO = (1 << IPCT_NATINFO_BIT), | 123 | IPCT_NATINFO = (1 << IPCT_NATINFO_BIT), |
| 124 | 124 | ||
| 125 | /* Counter highest bit has been set */ | 125 | /* Counter highest bit has been set, unused */ |
| 126 | IPCT_COUNTER_FILLING_BIT = 11, | 126 | IPCT_COUNTER_FILLING_BIT = 11, |
| 127 | IPCT_COUNTER_FILLING = (1 << IPCT_COUNTER_FILLING_BIT), | 127 | IPCT_COUNTER_FILLING = (1 << IPCT_COUNTER_FILLING_BIT), |
| 128 | 128 | ||
| @@ -145,12 +145,6 @@ enum ip_conntrack_expect_events { | |||
| 145 | }; | 145 | }; |
| 146 | 146 | ||
| 147 | #ifdef __KERNEL__ | 147 | #ifdef __KERNEL__ |
| 148 | struct ip_conntrack_counter | ||
| 149 | { | ||
| 150 | u_int32_t packets; | ||
| 151 | u_int32_t bytes; | ||
| 152 | }; | ||
| 153 | |||
| 154 | struct ip_conntrack_stat | 148 | struct ip_conntrack_stat |
| 155 | { | 149 | { |
| 156 | unsigned int searched; | 150 | unsigned int searched; |
diff --git a/include/linux/netfilter/nfnetlink_conntrack.h b/include/linux/netfilter/nfnetlink_conntrack.h index 759bc043dc65..c19595c89304 100644 --- a/include/linux/netfilter/nfnetlink_conntrack.h +++ b/include/linux/netfilter/nfnetlink_conntrack.h | |||
| @@ -115,10 +115,10 @@ enum ctattr_protoinfo_sctp { | |||
| 115 | 115 | ||
| 116 | enum ctattr_counters { | 116 | enum ctattr_counters { |
| 117 | CTA_COUNTERS_UNSPEC, | 117 | CTA_COUNTERS_UNSPEC, |
| 118 | CTA_COUNTERS_PACKETS, /* old 64bit counters */ | 118 | CTA_COUNTERS_PACKETS, /* 64bit counters */ |
| 119 | CTA_COUNTERS_BYTES, /* old 64bit counters */ | 119 | CTA_COUNTERS_BYTES, /* 64bit counters */ |
| 120 | CTA_COUNTERS32_PACKETS, | 120 | CTA_COUNTERS32_PACKETS, /* old 32bit counters, unused */ |
| 121 | CTA_COUNTERS32_BYTES, | 121 | CTA_COUNTERS32_BYTES, /* old 32bit counters, unused */ |
| 122 | __CTA_COUNTERS_MAX | 122 | __CTA_COUNTERS_MAX |
| 123 | }; | 123 | }; |
| 124 | #define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1) | 124 | #define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1) |
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index 8f5b75734dd0..0741ad592da0 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h | |||
| @@ -88,7 +88,6 @@ struct nf_conn_help { | |||
| 88 | u8 expecting[NF_CT_MAX_EXPECT_CLASSES]; | 88 | u8 expecting[NF_CT_MAX_EXPECT_CLASSES]; |
| 89 | }; | 89 | }; |
| 90 | 90 | ||
| 91 | |||
| 92 | #include <net/netfilter/ipv4/nf_conntrack_ipv4.h> | 91 | #include <net/netfilter/ipv4/nf_conntrack_ipv4.h> |
| 93 | #include <net/netfilter/ipv6/nf_conntrack_ipv6.h> | 92 | #include <net/netfilter/ipv6/nf_conntrack_ipv6.h> |
| 94 | 93 | ||
| @@ -111,11 +110,6 @@ struct nf_conn | |||
| 111 | /* Timer function; drops refcnt when it goes off. */ | 110 | /* Timer function; drops refcnt when it goes off. */ |
| 112 | struct timer_list timeout; | 111 | struct timer_list timeout; |
| 113 | 112 | ||
| 114 | #ifdef CONFIG_NF_CT_ACCT | ||
| 115 | /* Accounting Information (same cache line as other written members) */ | ||
| 116 | struct ip_conntrack_counter counters[IP_CT_DIR_MAX]; | ||
| 117 | #endif | ||
| 118 | |||
| 119 | #if defined(CONFIG_NF_CONNTRACK_MARK) | 113 | #if defined(CONFIG_NF_CONNTRACK_MARK) |
| 120 | u_int32_t mark; | 114 | u_int32_t mark; |
| 121 | #endif | 115 | #endif |
diff --git a/include/net/netfilter/nf_conntrack_acct.h b/include/net/netfilter/nf_conntrack_acct.h new file mode 100644 index 000000000000..5d5ae55d54c4 --- /dev/null +++ b/include/net/netfilter/nf_conntrack_acct.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* | ||
| 2 | * (C) 2008 Krzysztof Piotr Oledzki <ole@ans.pl> | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef _NF_CONNTRACK_ACCT_H | ||
| 10 | #define _NF_CONNTRACK_ACCT_H | ||
| 11 | #include <linux/netfilter/nf_conntrack_common.h> | ||
| 12 | #include <linux/netfilter/nf_conntrack_tuple_common.h> | ||
| 13 | #include <net/netfilter/nf_conntrack.h> | ||
| 14 | #include <net/netfilter/nf_conntrack_extend.h> | ||
| 15 | |||
| 16 | struct nf_conn_counter { | ||
| 17 | u_int64_t packets; | ||
| 18 | u_int64_t bytes; | ||
| 19 | }; | ||
| 20 | |||
| 21 | extern int nf_ct_acct; | ||
| 22 | |||
| 23 | static inline | ||
| 24 | struct nf_conn_counter *nf_conn_acct_find(const struct nf_conn *ct) | ||
| 25 | { | ||
| 26 | return nf_ct_ext_find(ct, NF_CT_EXT_ACCT); | ||
| 27 | } | ||
| 28 | |||
| 29 | static inline | ||
| 30 | struct nf_conn_counter *nf_ct_acct_ext_add(struct nf_conn *ct, gfp_t gfp) | ||
| 31 | { | ||
| 32 | struct nf_conn_counter *acct; | ||
| 33 | |||
| 34 | if (!nf_ct_acct) | ||
| 35 | return NULL; | ||
| 36 | |||
| 37 | acct = nf_ct_ext_add(ct, NF_CT_EXT_ACCT, gfp); | ||
| 38 | if (!acct) | ||
| 39 | pr_debug("failed to add accounting extension area"); | ||
| 40 | |||
| 41 | |||
| 42 | return acct; | ||
| 43 | }; | ||
| 44 | |||
| 45 | extern unsigned int | ||
| 46 | seq_print_acct(struct seq_file *s, const struct nf_conn *ct, int dir); | ||
| 47 | |||
| 48 | extern int nf_conntrack_acct_init(void); | ||
| 49 | extern void nf_conntrack_acct_fini(void); | ||
| 50 | |||
| 51 | #endif /* _NF_CONNTRACK_ACCT_H */ | ||
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h index f80c0ed6d870..da8ee52613a5 100644 --- a/include/net/netfilter/nf_conntrack_extend.h +++ b/include/net/netfilter/nf_conntrack_extend.h | |||
| @@ -7,11 +7,13 @@ enum nf_ct_ext_id | |||
| 7 | { | 7 | { |
| 8 | NF_CT_EXT_HELPER, | 8 | NF_CT_EXT_HELPER, |
| 9 | NF_CT_EXT_NAT, | 9 | NF_CT_EXT_NAT, |
| 10 | NF_CT_EXT_ACCT, | ||
| 10 | NF_CT_EXT_NUM, | 11 | NF_CT_EXT_NUM, |
| 11 | }; | 12 | }; |
| 12 | 13 | ||
| 13 | #define NF_CT_EXT_HELPER_TYPE struct nf_conn_help | 14 | #define NF_CT_EXT_HELPER_TYPE struct nf_conn_help |
| 14 | #define NF_CT_EXT_NAT_TYPE struct nf_conn_nat | 15 | #define NF_CT_EXT_NAT_TYPE struct nf_conn_nat |
| 16 | #define NF_CT_EXT_ACCT_TYPE struct nf_conn_counter | ||
| 15 | 17 | ||
| 16 | /* Extensions: optional stuff which isn't permanently in struct. */ | 18 | /* Extensions: optional stuff which isn't permanently in struct. */ |
| 17 | struct nf_ct_ext { | 19 | struct nf_ct_ext { |
