summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2007-03-13 00:09:36 +0100
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-26 07:25:08 +0200
commite023dd643798c4f06c16466af90b4d250e4b8bd7 (patch)
tree41b784e3e861afcab62a0375bba2a5d59f7a5470
parent[IP]: Introduce ip_hdrlen() (diff)
downloadlinux-e023dd643798c4f06c16466af90b4d250e4b8bd7.tar.xz
linux-e023dd643798c4f06c16466af90b4d250e4b8bd7.zip
[IPMR]: Fix bug introduced when converting to skb_network_reset_header
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv4/ipmr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 54b7543190f1..b24dffe3bd46 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -1096,6 +1096,7 @@ static struct notifier_block ip_mr_notifier={
static void ip_encap(struct sk_buff *skb, __be32 saddr, __be32 daddr)
{
struct iphdr *iph;
+ struct iphdr *old_iph = skb->nh.iph;
skb_push(skb, sizeof(struct iphdr));
skb->h.ipiph = skb->nh.iph;
@@ -1103,8 +1104,8 @@ static void ip_encap(struct sk_buff *skb, __be32 saddr, __be32 daddr)
iph = skb->nh.iph;
iph->version = 4;
- iph->tos = skb->nh.iph->tos;
- iph->ttl = skb->nh.iph->ttl;
+ iph->tos = old_iph->tos;
+ iph->ttl = old_iph->ttl;
iph->frag_off = 0;
iph->daddr = daddr;
iph->saddr = saddr;