diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-01-22 09:02:14 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:10:34 -0500 |
commit | ac18e7509e7df327e30d6e073a787d922eaf211d (patch) | |
tree | 26be1582b59956c389a667d5426fdc538072795b /include | |
parent | 8d8354d2fb9277f165715a6e1cb92bcc89259975 (diff) |
[NETNS][FRAGS]: Make the inet_frag_queue lookup work in namespaces.
Since fragment management code is consolidated, we cannot have the
pointer from inet_frag_queue to struct net, since we must know what
king of fragment this is.
So, I introduce the netns_frags structure. This one is currently
empty, but will be eventually filled with per-namespace
attributes. Each inet_frag_queue is tagged with this one.
The conntrack_reasm is not "netns-izated", so it has one static
netns_frags instance to keep working in init namespace.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/inet_frag.h | 8 | ||||
-rw-r--r-- | include/net/netns/ipv4.h | 4 | ||||
-rw-r--r-- | include/net/netns/ipv6.h | 1 |
3 files changed, 11 insertions, 2 deletions
diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h index 954def408975..8ab6df64a12a 100644 --- a/include/net/inet_frag.h +++ b/include/net/inet_frag.h | |||
@@ -1,8 +1,12 @@ | |||
1 | #ifndef __NET_FRAG_H__ | 1 | #ifndef __NET_FRAG_H__ |
2 | #define __NET_FRAG_H__ | 2 | #define __NET_FRAG_H__ |
3 | 3 | ||
4 | struct netns_frags { | ||
5 | }; | ||
6 | |||
4 | struct inet_frag_queue { | 7 | struct inet_frag_queue { |
5 | struct hlist_node list; | 8 | struct hlist_node list; |
9 | struct netns_frags *net; | ||
6 | struct list_head lru_list; /* lru list member */ | 10 | struct list_head lru_list; /* lru list member */ |
7 | spinlock_t lock; | 11 | spinlock_t lock; |
8 | atomic_t refcnt; | 12 | atomic_t refcnt; |
@@ -55,8 +59,8 @@ void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f); | |||
55 | void inet_frag_destroy(struct inet_frag_queue *q, | 59 | void inet_frag_destroy(struct inet_frag_queue *q, |
56 | struct inet_frags *f, int *work); | 60 | struct inet_frags *f, int *work); |
57 | int inet_frag_evictor(struct inet_frags *f); | 61 | int inet_frag_evictor(struct inet_frags *f); |
58 | struct inet_frag_queue *inet_frag_find(struct inet_frags *f, void *key, | 62 | struct inet_frag_queue *inet_frag_find(struct netns_frags *nf, |
59 | unsigned int hash); | 63 | struct inet_frags *f, void *key, unsigned int hash); |
60 | 64 | ||
61 | static inline void inet_frag_put(struct inet_frag_queue *q, struct inet_frags *f) | 65 | static inline void inet_frag_put(struct inet_frag_queue *q, struct inet_frags *f) |
62 | { | 66 | { |
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 3872aa7e294b..80680e09443c 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h | |||
@@ -5,6 +5,8 @@ | |||
5 | #ifndef __NETNS_IPV4_H__ | 5 | #ifndef __NETNS_IPV4_H__ |
6 | #define __NETNS_IPV4_H__ | 6 | #define __NETNS_IPV4_H__ |
7 | 7 | ||
8 | #include <net/inet_frag.h> | ||
9 | |||
8 | struct ctl_table_header; | 10 | struct ctl_table_header; |
9 | struct ipv4_devconf; | 11 | struct ipv4_devconf; |
10 | struct fib_rules_ops; | 12 | struct fib_rules_ops; |
@@ -22,5 +24,7 @@ struct netns_ipv4 { | |||
22 | #endif | 24 | #endif |
23 | struct hlist_head *fib_table_hash; | 25 | struct hlist_head *fib_table_hash; |
24 | struct sock *fibnl; | 26 | struct sock *fibnl; |
27 | |||
28 | struct netns_frags frags; | ||
25 | }; | 29 | }; |
26 | #endif | 30 | #endif |
diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h index 06b4dc034bbd..057c8e473a75 100644 --- a/include/net/netns/ipv6.h +++ b/include/net/netns/ipv6.h | |||
@@ -30,5 +30,6 @@ struct netns_ipv6 { | |||
30 | struct netns_sysctl_ipv6 sysctl; | 30 | struct netns_sysctl_ipv6 sysctl; |
31 | struct ipv6_devconf *devconf_all; | 31 | struct ipv6_devconf *devconf_all; |
32 | struct ipv6_devconf *devconf_dflt; | 32 | struct ipv6_devconf *devconf_dflt; |
33 | struct netns_frags frags; | ||
33 | }; | 34 | }; |
34 | #endif | 35 | #endif |