Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 34612
b: refs/heads/master
c: 2518c7c
h: refs/heads/master
v: v3
  • Loading branch information
David S. Miller committed Sep 22, 2006
1 parent ad2b6f5 commit 69450fd
Show file tree
Hide file tree
Showing 3 changed files with 547 additions and 159 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c1969f294e624d5b642fc8e6ab9468b7c7791fa8
refs/heads/master: 2518c7c2b3d7f0a6b302b4efe17c911f8dd4049f
23 changes: 5 additions & 18 deletions trunk/include/net/xfrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,8 @@ struct xfrm_tmpl
struct xfrm_policy
{
struct xfrm_policy *next;
struct list_head list;
struct hlist_node bydst;
struct hlist_node byidx;

/* This lock only affects elements except for entry. */
rwlock_t lock;
Expand Down Expand Up @@ -385,21 +386,7 @@ struct xfrm_mgr
extern int xfrm_register_km(struct xfrm_mgr *km);
extern int xfrm_unregister_km(struct xfrm_mgr *km);


extern struct xfrm_policy *xfrm_policy_list[XFRM_POLICY_MAX*2];
#ifdef CONFIG_XFRM_SUB_POLICY
extern struct xfrm_policy *xfrm_policy_list_sub[XFRM_POLICY_MAX*2];

static inline int xfrm_policy_lists_empty(int dir)
{
return (!xfrm_policy_list[dir] && !xfrm_policy_list_sub[dir]);
}
#else
static inline int xfrm_policy_lists_empty(int dir)
{
return (!xfrm_policy_list[dir]);
}
#endif
extern unsigned int xfrm_policy_count[XFRM_POLICY_MAX*2];

static inline void xfrm_pol_hold(struct xfrm_policy *policy)
{
Expand Down Expand Up @@ -678,7 +665,7 @@ static inline int xfrm_policy_check(struct sock *sk, int dir, struct sk_buff *sk
if (sk && sk->sk_policy[XFRM_POLICY_IN])
return __xfrm_policy_check(sk, dir, skb, family);

return (xfrm_policy_lists_empty(dir) && !skb->sp) ||
return (!xfrm_policy_count[dir] && !skb->sp) ||
(skb->dst->flags & DST_NOPOLICY) ||
__xfrm_policy_check(sk, dir, skb, family);
}
Expand All @@ -698,7 +685,7 @@ extern int __xfrm_route_forward(struct sk_buff *skb, unsigned short family);

static inline int xfrm_route_forward(struct sk_buff *skb, unsigned short family)
{
return xfrm_policy_lists_empty(XFRM_POLICY_OUT) ||
return !xfrm_policy_count[XFRM_POLICY_OUT] ||
(skb->dst->flags & DST_NOXFRM) ||
__xfrm_route_forward(skb, family);
}
Expand Down
Loading

0 comments on commit 69450fd

Please sign in to comment.