From 41e6b329836326193e084ae79eab50e105fc284d Mon Sep 17 00:00:00 2001 From: Jorge Boncompte Date: Thu, 3 May 2007 03:34:42 -0700 Subject: [PATCH] --- yaml --- r: 53471 b: refs/heads/master c: c2a1910b06fed96db77bb358c18c52a1fcf2b7fe h: refs/heads/master i: 53469: 0799cd2fb37289755e1f30035f0ef40e46c96f8c 53467: 2e5d37bc0a9de93b29df608ca93590af5ad3e67d 53463: 4fef0bc86b1ea977b237bc98dc25f3cc3f6c0e15 53455: 1abd1da8701d7c2e9157f459a0786e745c02e119 53439: e74f914062924509aebde7cc4c01806e73f2ab55 v: v3 --- [refs] | 2 +- .../linux/netfilter/nf_conntrack_proto_gre.h | 18 ----------------- trunk/net/ipv4/netfilter/nf_nat_proto_gre.c | 20 ++++++++----------- 3 files changed, 9 insertions(+), 31 deletions(-) diff --git a/[refs] b/[refs] index a2f69e341a00..ac9b02fce653 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 327850070b019a96853c533c152688546201c286 +refs/heads/master: c2a1910b06fed96db77bb358c18c52a1fcf2b7fe diff --git a/trunk/include/linux/netfilter/nf_conntrack_proto_gre.h b/trunk/include/linux/netfilter/nf_conntrack_proto_gre.h index 4e6bbce04ff8..535e4219d2bb 100644 --- a/trunk/include/linux/netfilter/nf_conntrack_proto_gre.h +++ b/trunk/include/linux/netfilter/nf_conntrack_proto_gre.h @@ -87,24 +87,6 @@ int nf_ct_gre_keymap_add(struct nf_conn *ct, enum ip_conntrack_dir dir, /* delete keymap entries */ void nf_ct_gre_keymap_destroy(struct nf_conn *ct); -/* get pointer to gre key, if present */ -static inline __be32 *gre_key(struct gre_hdr *greh) -{ - if (!greh->key) - return NULL; - if (greh->csum || greh->routing) - return (__be32 *)(greh+sizeof(*greh)+4); - return (__be32 *)(greh+sizeof(*greh)); -} - -/* get pointer ot gre csum, if present */ -static inline __sum16 *gre_csum(struct gre_hdr *greh) -{ - if (!greh->csum) - return NULL; - return (__sum16 *)(greh+sizeof(*greh)); -} - extern void nf_ct_gre_keymap_flush(void); extern void nf_nat_need_gre(void); diff --git a/trunk/net/ipv4/netfilter/nf_nat_proto_gre.c b/trunk/net/ipv4/netfilter/nf_nat_proto_gre.c index e5a34c17d927..c3908bc5a709 100644 --- a/trunk/net/ipv4/netfilter/nf_nat_proto_gre.c +++ b/trunk/net/ipv4/netfilter/nf_nat_proto_gre.c @@ -72,6 +72,11 @@ gre_unique_tuple(struct nf_conntrack_tuple *tuple, __be16 *keyptr; unsigned int min, i, range_size; + /* If there is no master conntrack we are not PPTP, + do not change tuples */ + if (!conntrack->master) + return 0; + if (maniptype == IP_NAT_MANIP_SRC) keyptr = &tuple->src.u.gre.key; else @@ -122,18 +127,9 @@ gre_manip_pkt(struct sk_buff **pskb, unsigned int iphdroff, if (maniptype != IP_NAT_MANIP_DST) return 1; switch (greh->version) { - case 0: - if (!greh->key) { - DEBUGP("can't nat GRE w/o key\n"); - break; - } - if (greh->csum) { - /* FIXME: Never tested this code... */ - nf_proto_csum_replace4(gre_csum(greh), *pskb, - *(gre_key(greh)), - tuple->dst.u.gre.key, 0); - } - *(gre_key(greh)) = tuple->dst.u.gre.key; + case GRE_VERSION_1701: + /* We do not currently NAT any GREv0 packets. + * Try to behave like "nf_nat_proto_unknown" */ break; case GRE_VERSION_PPTP: DEBUGP("call_id -> 0x%04x\n", ntohs(tuple->dst.u.gre.key));