From: Gao feng <gaofeng@cn•fujitsu.com>
To: Steffen Klassert <steffen.klassert@secunet•com>
Cc: David Miller <davem@davemloft•net>, netdev@vger•kernel.org
Subject: Re: [PATCH 3/4] ipv4: Fix inetpeer expiration handling
Date: Thu, 20 Oct 2011 14:24:33 +0800 [thread overview]
Message-ID: <4E9FBEA1.2050407@cn.fujitsu.com> (raw)
In-Reply-To: <20111011111122.GF1830@secunet.com>
2011.10.11 19:11, Steffen Klassert wrote:
> We leak a trigger to check if the learned pmtu information has
> expired, so the learned pmtu informations never expire. This patch
> add such a trigger to ipv4_dst_check().
>
> Signed-off-by: Steffen Klassert <steffen.klassert@secunet•com>
> ---
> net/ipv4/route.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/net/ipv4/route.c b/net/ipv4/route.c
> index 9a6623e..cda370c 100644
> --- a/net/ipv4/route.c
> +++ b/net/ipv4/route.c
> @@ -1660,6 +1660,10 @@ static struct dst_entry *ipv4_dst_check(struct dst_entry *dst, u32 cookie)
>
> if (rt_is_expired(rt))
> return NULL;
> +
> + if (rt->peer && peer_pmtu_expired(rt->peer))
> + dst_metric_set(dst, RTAX_MTU, rt->peer->pmtu_orig);
> +
> if (rt->rt_peer_genid != rt_peer_genid()) {
> struct inet_peer *peer;
>
there are serval problem.
1:rt->peer maybe null,we should call rt_bind_peer just like the code below.
2:rt->peer_pmtu_orig is null. if we hasn't send packet before,the func check_peer_pmtu hasn't be called.
so the peer->pmtu_orig is null.
3:when rt->rt_peer_genid != rt_peer_genid(), we has no need to do dst_metric_set(dst, RTAX_MTU, rt->peer->pmtu_orig),
because check_peer_pmtu will do this.
what about this patch?
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 04a14db..45782d2 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1655,17 +1655,17 @@ static int check_peer_redir(struct dst_entry *dst, struct inet_peer *peer)
static struct dst_entry *ipv4_dst_check(struct dst_entry *dst, u32 cookie)
{
struct rtable *rt = (struct rtable *) dst;
+ struct inet_peer *peer;
if (rt_is_expired(rt))
return NULL;
- if (rt->rt_peer_genid != rt_peer_genid()) {
- struct inet_peer *peer;
- if (!rt->peer)
- rt_bind_peer(rt, rt->rt_dst, 0);
+ if (!rt->peer)
+ rt_bind_peer(rt, rt->rt_dst, 0);
- peer = rt->peer;
- if (peer) {
+ peer = rt->peer;
+ if (peer) {
+ if (rt->rt_peer_genid != rt_peer_genid()) {
check_peer_pmtu(dst, peer);
if (peer->redirect_learned.a4 &&
@@ -1673,9 +1673,12 @@ static struct dst_entry *ipv4_dst_check(struct dst_entry *dst, u32 cookie)
if (check_peer_redir(dst, peer))
return NULL;
}
- }
- rt->rt_peer_genid = rt_peer_genid();
+ rt->rt_peer_genid = rt_peer_genid();
+
+ }else if(peer_pmtu_expired(peer))
+ dst_metric_set(dst,RTAX_MTU,peer->pmtu_orig);
+
}
return dst;
}
next prev parent reply other threads:[~2011-10-20 6:24 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-11 11:08 [PATCH net 0/4] ipv4: various pmtu discovery fixes Steffen Klassert
2011-10-11 11:09 ` [PATCH 1/4] ipv4: Fix pmtu propagating Steffen Klassert
2011-10-12 21:02 ` David Miller
2011-10-13 10:09 ` Steffen Klassert
2011-10-13 17:58 ` David Miller
2011-10-14 5:54 ` Steffen Klassert
2011-10-17 12:18 ` Steffen Klassert
2011-10-19 9:07 ` Gao feng
2011-10-19 19:32 ` David Miller
2011-11-08 19:19 ` David Miller
2011-11-08 19:33 ` David Miller
2011-11-09 12:08 ` Steffen Klassert
2011-11-21 7:56 ` Steffen Klassert
2011-12-01 18:40 ` David Miller
2011-10-11 11:10 ` [PATCH 2/4] ipv4: Update pmtu informations on inetpeer only for output routes Steffen Klassert
2011-10-12 21:08 ` David Miller
2011-10-14 6:34 ` Steffen Klassert
2011-11-08 19:36 ` David Miller
2011-11-09 12:11 ` Steffen Klassert
2011-11-14 10:12 ` Steffen Klassert
2011-11-14 19:33 ` David Miller
2011-11-15 10:00 ` Steffen Klassert
2011-11-22 13:20 ` Steffen Klassert
2011-10-11 11:11 ` [PATCH 3/4] ipv4: Fix inetpeer expiration handling Steffen Klassert
2011-10-20 6:24 ` Gao feng [this message]
2011-11-08 19:38 ` David Miller
2011-11-09 12:47 ` Steffen Klassert
2011-10-11 11:12 ` [PATCH 4/4] ipv4: Fix inetpeer expire time information Steffen Klassert
2011-10-11 19:54 ` [PATCH net 0/4] ipv4: various pmtu discovery fixes David Miller
2011-11-08 19:41 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E9FBEA1.2050407@cn.fujitsu.com \
--to=gaofeng@cn$(echo .)fujitsu.com \
--cc=davem@davemloft$(echo .)net \
--cc=netdev@vger$(echo .)kernel.org \
--cc=steffen.klassert@secunet$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox