OSDN Git Service

ipv4: Kill spurious write to iph->daddr in ip_forward_options().
authorDavid S. Miller <davem@davemloft.net>
Fri, 13 May 2011 21:15:50 +0000 (17:15 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 May 2011 21:15:50 +0000 (17:15 -0400)
commit0374d9ceb02eb12fcd65be9dd5df9c911ef93424
tree3731be10072252825feea225a082b2ee4029c293
parent48e20467227fe540e6bbf3d98df98c2c0fca10f3
ipv4: Kill spurious write to iph->daddr in ip_forward_options().

This code block executes when opt->srr_is_hit is set.  It will be
set only by ip_options_rcv_srr().

ip_options_rcv_srr() walks until it hits a matching nexthop in the SRR
option addresses, and when it matches one 1) looks up the route for
that nexthop and 2) on route lookup success it writes that nexthop
value into iph->daddr.

ip_forward_options() runs later, and again walks the SRR option
addresses looking for the option matching the destination of the route
stored in skb_rtable().  This route will be the same exact one looked
up for the nexthop by ip_options_rcv_srr().

Therefore "rt->rt_dst == iph->daddr" must be true.

All it really needs to do is record the route's source address in the
matching SRR option adddress.  It need not write iph->daddr again,
since that has already been done by ip_options_rcv_srr() as detailed
above.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_options.c