From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53392) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SC2gA-0001qu-Nu for qemu-devel@nongnu.org; Mon, 26 Mar 2012 01:41:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SC2g8-0001WW-Dz for qemu-devel@nongnu.org; Mon, 26 Mar 2012 01:41:18 -0400 Received: from e33.co.us.ibm.com ([32.97.110.151]:35951) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SC2g8-0001W3-7V for qemu-devel@nongnu.org; Mon, 26 Mar 2012 01:41:16 -0400 Received: from /spool/local by e33.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sun, 25 Mar 2012 23:41:14 -0600 Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by d01dlp03.pok.ibm.com (Postfix) with ESMTP id BA7FEC90050 for ; Mon, 26 Mar 2012 01:41:10 -0400 (EDT) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q2Q5fBt1208728 for ; Mon, 26 Mar 2012 01:41:11 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q2Q5fA26002625 for ; Mon, 26 Mar 2012 02:41:10 -0300 From: zwu.kernel@gmail.com Date: Mon, 26 Mar 2012 13:40:20 +0800 Message-Id: <1332740423-8426-9-git-send-email-zwu.kernel@gmail.com> In-Reply-To: <1332740423-8426-1-git-send-email-zwu.kernel@gmail.com> References: <1332740423-8426-1-git-send-email-zwu.kernel@gmail.com> Subject: [Qemu-devel] [RFC 6/9] net: qomify -netdev user List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: zwu.kernel@gmail.com, pbonzini@redhat.com, Zhi Yong Wu , stefanha@linux.vnet.ibm.com From: Zhi Yong Wu Signed-off-by: Zhi Yong Wu --- net/slirp.c | 42 ++++++++++++++++++++++++++++++++++++++---- net/slirp.h | 7 +++---- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/net/slirp.c b/net/slirp.c index d3e56fc..62fea09 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -676,10 +676,7 @@ static int net_init_slirp_configs(const char *name, const char *value, void *opa return 0; } -int net_init_slirp(QemuOpts *opts, - Monitor *mon, - const char *name, - NetClientState *peer) +int net_init_slirp(NETDevice *net_dev) { struct slirp_config_str *config; const char *vhost; @@ -695,6 +692,11 @@ int net_init_slirp(QemuOpts *opts, int restricted = 0; int ret; + QemuOpts *opts = net_dev->opts; + //Monitor *mon = net_dev->mon; + char *name = g_strdup(net_dev->name); + NetClientState *peer = net_dev->peer; + vhost = qemu_opt_get(opts, "host"); vhostname = qemu_opt_get(opts, "hostname"); vdhcp_start = qemu_opt_get(opts, "dhcpstart"); @@ -777,3 +779,35 @@ int net_slirp_parse_legacy(QemuOptsList *opts_list, const char *optarg, int *ret return 1; } +static hostdevProperty net_user_properties[] = { + //DEFINE_HOSTDEV_PROP_INT32("link_down", NetClientState,link_down, 0), + DEFINE_HOSTDEV_PROP_PEER("peer", NetClientState, peer), + DEFINE_HOSTDEV_PROP_STRING("name", NetClientState, name), + //DEFINE_HOSTDEV_PROP_BIT("receive_disabled", NetClientState, receive_disabled, 0, true), + DEFINE_HOSTDEV_PROP_END_OF_LIST(), +}; + +static void net_user_class_init(ObjectClass *klass, void *data) +{ + NETDeviceClass *k = NETDEV_CLASS(klass); + HOSTDeviceClass *dc = HOSTDEV_CLASS(klass); + + k->init = net_init_slirp; + dc->props = net_user_properties; +} + +static TypeInfo net_user_type = { + .name = "user", + .parent = TYPE_NETDEV, + .instance_size = sizeof(NETDevice), + .class_init = net_user_class_init, +}; + +static void net_user_register_types(void) +{ +#ifdef CONFIG_SLIRP + type_register_static(&net_user_type); +#endif +} + +type_init(net_user_register_types) diff --git a/net/slirp.h b/net/slirp.h index e6000af..1364347 100644 --- a/net/slirp.h +++ b/net/slirp.h @@ -27,13 +27,12 @@ #include "qemu-common.h" #include "qdict.h" #include "qemu-option.h" +#include "qemu/hostdev.h" +#include "net.h" #ifdef CONFIG_SLIRP -int net_init_slirp(QemuOpts *opts, - Monitor *mon, - const char *name, - NetClientState *peer); +int net_init_slirp(NETDevice *net_dev); void net_slirp_hostfwd_add(Monitor *mon, const QDict *qdict); void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict); -- 1.7.6