From nobody Thu Dec 18 13:23:39 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1592487677; cv=none; d=zohomail.com; s=zohoarc; b=C2faOzlr2bmmVOlQdkPoVDurNZYznxjDwxdLfv31zICllMBx/4F5isMzzD2WVkStSn8lqQpiPx3Pyw/4GXsnSX5i8jQZBpOlFAjpjKLcGEnD9b/AOS66oKuPp0exk/hglqWkhdz+2e38ca5Gr22aTCDvLpPGshvlILl115yGKSI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1592487677; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=IDvJc4lUGQTwqv7uiU+Gab1nKluMeqbegsioSAJZHC0=; b=EdSs6o7BRcaUODqR59Md3Ox6ZM5S69NjWcke2qCmlyqhvIYajqouW0biJzt644HUxvkrK5KxDm5j3R6sfSBdajT79/pPzOIZX8eKFXSu9uH+6PD8QGLcjlHPvdCB6WMM5Wrh5omiMpT7OhT7dH2YnVuc/i96gieMdl1+b9cBW2c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1592487677264802.3157805223611; Thu, 18 Jun 2020 06:41:17 -0700 (PDT) Received: from localhost ([::1]:48366 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jlun6-0006UG-FP for importer@patchew.org; Thu, 18 Jun 2020 09:41:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41028) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jluW7-0000II-6z for qemu-devel@nongnu.org; Thu, 18 Jun 2020 09:23:43 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:55252 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jluW3-0005uw-QT for qemu-devel@nongnu.org; Thu, 18 Jun 2020 09:23:42 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-317-FLvyrPm0NdaFLScGP-TJvA-1; Thu, 18 Jun 2020 09:23:37 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F33451005512; Thu, 18 Jun 2020 13:23:35 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-109.pek2.redhat.com [10.72.12.109]) by smtp.corp.redhat.com (Postfix) with ESMTP id A9CF45BAC2; Thu, 18 Jun 2020 13:23:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1592486619; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=IDvJc4lUGQTwqv7uiU+Gab1nKluMeqbegsioSAJZHC0=; b=A4ZG+iaYT5k/V7RqTBeb5w/vVvNTZ1rJzTaYy66JvSjiwBr7WXTWZyoKJR+yWXHyFWuaFi UnKJbw4P5cJqWkxR1y6UiNYz979wl28li2INA6R4cHvhNJVrbO3Cyd5zgk2LcPBvQCcr2C L8eZTa0LXRD7JfQsVzVcO8hkWKpmIME= X-MC-Unique: FLvyrPm0NdaFLScGP-TJvA-1 From: Jason Wang To: peter.maydell@linaro.org, qemu-devel@nongnu.org Subject: [PULL V2 33/33] net: Drop the NetLegacy structure, always use Netdev instead Date: Thu, 18 Jun 2020 21:21:48 +0800 Message-Id: <1592486508-6135-34-git-send-email-jasowang@redhat.com> In-Reply-To: <1592486508-6135-1-git-send-email-jasowang@redhat.com> References: <1592486508-6135-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=207.211.31.81; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/18 00:57:40 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , Jason Wang Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Thomas Huth Now that the "name" parameter is gone, there is hardly any difference between NetLegacy and Netdev anymore, so we can drop NetLegacy and always use Netdev to simplify the code quite a bit. The only two differences that were really left between Netdev and NetLegacy: 1) NetLegacy does not allow a "hubport" type. We can continue to block this with a simple check in net_client_init1() for this type. 2) The "id" parameter was optional in NetLegacy (and an internal id was chosen via assign_name() during initialization), but it is mandatory for Netdev. To avoid that the visitor code bails out here, we have to add an internal id to the QemuOpts already earlier now. Signed-off-by: Thomas Huth Reviewed-by: Eric Blake Signed-off-by: Jason Wang --- net/net.c | 77 ++++++++++---------------------------------------------= ---- qapi/net.json | 46 ----------------------------------- 2 files changed, 13 insertions(+), 110 deletions(-) diff --git a/net/net.c b/net/net.c index e55d357..d113029 100644 --- a/net/net.c +++ b/net/net.c @@ -965,15 +965,11 @@ static int (* const net_client_init_fun[NET_CLIENT_DR= IVER__MAX])( }; =20 =20 -static int net_client_init1(const void *object, bool is_netdev, Error **er= rp) +static int net_client_init1(const Netdev *netdev, bool is_netdev, Error **= errp) { - Netdev legacy =3D {0}; - const Netdev *netdev; NetClientState *peer =3D NULL; =20 if (is_netdev) { - netdev =3D object; - if (netdev->type =3D=3D NET_CLIENT_DRIVER_NIC || !net_client_init_fun[netdev->type]) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type", @@ -981,56 +977,11 @@ static int net_client_init1(const void *object, bool = is_netdev, Error **errp) return -1; } } else { - const NetLegacy *net =3D object; - const NetLegacyOptions *opts =3D net->opts; - legacy.id =3D net->id; - netdev =3D &legacy; - - /* Map the old options to the new flat type */ - switch (opts->type) { - case NET_LEGACY_OPTIONS_TYPE_NONE: + if (netdev->type =3D=3D NET_CLIENT_DRIVER_NONE) { return 0; /* nothing to do */ - case NET_LEGACY_OPTIONS_TYPE_NIC: - legacy.type =3D NET_CLIENT_DRIVER_NIC; - legacy.u.nic =3D opts->u.nic; - break; - case NET_LEGACY_OPTIONS_TYPE_USER: - legacy.type =3D NET_CLIENT_DRIVER_USER; - legacy.u.user =3D opts->u.user; - break; - case NET_LEGACY_OPTIONS_TYPE_TAP: - legacy.type =3D NET_CLIENT_DRIVER_TAP; - legacy.u.tap =3D opts->u.tap; - break; - case NET_LEGACY_OPTIONS_TYPE_L2TPV3: - legacy.type =3D NET_CLIENT_DRIVER_L2TPV3; - legacy.u.l2tpv3 =3D opts->u.l2tpv3; - break; - case NET_LEGACY_OPTIONS_TYPE_SOCKET: - legacy.type =3D NET_CLIENT_DRIVER_SOCKET; - legacy.u.socket =3D opts->u.socket; - break; - case NET_LEGACY_OPTIONS_TYPE_VDE: - legacy.type =3D NET_CLIENT_DRIVER_VDE; - legacy.u.vde =3D opts->u.vde; - break; - case NET_LEGACY_OPTIONS_TYPE_BRIDGE: - legacy.type =3D NET_CLIENT_DRIVER_BRIDGE; - legacy.u.bridge =3D opts->u.bridge; - break; - case NET_LEGACY_OPTIONS_TYPE_NETMAP: - legacy.type =3D NET_CLIENT_DRIVER_NETMAP; - legacy.u.netmap =3D opts->u.netmap; - break; - case NET_LEGACY_OPTIONS_TYPE_VHOST_USER: - legacy.type =3D NET_CLIENT_DRIVER_VHOST_USER; - legacy.u.vhost_user =3D opts->u.vhost_user; - break; - default: - abort(); } - - if (!net_client_init_fun[netdev->type]) { + if (netdev->type =3D=3D NET_CLIENT_DRIVER_HUBPORT || + !net_client_init_fun[netdev->type]) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type", "a net backend type (maybe it is not compiled " "into this binary)"); @@ -1039,7 +990,7 @@ static int net_client_init1(const void *object, bool i= s_netdev, Error **errp) =20 /* Do not add to a hub if it's a nic with a netdev=3D parameter. */ if (netdev->type !=3D NET_CLIENT_DRIVER_NIC || - !opts->u.nic.has_netdev) { + !netdev->u.nic.has_netdev) { peer =3D net_hub_add_port(0, NULL, NULL); } } @@ -1100,7 +1051,7 @@ static void show_netdevs(void) static int net_client_init(QemuOpts *opts, bool is_netdev, Error **errp) { gchar **substrings =3D NULL; - void *object =3D NULL; + Netdev *object =3D NULL; Error *err =3D NULL; int ret =3D -1; Visitor *v =3D opts_visitor_new(opts); @@ -1143,21 +1094,19 @@ static int net_client_init(QemuOpts *opts, bool is_= netdev, Error **errp) } } =20 - if (is_netdev) { - visit_type_Netdev(v, NULL, (Netdev **)&object, &err); - } else { - visit_type_NetLegacy(v, NULL, (NetLegacy **)&object, &err); + /* Create an ID for -net if the user did not specify one */ + if (!is_netdev && !qemu_opts_id(opts)) { + static int idx; + qemu_opts_set_id(opts, g_strdup_printf("__org.qemu.net%i", idx++)); } =20 + visit_type_Netdev(v, NULL, &object, &err); + if (!err) { ret =3D net_client_init1(object, is_netdev, &err); } =20 - if (is_netdev) { - qapi_free_Netdev(object); - } else { - qapi_free_NetLegacy(object); - } + qapi_free_Netdev(object); =20 out: error_propagate(errp, err); diff --git a/qapi/net.json b/qapi/net.json index fc7c95f..9244c9a 100644 --- a/qapi/net.json +++ b/qapi/net.json @@ -468,52 +468,6 @@ 'vhost-user': 'NetdevVhostUserOptions' } } =20 ## -# @NetLegacy: -# -# Captures the configuration of a network device; legacy. -# -# @id: identifier for monitor commands -# -# @opts: device type specific properties (legacy) -# -# Since: 1.2 -## -{ 'struct': 'NetLegacy', - 'data': { - '*id': 'str', - 'opts': 'NetLegacyOptions' } } - -## -# @NetLegacyOptionsType: -# -# Since: 1.2 -## -{ 'enum': 'NetLegacyOptionsType', - 'data': ['none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde', - 'bridge', 'netmap', 'vhost-user'] } - -## -# @NetLegacyOptions: -# -# Like Netdev, but for use only by the legacy command line options -# -# Since: 1.2 -## -{ 'union': 'NetLegacyOptions', - 'base': { 'type': 'NetLegacyOptionsType' }, - 'discriminator': 'type', - 'data': { - 'nic': 'NetLegacyNicOptions', - 'user': 'NetdevUserOptions', - 'tap': 'NetdevTapOptions', - 'l2tpv3': 'NetdevL2TPv3Options', - 'socket': 'NetdevSocketOptions', - 'vde': 'NetdevVdeOptions', - 'bridge': 'NetdevBridgeOptions', - 'netmap': 'NetdevNetmapOptions', - 'vhost-user': 'NetdevVhostUserOptions' } } - -## # @NetFilterDirection: # # Indicates whether a netfilter is attached to a netdev's transmit queue or --=20 2.5.0