diff options
author | Li Wei <lw@cn.fujitsu.com> | 2011-11-22 23:33:10 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-02-29 16:34:02 -0800 |
commit | 5805d4729059f578c8283ccc44021342fbe8c93d (patch) | |
tree | d962beed4be7d5689185cc2d465a7906dd82176e /net/ipv4/ip_forward.c | |
parent | c4f2403478002bdb0a46a62f87909aeda8058d8b (diff) | |
download | kernel_samsung_smdk4412-5805d4729059f578c8283ccc44021342fbe8c93d.tar.gz kernel_samsung_smdk4412-5805d4729059f578c8283ccc44021342fbe8c93d.tar.bz2 kernel_samsung_smdk4412-5805d4729059f578c8283ccc44021342fbe8c93d.zip |
ipv4: Save nexthop address of LSRR/SSRR option to IPCB.
[ Upstream commit ac8a48106be49c422575ddc7531b776f8eb49610 ]
We can not update iph->daddr in ip_options_rcv_srr(), It is too early.
When some exception ocurred later (eg. in ip_forward() when goto
sr_failed) we need the ip header be identical to the original one as
ICMP need it.
Add a field 'nexthop' in struct ip_options to save nexthop of LSRR
or SSRR option.
Signed-off-by: Li Wei <lw@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/ipv4/ip_forward.c')
-rw-r--r-- | net/ipv4/ip_forward.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/ip_forward.c b/net/ipv4/ip_forward.c index 3b34d1c8627..29a07b6c716 100644 --- a/net/ipv4/ip_forward.c +++ b/net/ipv4/ip_forward.c @@ -84,7 +84,7 @@ int ip_forward(struct sk_buff *skb) rt = skb_rtable(skb); - if (opt->is_strictroute && ip_hdr(skb)->daddr != rt->rt_gateway) + if (opt->is_strictroute && opt->nexthop != rt->rt_gateway) goto sr_failed; if (unlikely(skb->len > dst_mtu(&rt->dst) && !skb_is_gso(skb) && |