Consolidate equal handlers in tunnel4.c
Subsystems (2)
PATCH 4/4 Consolidate equal handlers in tunnel4.c
Two sets - tunnel[6]4_rcv() and tunnel[6]4_err - do the same thing, but scan for different lists of tunnels, so this code is easily consolidated.
Signed-off-by Pavel Emelyanov <[email protected]>
---
net/ipv4/tunnel4.c +17 -24
@@ -101,14 +101,14 @@ void iptunnel_xmit(struct sk_buff *skb, struct rtable *rt,EXPORT_SYMBOL (iptunnel_xmit); -static int tunnel4_rcv (struct sk_buff *skb) +static int tunnel_rcv (struct xfrm_tunnel *handlers,struct sk_buff *skb) {struct xfrm_tunnel *handler;if (!pskb_may_pull (skb,sizeof (struct iphdr ))) goto drop; -for (handler = tunnel4_handlers; handler; handler = handler->next) +for (handler = handlers; handler; handler = handler->next)if (!handler->handler (skb))return 0 ;
@@ -119,43 +119,36 @@ drop:return 0 ; } +static int tunnel4_rcv (struct sk_buff *skb) +{ +return tunnel_rcv (tunnel4_handlers, skb); +} +#if defined(CONFIG_IPV6 ) || defined(CONFIG_IPV6_MODULE )static int tunnel64_rcv (struct sk_buff *skb) { -struct xfrm_tunnel *handler; - -if (!pskb_may_pull (skb,sizeof (struct iphdr ))) - goto drop; - -for (handler = tunnel64_handlers; handler; handler = handler->next) -if (!handler->handler (skb)) -return 0 ; - -icmp_send (skb,ICMP_DEST_UNREACH ,ICMP_PORT_UNREACH ,0 ); - -drop: -kfree_skb (skb); -return 0 ; +return tunnel_rcv (tunnel64_handlers, skb); }#endif -static void tunnel4_err (struct sk_buff *skb,u32 info) +static void tunnel_err (struct xfrm_tunnel *handlers,struct sk_buff *skb,u32 i) {struct xfrm_tunnel *handler; -for (handler = tunnel4_handlers; handler; handler = handler->next) -if (!handler->err_handler (skb, info)) +for (handler = handlers; handler; handler = handler->next) +if (!handler->err_handler (skb, i))break ; } +static void tunnel4_err (struct sk_buff *skb,u32 info) +{ +tunnel_err (tunnel4_handlers, skb, info); +} +#if defined(CONFIG_IPV6 ) || defined(CONFIG_IPV6_MODULE )static void tunnel64_err (struct sk_buff *skb,u32 info) { -struct xfrm_tunnel *handler; - -for (handler = tunnel64_handlers; handler; handler = handler->next) -if (!handler->err_handler (skb, info)) -break ; +tunnel_err (tunnel64_handlers, skb, info); }#endif
Signature · 1 line
1.5.3.4
David Miller
maintainerFrom: Pavel Emelyanov <[email protected]>
Date: Fri, 09 Nov 2007 16:18:48 +0300
Quoted 5 lines
Two sets - tunnel[6]4_rcv() and tunnel[6]4_err - do the same thing, but scan for different lists of tunnels, so this code is easily consolidated.
Signed-off-by Pavel Emelyanov <[email protected]>
This doesn't apply because I did not apply yourIPTUNNEL_RCV() change.