On Wed, 2012-07-18 at 11:23 -0700, David Miller wrote:
Mark them obsolete so there will be a re-lookup to fetch the
FIB nexthop exception info.
[]
quoted hunk ↗ jump to hunk
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
[]
quoted hunk ↗ jump to hunk
@@ -716,8 +717,8 @@ static void __ip_do_redirect(struct rtable *rt, struct sk_buff *skb, struct flow
fnhe->fnhe_gw = new_gw;
spin_unlock_bh(&fnhe_lock);
}
- rt->rt_gateway = new_gw;
- rt->rt_flags |= RTCF_REDIRECTED;
+ if (kill_route)
+ rt->dst.obsolete = -2;
Perhaps -2 should be a #define?
Perhaps struct dst_entry.obsolete could be a char instead of
a short and a pad byte could added for some future use.
Maybe:
include/net/dst.h | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/include/net/dst.h b/include/net/dst.h
index 5161046..6c40490 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -65,7 +65,8 @@ struct dst_entry {
unsigned short pending_confirm;
short error;
- short obsolete;
+ char obsolete;
+ char __pad3;
unsigned short header_len; /* more space at head required */
unsigned short trailer_len; /* space to reserve at tail */
#ifdef CONFIG_IP_ROUTE_CLASSID