From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33785) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBHvG-0002ac-0x for qemu-devel@nongnu.org; Mon, 28 Nov 2016 04:08:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBHvC-00072K-02 for qemu-devel@nongnu.org; Mon, 28 Nov 2016 04:08:25 -0500 Received: from mx1.redhat.com ([209.132.183.28]:37460) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cBHvB-00071J-O3 for qemu-devel@nongnu.org; Mon, 28 Nov 2016 04:08:21 -0500 Date: Mon, 28 Nov 2016 09:08:16 +0000 From: "Dr. David Alan Gilbert" Message-ID: <20161128090816.GA2148@work-vm> References: <20161123185258.771-1-dgilbert@redhat.com> <20161123185258.771-5-dgilbert@redhat.com> <20161127151346.GP8854@var.home> <20161127152851.GA25452@var.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20161127152851.GA25452@var.home> Subject: Re: [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Samuel Thibault Cc: qemu-devel@nongnu.org, quintela@redhat.com, amit.shah@redhat.com * Samuel Thibault (samuel.thibault@gnu.org) wrote: > Samuel Thibault, on Sun 27 Nov 2016 16:13:46 +0100, wrote: > > Dr. David Alan Gilbert (git), on Wed 23 Nov 2016 18:52:57 +0000, wrote: > > > +static const VMStateDescription vmstate_slirp_socket_addr = { > > > + .name = "slirp-socket-addr", > > > + .version_id = 4, > > > + .fields = (VMStateField[]) { > > > + VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr), > > > + VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr, > > > + slirp_family_inet), > > > + VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr, > > > + slirp_family_inet), > > > + VMSTATE_END_OF_LIST() > > > + } > > > +}; > > > > How will we be able to add the IPv6 case here? > > Reading again your previous post, it seemed it'd be in > slirp_family_inet, but I don't immediately see how. > > Applying your patch for 2.9 would thus make porting the code to IPv6 > more difficult than how it is now, so I'm quite reluctant :) > > Could you perhaps simply add the IPv6 case in your patch series already? > It shouldn't be much work for you who actually know how the VMSTATE > machinery is supposed to work (I guess the amount of people who care > about slirp *and* know about VMSTATE is extremely small), and a proof of > concept for the portability to non-ipv4 addresse spaces. The number of people who care about slirp, IPv6, VMState is even smaller :-) Hmm, I don't really know IPv6 but I'm thinking this code will become something like the following (says he not knowing whether a scope-id or a flowinfo is something that needs migrating) (untested): static const VMStateDescription vmstate_slirp_socket_addr = { .name = "slirp-socket-addr", .version_id = 4, .fields = (VMStateField[]) { VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr), VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr, slirp_family_inet), VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr, slirp_family_inet), VMSTATE_BUFFER_TEST(sin6.sin6_addr, union slirp_sockaddr, slirp_family_inet6), VMSTATE_UINT16_TEST(sin6.sin6_port, union slirp_sockaddr, slirp_family_inet6), VMSTATE_UINT32_TEST(sin6.sin6_flowinfo, union slirp_sockaddr, slirp_family_inet6), VMSTATE_UINT32_TEST(sin6.sin6_scope_id, union slirp_sockaddr, slirp_family_inet6), VMSTATE_END_OF_LIST() } }; So to me that looks pretty clean, we need to add another slirp_family_inet6 test function, but then we just add the extra fields for the IPv6 stuff. Can you suggest an IPv6 command line for testing that ? Dave -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK