From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul P Komkoff Jr Subject: [PATCH] [RFC] Support for wccp version 1 and 2 in ip_gre.c Date: Sat, 11 Sep 2004 23:41:08 +0400 Sender: linux-kernel-owner@vger.kernel.org Message-ID: <20040911194108.GS28258@stingr.sgu.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Return-path: To: netdev@oss.sgi.com, Linux Kernel Mailing List Content-Disposition: inline List-Id: netdev.vger.kernel.org Hello! Some time ago I posted the following patch. It indeed adds support for wccp version 1 and 2 decapsulation in ip_gre.c. But there is an open question. I surrounded all decapsulation stuff in if (1). Which knob I should use instead of that 1 to make this change acceptable into mainline kernel? Thanks in advance. diff -urN linux-2.6.6-1.435/net/ipv4/ip_gre.c linux-2.6.6-1.435a/net/ipv4/ip_gre.c --- linux-2.6.6-1.435/net/ipv4/ip_gre.c 2004-05-10 06:32:54.000000000 +0400 +++ linux-2.6.6-1.435a/net/ipv4/ip_gre.c 2004-06-30 16:38:43.781838344 +0400 @@ -553,6 +553,8 @@ return INET_ECN_encapsulate(tos, inner); } +#define ETH_P_WCCP 0x883E + int ipgre_rcv(struct sk_buff *skb) { struct iphdr *iph; @@ -605,13 +607,21 @@ if ((tunnel = ipgre_tunnel_lookup(iph->saddr, iph->daddr, key)) != NULL) { secpath_reset(skb); + skb->protocol = *(u16*)(h + 2); + if (1) { + if ((flags == 0) && (skb->protocol == __constant_htons(ETH_P_WCCP))) { + skb->protocol = __constant_htons(ETH_P_IP); + if ((*(h + offset) & 0xF0) != 0x40) + offset += 4; + } + } + skb->mac.raw = skb->nh.raw; skb->nh.raw = __pskb_pull(skb, offset); memset(&(IPCB(skb)->opt), 0, sizeof(struct ip_options)); if (skb->ip_summed == CHECKSUM_HW) skb->csum = csum_sub(skb->csum, csum_partial(skb->mac.raw, skb->nh.raw-skb->mac.raw, 0)); - skb->protocol = *(u16*)(h + 2); skb->pkt_type = PACKET_HOST; #ifdef CONFIG_NET_IPGRE_BROADCAST if (MULTICAST(iph->daddr)) { -- Paul P 'Stingray' Komkoff Jr // http://stingr.net/key <- my pgp key This message represents the official view of the voices in my head