aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2008-01-22 09:02:14 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:10:34 -0500
commitac18e7509e7df327e30d6e073a787d922eaf211d (patch)
tree26be1582b59956c389a667d5426fdc538072795b /include
parent8d8354d2fb9277f165715a6e1cb92bcc89259975 (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.h8
-rw-r--r--include/net/netns/ipv4.h4
-rw-r--r--include/net/netns/ipv6.h1
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
4struct netns_frags {
5};
6
4struct inet_frag_queue { 7struct 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);
55void inet_frag_destroy(struct inet_frag_queue *q, 59void inet_frag_destroy(struct inet_frag_queue *q,
56 struct inet_frags *f, int *work); 60 struct inet_frags *f, int *work);
57int inet_frag_evictor(struct inet_frags *f); 61int inet_frag_evictor(struct inet_frags *f);
58struct inet_frag_queue *inet_frag_find(struct inet_frags *f, void *key, 62struct 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
61static inline void inet_frag_put(struct inet_frag_queue *q, struct inet_frags *f) 65static 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
8struct ctl_table_header; 10struct ctl_table_header;
9struct ipv4_devconf; 11struct ipv4_devconf;
10struct fib_rules_ops; 12struct 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