Date: Fri, 20 May 2016 14:23:42 +0530 From: "Kristof Provost" <kp@FreeBSD.org> To: Max <maximos@als.nnov.ru> Cc: freebsd-pf@FreeBSD.org Subject: Re: fragments processing Message-ID: <0ED6BC86-1DDF-4C80-9C05-6ED19049AB92@FreeBSD.org> In-Reply-To: <93ccf602-31d6-fe36-4ccc-96ab1a1e2cc1@als.nnov.ru> References: <93ccf602-31d6-fe36-4ccc-96ab1a1e2cc1@als.nnov.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Max, On 19 May 2016, at 19:49, Max wrote: > The number of used frags (almost) never decreases. I don't have enough > experience in programming. But I guess that the problem may be in > "frag->fr_timeout = time_second;" in pf_fillup_fragment() (pf_norm.c). > It should be "frag->fr_timeout = time_uptime;". Actually, I don't now > the difference between those variables. So, correct me if I'm wrong. > I think you’re right. If I’m reading the code right time_second is unix time, but time_uptime is the number of seconds the system has been up. Either one should work, but we have to be consistent. The rest of the code seems to use time_uptime, so this untested patch should fix your problem. diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c index a2841a2..dbc8818 100644 --- a/sys/netpfil/pf/pf_norm.c +++ b/sys/netpfil/pf/pf_norm.c @@ -374,7 +374,7 @@ pf_fillup_fragment(struct pf_fragment_cmp *key, struct pf_frent *frent, } *(struct pf_fragment_cmp *)frag = *key; - frag->fr_timeout = time_second; + frag->fr_timeout = time_uptime; frag->fr_maxlen = frent->fe_len; TAILQ_INIT(&frag->fr_queue); > P.P.S. I confirm the bug > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=201519. It’s on my list, but unfortunately it’s a very long list. Regards, Kristof
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0ED6BC86-1DDF-4C80-9C05-6ED19049AB92>