lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 09 Nov 2007 16:18:48 +0300 From: Pavel Emelyanov <xemul@...nvz.org> To: David Miller <davem@...emloft.net> CC: Linux Netdev List <netdev@...r.kernel.org>, devel@...nvz.org Subject: [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 <xemul@...nvz.ogr> --- diff --git a/net/ipv4/tunnel4.c b/net/ipv4/tunnel4.c index b662a9e..c85547d 100644 --- a/net/ipv4/tunnel4.c +++ b/net/ipv4/tunnel4.c @@ -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 -- 1.5.3.4 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists