Loading include/net/xfrm.h +0 −2 Original line number Diff line number Diff line Loading @@ -1531,8 +1531,6 @@ int xfrm4_protocol_deregister(struct xfrm4_protocol *handler, unsigned char prot int xfrm4_tunnel_register(struct xfrm_tunnel *handler, unsigned short family); int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler, unsigned short family); void xfrm4_local_error(struct sk_buff *skb, u32 mtu); int xfrm4_mode_tunnel_input_register(struct xfrm_tunnel_notifier *handler); int xfrm4_mode_tunnel_input_deregister(struct xfrm_tunnel_notifier *handler); int xfrm6_mode_tunnel_input_register(struct xfrm_tunnel_notifier *handler); int xfrm6_mode_tunnel_input_deregister(struct xfrm_tunnel_notifier *handler); int xfrm6_extract_header(struct sk_buff *skb); Loading net/ipv4/xfrm4_mode_tunnel.c +0 −68 Original line number Diff line number Diff line Loading @@ -15,65 +15,6 @@ #include <net/ip.h> #include <net/xfrm.h> /* Informational hook. The decap is still done here. */ static struct xfrm_tunnel_notifier __rcu *rcv_notify_handlers __read_mostly; static DEFINE_MUTEX(xfrm4_mode_tunnel_input_mutex); int xfrm4_mode_tunnel_input_register(struct xfrm_tunnel_notifier *handler) { struct xfrm_tunnel_notifier __rcu **pprev; struct xfrm_tunnel_notifier *t; int ret = -EEXIST; int priority = handler->priority; mutex_lock(&xfrm4_mode_tunnel_input_mutex); for (pprev = &rcv_notify_handlers; (t = rcu_dereference_protected(*pprev, lockdep_is_held(&xfrm4_mode_tunnel_input_mutex))) != NULL; pprev = &t->next) { if (t->priority > priority) break; if (t->priority == priority) goto err; } handler->next = *pprev; rcu_assign_pointer(*pprev, handler); ret = 0; err: mutex_unlock(&xfrm4_mode_tunnel_input_mutex); return ret; } EXPORT_SYMBOL_GPL(xfrm4_mode_tunnel_input_register); int xfrm4_mode_tunnel_input_deregister(struct xfrm_tunnel_notifier *handler) { struct xfrm_tunnel_notifier __rcu **pprev; struct xfrm_tunnel_notifier *t; int ret = -ENOENT; mutex_lock(&xfrm4_mode_tunnel_input_mutex); for (pprev = &rcv_notify_handlers; (t = rcu_dereference_protected(*pprev, lockdep_is_held(&xfrm4_mode_tunnel_input_mutex))) != NULL; pprev = &t->next) { if (t == handler) { *pprev = handler->next; ret = 0; break; } } mutex_unlock(&xfrm4_mode_tunnel_input_mutex); synchronize_net(); return ret; } EXPORT_SYMBOL_GPL(xfrm4_mode_tunnel_input_deregister); static inline void ipip_ecn_decapsulate(struct sk_buff *skb) { struct iphdr *inner_iph = ipip_hdr(skb); Loading Loading @@ -127,14 +68,8 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb) return 0; } #define for_each_input_rcu(head, handler) \ for (handler = rcu_dereference(head); \ handler != NULL; \ handler = rcu_dereference(handler->next)) static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) { struct xfrm_tunnel_notifier *handler; int err = -EINVAL; if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPIP) Loading @@ -143,9 +78,6 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) if (!pskb_may_pull(skb, sizeof(struct iphdr))) goto out; for_each_input_rcu(rcv_notify_handlers, handler) handler->handler(skb); err = skb_unclone(skb, GFP_ATOMIC); if (err) goto out; Loading Loading
include/net/xfrm.h +0 −2 Original line number Diff line number Diff line Loading @@ -1531,8 +1531,6 @@ int xfrm4_protocol_deregister(struct xfrm4_protocol *handler, unsigned char prot int xfrm4_tunnel_register(struct xfrm_tunnel *handler, unsigned short family); int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler, unsigned short family); void xfrm4_local_error(struct sk_buff *skb, u32 mtu); int xfrm4_mode_tunnel_input_register(struct xfrm_tunnel_notifier *handler); int xfrm4_mode_tunnel_input_deregister(struct xfrm_tunnel_notifier *handler); int xfrm6_mode_tunnel_input_register(struct xfrm_tunnel_notifier *handler); int xfrm6_mode_tunnel_input_deregister(struct xfrm_tunnel_notifier *handler); int xfrm6_extract_header(struct sk_buff *skb); Loading
net/ipv4/xfrm4_mode_tunnel.c +0 −68 Original line number Diff line number Diff line Loading @@ -15,65 +15,6 @@ #include <net/ip.h> #include <net/xfrm.h> /* Informational hook. The decap is still done here. */ static struct xfrm_tunnel_notifier __rcu *rcv_notify_handlers __read_mostly; static DEFINE_MUTEX(xfrm4_mode_tunnel_input_mutex); int xfrm4_mode_tunnel_input_register(struct xfrm_tunnel_notifier *handler) { struct xfrm_tunnel_notifier __rcu **pprev; struct xfrm_tunnel_notifier *t; int ret = -EEXIST; int priority = handler->priority; mutex_lock(&xfrm4_mode_tunnel_input_mutex); for (pprev = &rcv_notify_handlers; (t = rcu_dereference_protected(*pprev, lockdep_is_held(&xfrm4_mode_tunnel_input_mutex))) != NULL; pprev = &t->next) { if (t->priority > priority) break; if (t->priority == priority) goto err; } handler->next = *pprev; rcu_assign_pointer(*pprev, handler); ret = 0; err: mutex_unlock(&xfrm4_mode_tunnel_input_mutex); return ret; } EXPORT_SYMBOL_GPL(xfrm4_mode_tunnel_input_register); int xfrm4_mode_tunnel_input_deregister(struct xfrm_tunnel_notifier *handler) { struct xfrm_tunnel_notifier __rcu **pprev; struct xfrm_tunnel_notifier *t; int ret = -ENOENT; mutex_lock(&xfrm4_mode_tunnel_input_mutex); for (pprev = &rcv_notify_handlers; (t = rcu_dereference_protected(*pprev, lockdep_is_held(&xfrm4_mode_tunnel_input_mutex))) != NULL; pprev = &t->next) { if (t == handler) { *pprev = handler->next; ret = 0; break; } } mutex_unlock(&xfrm4_mode_tunnel_input_mutex); synchronize_net(); return ret; } EXPORT_SYMBOL_GPL(xfrm4_mode_tunnel_input_deregister); static inline void ipip_ecn_decapsulate(struct sk_buff *skb) { struct iphdr *inner_iph = ipip_hdr(skb); Loading Loading @@ -127,14 +68,8 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb) return 0; } #define for_each_input_rcu(head, handler) \ for (handler = rcu_dereference(head); \ handler != NULL; \ handler = rcu_dereference(handler->next)) static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) { struct xfrm_tunnel_notifier *handler; int err = -EINVAL; if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPIP) Loading @@ -143,9 +78,6 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) if (!pskb_may_pull(skb, sizeof(struct iphdr))) goto out; for_each_input_rcu(rcv_notify_handlers, handler) handler->handler(skb); err = skb_unclone(skb, GFP_ATOMIC); if (err) goto out; Loading