summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsobomax <sobomax@FreeBSD.org>2002-12-07 14:22:05 +0000
committersobomax <sobomax@FreeBSD.org>2002-12-07 14:22:05 +0000
commit6da27e4c8e8646fdac92c74cab95a0db6816b98c (patch)
tree6dd2021b60097b974c5f902ec8eee2201d2afdc8 /sys
parentfde222f25cb9c2cdf9187934c25fdc3f21417e9a (diff)
downloadFreeBSD-src-6da27e4c8e8646fdac92c74cab95a0db6816b98c.zip
FreeBSD-src-6da27e4c8e8646fdac92c74cab95a0db6816b98c.tar.gz
MFS: recognize gre packets used in the WCCP protocol.
Approved by: re
Diffstat (limited to 'sys')
-rw-r--r--sys/net/if_gre.h7
-rw-r--r--sys/netinet/ip_gre.c3
2 files changed, 9 insertions, 1 deletions
diff --git a/sys/net/if_gre.h b/sys/net/if_gre.h
index a626ee7..8bed6a6 100644
--- a/sys/net/if_gre.h
+++ b/sys/net/if_gre.h
@@ -105,6 +105,13 @@ struct greip {
#define GRE_SS 0x0800 /* Strict Source Route */
/*
+ * CISCO uses special type for GRE tunnel created as part of WCCP
+ * connection, while in fact those packets are just IPv4 encapsulated
+ * into GRE.
+ */
+#define WCCP_PROTOCOL_TYPE 0x883E
+
+/*
* gre_sre defines a Source route Entry. These are needed if packets
* should be routed over more than one tunnel hop by hop
*/
diff --git a/sys/netinet/ip_gre.c b/sys/netinet/ip_gre.c
index d87e887..a986b4a 100644
--- a/sys/netinet/ip_gre.c
+++ b/sys/netinet/ip_gre.c
@@ -179,7 +179,8 @@ gre_input2(struct mbuf *m ,int hlen, u_char proto)
switch (ntohs(gip->gi_ptype)) { /* ethertypes */
case ETHERTYPE_IP: /* shouldn't need a schednetisr(), as */
- ifq = &ipintrq; /* we are in ip_input */
+ case WCCP_PROTOCOL_TYPE: /* we are in ip_input */
+ ifq = &ipintrq;
break;
#ifdef NS
case ETHERTYPE_NS:
OpenPOWER on IntegriCloud