From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MJTlt-0006Tp-Sv for qemu-devel@nongnu.org; Wed, 24 Jun 2009 10:48:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MJTlp-0006On-Lc for qemu-devel@nongnu.org; Wed, 24 Jun 2009 10:48:21 -0400 Received: from [199.232.76.173] (port=53285 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MJTlp-0006ON-0G for qemu-devel@nongnu.org; Wed, 24 Jun 2009 10:48:17 -0400 Received: from lizzard.sbs.de ([194.138.37.39]:18900) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MJTlo-0005KX-EX for qemu-devel@nongnu.org; Wed, 24 Jun 2009 10:48:16 -0400 Message-ID: <4A423CA9.10109@siemens.com> Date: Wed, 24 Jun 2009 16:48:09 +0200 From: Jan Kiszka MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 25/41] slirp: Make IP packet ID consistent References: <20090624124227.29402.750.stgit@mchn012c.ww002.siemens.net> <20090624124230.29402.75964.stgit@mchn012c.ww002.siemens.net> <5b31733c0906240734t3ae09c99u792e074489500f59@mail.gmail.com> In-Reply-To: <5b31733c0906240734t3ae09c99u792e074489500f59@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Filip Navara Cc: Mark McLoughlin , Anthony Liguori , qemu-devel@nongnu.org Filip Navara wrote: > On Wed, Jun 24, 2009 at 2:42 PM, Jan Kiszka wrote: >> Currently, ip_id is always initialized to 0 on slirp startup (despite >> the broken attempt to derive it from the clock). This is good for >> reproducibility. But it is not preserved across save/restore. This patch >> therefore drops the dead initialization code from ip_init and introduces >> ip_id to the persistent slirp state. >> >> Signed-off-by: Jan Kiszka >> --- >> >> slirp/ip_input.c | 1 - >> slirp/slirp.c | 8 +++++++- >> 2 files changed, 7 insertions(+), 2 deletions(-) >> >> diff --git a/slirp/ip_input.c b/slirp/ip_input.c >> index 0356eb5..b07d3d5 100644 >> --- a/slirp/ip_input.c >> +++ b/slirp/ip_input.c >> @@ -59,7 +59,6 @@ void >> ip_init(void) >> { >> ipq.ip_link.next = ipq.ip_link.prev = &ipq.ip_link; >> - ip_id = tt.tv_sec & 0xffff; > > You removed the ip_id initialization and now it's never initialized in > the code. That sounds wrong. Thanks for having a look! All this slirp code is really hairy and no fun to dig through. But now to your remark: That removal is in fact not changing the behavior. ip_id is also initialized to 0 afterwards. To understand this one has to track the messy use of 'tt' across slirp. It is in fact carrying the time at some point (when select_fill is invoked), but not yet on ip_init. I was thinking about fixing the above initialization to actually take the current time and derive ip_id, but then I thought it might be better to keep this for network traffic reproducibility across qemu starts. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux