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:
committed by
David S. Miller
parent
50a30657fd
commit
0331b1f383
@ -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,
|
||||
|
Reference in New Issue
Block a user