netns xfrm: add struct xfrm_policy::xp_net

Again, to avoid complications with passing netns when not necessary.
Again, ->xp_net is set-once field, once set it never changes.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Alexey Dobriyan
2008-11-25 17:21:45 -08:00
committed by David S. Miller
parent 50a30657fd
commit 0331b1f383
4 changed files with 16 additions and 7 deletions

View File

@ -475,6 +475,9 @@ struct xfrm_policy_walk {
struct xfrm_policy
{
#ifdef CONFIG_NET_NS
struct net *xp_net;
#endif
struct hlist_node bydst;
struct hlist_node byidx;
@ -499,6 +502,11 @@ struct xfrm_policy
struct xfrm_tmpl xfrm_vec[XFRM_MAX_DEPTH];
};
static inline struct net *xp_net(struct xfrm_policy *xp)
{
return read_pnet(&xp->xp_net);
}
struct xfrm_kmaddress {
xfrm_address_t local;
xfrm_address_t remote;
@ -1425,7 +1433,7 @@ static inline int xfrm4_udp_encap_rcv(struct sock *sk, struct sk_buff *skb)
}
#endif
struct xfrm_policy *xfrm_policy_alloc(gfp_t gfp);
struct xfrm_policy *xfrm_policy_alloc(struct net *net, gfp_t gfp);
extern void xfrm_policy_walk_init(struct xfrm_policy_walk *walk, u8 type);
extern int xfrm_policy_walk(struct xfrm_policy_walk *walk,