From: Thomas Huth <thuth@redhat.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, qemu-devel@nongnu.org
Cc: zhanghailiang <zhang.zhanghailiang@huawei.com>,
Li Zhijian <lizhijian@cn.fujitsu.com>,
Stefan Hajnoczi <stefanha@gmail.com>,
Jason Wang <jasowang@redhat.com>,
Dave Gilbert <dgilbert@redhat.com>,
Vasiliy Tolstov <v.tolstov@selfip.ru>,
Huangpeng <peter.huangpeng@huawei.com>,
Gonglei <arei.gonglei@huawei.com>,
Jan Kiszka <jan.kiszka@siemens.com>,
Yang Hongyang <yanghy@cn.fujitsu.com>,
Guillaume Subiron <maethor@subiron.org>
Subject: Re: [Qemu-devel] [PATCH 04/18] slirp: Make Socket structure IPv6 compatible
Date: Fri, 11 Dec 2015 15:47:52 +0100 [thread overview]
Message-ID: <566AE218.50008@redhat.com> (raw)
In-Reply-To: <1449792930-27293-4-git-send-email-samuel.thibault@ens-lyon.org>
On 11/12/15 01:15, Samuel Thibault wrote:
> From: Guillaume Subiron <maethor@subiron.org>
>
> This patch replaces foreign and local address/port couples in Socket
> structure by 2 sockaddr_storage which can be casted in sockaddr_in.
> Direct access to address and port is still possible thanks to some
> \#define, so retrocompatibility of the existing code is assured.
>
> The ss_family field of sockaddr_storage is declared after each socket
> creation.
>
> The whole structure is also saved/restored when a Qemu session is
> saved/restored.
>
> Signed-off-by: Guillaume Subiron <maethor@subiron.org>
> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> ---
[...]
> diff --git a/slirp/slirp.c b/slirp/slirp.c
> index 66c4196..0937ee0 100644
> --- a/slirp/slirp.c
> +++ b/slirp/slirp.c
> @@ -1028,10 +1028,26 @@ static void slirp_sbuf_save(QEMUFile *f, struct sbuf *sbuf)
> static void slirp_socket_save(QEMUFile *f, struct socket *so)
> {
> qemu_put_be32(f, so->so_urgc);
> - qemu_put_be32(f, so->so_faddr.s_addr);
> - qemu_put_be32(f, so->so_laddr.s_addr);
> - qemu_put_be16(f, so->so_fport);
> - qemu_put_be16(f, so->so_lport);
> + qemu_put_be16(f, so->so_ffamily);
> + switch (so->so_ffamily) {
> + case AF_INET:
> + qemu_put_be32(f, so->so_faddr.s_addr);
> + qemu_put_be16(f, so->so_fport);
> + break;
> + default:
> + fprintf(stderr,
> + "so_ffamily unknown, unable to save so_faddr and so_fport\n");
> + }
> + qemu_put_be16(f, so->so_lfamily);
> + switch (so->so_lfamily) {
> + case AF_INET:
> + qemu_put_be32(f, so->so_laddr.s_addr);
> + qemu_put_be16(f, so->so_lport);
> + break;
> + default:
> + fprintf(stderr,
> + "so_ffamily unknown, unable to save so_laddr and so_lport\n");
> + }
> qemu_put_byte(f, so->so_iptos);
> qemu_put_byte(f, so->so_emu);
> qemu_put_byte(f, so->so_type);
> @@ -1151,10 +1167,26 @@ static int slirp_socket_load(QEMUFile *f, struct socket *so)
> return -ENOMEM;
>
> so->so_urgc = qemu_get_be32(f);
> - so->so_faddr.s_addr = qemu_get_be32(f);
> - so->so_laddr.s_addr = qemu_get_be32(f);
> - so->so_fport = qemu_get_be16(f);
> - so->so_lport = qemu_get_be16(f);
> + so->so_ffamily = qemu_get_be16(f);
> + switch (so->so_ffamily) {
> + case AF_INET:
> + so->so_faddr.s_addr = qemu_get_be32(f);
> + so->so_fport = qemu_get_be16(f);
> + break;
> + default:
> + fprintf(stderr,
> + "so_ffamily unknown, unable to restore so_faddr and so_lport\n");
> + }
> + so->so_lfamily = qemu_get_be16(f);
> + switch (so->so_lfamily) {
> + case AF_INET:
> + so->so_laddr.s_addr = qemu_get_be32(f);
> + so->so_lport = qemu_get_be16(f);
> + break;
> + default:
> + fprintf(stderr,
> + "so_ffamily unknown, unable to restore so_laddr and so_lport\n");
> + }
Since you're changing the layout of the save data here, I think you have
to bump the version_id number in the register_savevm() call in
slirp_init() to make it clear that the new layout is incompatible.
> so->so_iptos = qemu_get_byte(f);
> so->so_emu = qemu_get_byte(f);
> so->so_type = qemu_get_byte(f);
> diff --git a/slirp/socket.c b/slirp/socket.c
> index 1673e3a..bf603c9 100644
> --- a/slirp/socket.c
> +++ b/slirp/socket.c
[...]
Remaining parts of the patch look fine to me.
Thomas
next prev parent reply other threads:[~2015-12-11 14:48 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-11 0:15 [Qemu-devel] [PATCHv5 00/18] slirp: Adding IPv6 support to Qemu -net user mode Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 01/18] slirp: goto bad in udp_input if sosendto fails Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 02/18] slirp: Generalizing and neutralizing code before adding IPv6 stuff Samuel Thibault
2015-12-11 13:38 ` Thomas Huth
2015-12-11 13:43 ` Thomas Huth
2015-12-11 13:47 ` Samuel Thibault
2015-12-11 13:52 ` Thomas Huth
2015-12-11 13:49 ` Thomas Huth
2015-12-11 14:01 ` Samuel Thibault
2015-12-11 14:32 ` Thomas Huth
2015-12-11 14:55 ` Samuel Thibault
2015-12-11 15:09 ` Thomas Huth
2015-12-11 15:40 ` Laszlo Ersek
2015-12-11 15:41 ` Samuel Thibault
2015-12-11 16:17 ` Eric Blake
2015-12-11 18:01 ` Laszlo Ersek
2015-12-11 13:45 ` Samuel Thibault
2015-12-11 20:10 ` Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 03/18] slirp: Reindent after refactoring Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 04/18] slirp: Make Socket structure IPv6 compatible Samuel Thibault
2015-12-11 14:47 ` Thomas Huth [this message]
2015-12-11 0:15 ` [Qemu-devel] [PATCH 05/18] slirp: Factorizing address translation Samuel Thibault
2015-12-11 23:14 ` Samuel Thibault
2015-12-14 11:41 ` Thomas Huth
2015-12-11 0:15 ` [Qemu-devel] [PATCH 06/18] slirp: Factorizing and cleaning solookup() Samuel Thibault
2015-12-11 15:06 ` Thomas Huth
2015-12-11 19:29 ` Samuel Thibault
2015-12-11 19:38 ` Samuel Thibault
2015-12-11 19:51 ` Samuel Thibault
2015-12-11 20:02 ` Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 07/18] slirp: Make udp_attach IPv6 compatible Samuel Thibault
2015-12-11 15:12 ` Thomas Huth
2015-12-11 0:15 ` [Qemu-devel] [PATCH 08/18] slirp: Adding family argument to tcp_fconnect() Samuel Thibault
2015-12-11 15:26 ` Thomas Huth
2015-12-11 0:15 ` [Qemu-devel] [PATCH 09/18] qemu/timer.h : Adding function to second scale Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 10/18] slirp: Adding IPv6, ICMPv6 Echo and NDP autoconfiguration Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 11/18] slirp: Adding ICMPv6 error sending Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 12/18] slirp: Adding IPv6 UDP support Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 13/18] slirp: Factorizing tcpiphdr structure with an union Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 14/18] slirp: Generalizing and neutralizing various TCP functions before adding IPv6 stuff Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 15/18] slirp: Reindent after refactoring Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 16/18] slirp: Handle IPv6 in TCP functions Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 17/18] slirp: Adding IPv6 address for DNS relay Samuel Thibault
2015-12-11 0:15 ` [Qemu-devel] [PATCH 18/18] qapi-schema, qemu-options & slirp: Adding Qemu options for IPv6 addresses Samuel Thibault
2015-12-11 11:54 ` [Qemu-devel] [PATCH 01/18] slirp: goto bad in udp_input if sosendto fails Thomas Huth
2015-12-11 12:05 ` Samuel Thibault
-- strict thread matches above, loose matches on Subject: below --
2015-07-28 22:57 [Qemu-devel] [PATCHv4 00/18] slirp: Adding IPv6 support to Qemu -net user mode Samuel Thibault
2015-07-28 22:57 ` [Qemu-devel] [PATCH 01/18] slirp: goto bad in udp_input if sosendto fails Samuel Thibault
2015-07-28 22:57 ` [Qemu-devel] [PATCH 04/18] slirp: Make Socket structure IPv6 compatible Samuel Thibault
2014-03-30 22:22 [Qemu-devel] [PATCHv4 00/18] slirp: Adding IPv6 support to Qemu -net user mode Samuel Thibault
2014-03-30 22:22 ` [Qemu-devel] [PATCH 04/18] slirp: Make Socket structure IPv6 compatible Samuel Thibault
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=566AE218.50008@redhat.com \
--to=thuth@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=dgilbert@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=jasowang@redhat.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=maethor@subiron.org \
--cc=peter.huangpeng@huawei.com \
--cc=qemu-devel@nongnu.org \
--cc=samuel.thibault@ens-lyon.org \
--cc=stefanha@gmail.com \
--cc=v.tolstov@selfip.ru \
--cc=yanghy@cn.fujitsu.com \
--cc=zhang.zhanghailiang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.