diff options
author | Steffen Klassert <steffen.klassert@secunet.com> | 2014-03-14 02:28:08 -0400 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2014-03-14 02:28:08 -0400 |
commit | 573ce1c11b0d93a08b988d2713ef02214404aad1 (patch) | |
tree | 49150ea632bc196b079dcfc978f90d018bba9d32 /net/ipv6/xfrm6_mode_tunnel.c | |
parent | fa9ad96d4905c3e2013bcce18c104108275c4c08 (diff) |
xfrm6: Remove xfrm_tunnel_notifier
This was used from vti and is replaced by the IPsec protocol
multiplexer hooks. It is now unused, so remove it.
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'net/ipv6/xfrm6_mode_tunnel.c')
-rw-r--r-- | net/ipv6/xfrm6_mode_tunnel.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c index cb04f7a16b5e..901ef6f8addc 100644 --- a/net/ipv6/xfrm6_mode_tunnel.c +++ b/net/ipv6/xfrm6_mode_tunnel.c | |||
@@ -18,65 +18,6 @@ | |||
18 | #include <net/ipv6.h> | 18 | #include <net/ipv6.h> |
19 | #include <net/xfrm.h> | 19 | #include <net/xfrm.h> |
20 | 20 | ||
21 | /* Informational hook. The decap is still done here. */ | ||
22 | static struct xfrm_tunnel_notifier __rcu *rcv_notify_handlers __read_mostly; | ||
23 | static DEFINE_MUTEX(xfrm6_mode_tunnel_input_mutex); | ||
24 | |||
25 | int xfrm6_mode_tunnel_input_register(struct xfrm_tunnel_notifier *handler) | ||
26 | { | ||
27 | struct xfrm_tunnel_notifier __rcu **pprev; | ||
28 | struct xfrm_tunnel_notifier *t; | ||
29 | int ret = -EEXIST; | ||
30 | int priority = handler->priority; | ||
31 | |||
32 | mutex_lock(&xfrm6_mode_tunnel_input_mutex); | ||
33 | |||
34 | for (pprev = &rcv_notify_handlers; | ||
35 | (t = rcu_dereference_protected(*pprev, | ||
36 | lockdep_is_held(&xfrm6_mode_tunnel_input_mutex))) != NULL; | ||
37 | pprev = &t->next) { | ||
38 | if (t->priority > priority) | ||
39 | break; | ||
40 | if (t->priority == priority) | ||
41 | goto err; | ||
42 | |||
43 | } | ||
44 | |||
45 | handler->next = *pprev; | ||
46 | rcu_assign_pointer(*pprev, handler); | ||
47 | |||
48 | ret = 0; | ||
49 | |||
50 | err: | ||
51 | mutex_unlock(&xfrm6_mode_tunnel_input_mutex); | ||
52 | return ret; | ||
53 | } | ||
54 | EXPORT_SYMBOL_GPL(xfrm6_mode_tunnel_input_register); | ||
55 | |||
56 | int xfrm6_mode_tunnel_input_deregister(struct xfrm_tunnel_notifier *handler) | ||
57 | { | ||
58 | struct xfrm_tunnel_notifier __rcu **pprev; | ||
59 | struct xfrm_tunnel_notifier *t; | ||
60 | int ret = -ENOENT; | ||
61 | |||
62 | mutex_lock(&xfrm6_mode_tunnel_input_mutex); | ||
63 | for (pprev = &rcv_notify_handlers; | ||
64 | (t = rcu_dereference_protected(*pprev, | ||
65 | lockdep_is_held(&xfrm6_mode_tunnel_input_mutex))) != NULL; | ||
66 | pprev = &t->next) { | ||
67 | if (t == handler) { | ||
68 | *pprev = handler->next; | ||
69 | ret = 0; | ||
70 | break; | ||
71 | } | ||
72 | } | ||
73 | mutex_unlock(&xfrm6_mode_tunnel_input_mutex); | ||
74 | synchronize_net(); | ||
75 | |||
76 | return ret; | ||
77 | } | ||
78 | EXPORT_SYMBOL_GPL(xfrm6_mode_tunnel_input_deregister); | ||
79 | |||
80 | static inline void ipip6_ecn_decapsulate(struct sk_buff *skb) | 21 | static inline void ipip6_ecn_decapsulate(struct sk_buff *skb) |
81 | { | 22 | { |
82 | const struct ipv6hdr *outer_iph = ipv6_hdr(skb); | 23 | const struct ipv6hdr *outer_iph = ipv6_hdr(skb); |
@@ -130,7 +71,6 @@ static int xfrm6_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb) | |||
130 | 71 | ||
131 | static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) | 72 | static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) |
132 | { | 73 | { |
133 | struct xfrm_tunnel_notifier *handler; | ||
134 | int err = -EINVAL; | 74 | int err = -EINVAL; |
135 | 75 | ||
136 | if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPV6) | 76 | if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPV6) |
@@ -138,9 +78,6 @@ static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) | |||
138 | if (!pskb_may_pull(skb, sizeof(struct ipv6hdr))) | 78 | if (!pskb_may_pull(skb, sizeof(struct ipv6hdr))) |
139 | goto out; | 79 | goto out; |
140 | 80 | ||
141 | for_each_input_rcu(rcv_notify_handlers, handler) | ||
142 | handler->handler(skb); | ||
143 | |||
144 | err = skb_unclone(skb, GFP_ATOMIC); | 81 | err = skb_unclone(skb, GFP_ATOMIC); |
145 | if (err) | 82 | if (err) |
146 | goto out; | 83 | goto out; |