From nobody Sun Feb 8 17:48:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1589824981; cv=none; d=zohomail.com; s=zohoarc; b=ELVic9p2U2NUKcKB0OcDoa7eScLlEiR/ZH+K3639JgPz32+02O3jAWUpkjlJ2aTwOzzfQQ9h3M2/KTn4YpjVpLqBcNFdmfvxDoSHKjsEpMQiV1TU+m4CsEF4jpu9E05dsR2UUOfu46zyqyA0aB3q+Bs5oLX7+B/u0jkhUmbpaYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589824981; 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=F1c+oilfDsSd/2cwkS5kVulDw/AxgAERhejaQ3GHa+0=; b=oFqpjSWeXh4402nrqgdi6tcfkj04oJyqcEGC5xyO+X01qxcY+k4gzxjcWAKKURHFnPxcmcr3EUmlAiVf5Cl7tYxk3z+OJvCTbL6twQcFPlDqImZQEoUHeCA5RwCkH6xJyAG8gsaufYEPB8pX0oMEh4Ihjut09GHyLQ2jCJSpkc4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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=fail 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 1589824981551568.2545897602131; Mon, 18 May 2020 11:03:01 -0700 (PDT) Received: from localhost ([::1]:58646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jak6N-0006Jj-SA for importer@patchew.org; Mon, 18 May 2020 14:02:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43438) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jak4v-0005PH-9Z for qemu-devel@nongnu.org; Mon, 18 May 2020 14:01:29 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:33790 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 1jak4u-00036K-1H for qemu-devel@nongnu.org; Mon, 18 May 2020 14:01:28 -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-269-bb1anneAOi6ocpVjo3Byjg-1; Mon, 18 May 2020 14:01:10 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F34CA1800D42 for ; Mon, 18 May 2020 18:01:09 +0000 (UTC) Received: from thuth.com (ovpn-112-242.ams2.redhat.com [10.36.112.242]) by smtp.corp.redhat.com (Postfix) with ESMTP id B4CB410013D9; Mon, 18 May 2020 18:01:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1589824886; 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=F1c+oilfDsSd/2cwkS5kVulDw/AxgAERhejaQ3GHa+0=; b=edqZwDW9CvjSBnZGWxgerTA21ReAOOJ4RIfzpbQR8y2tX3N35PZGmWOTIADV6Dn4VLI7k6 rhBv23AgjSIupZeDufQU+2B1DOErx+cmZgsKB9T47uqGDH7XCAUymwce2ArVEsCRfyuwGg l7PiBnmNKiYbEug+iwbTBLR8DaPDIEw= X-MC-Unique: bb1anneAOi6ocpVjo3Byjg-1 From: Thomas Huth To: Jason Wang , qemu-devel@nongnu.org Subject: [PATCH v3 2/2] net: Drop the NetLegacy structure, always use Netdev instead Date: Mon, 18 May 2020 20:01:03 +0200 Message-Id: <20200518180103.32484-3-thuth@redhat.com> In-Reply-To: <20200518180103.32484-1-thuth@redhat.com> References: <20200518180103.32484-1-thuth@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 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=thuth@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/17 22:52:27 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, 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.001, RCVD_IN_MSPIKE_WL=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: Markus Armbruster Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 --- Note: I did not rename the "is_netdev" parameter of the function (as Eric suggested) - you really have to think of "-netdev" vs. "-net" here and not about "Netdev" vs. "NetLegacy". But if this "is_netdev" thing still confuses us in the future, we can still rename it with an additional follow-up patch later instead. 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 a24da66e66..d4cc5bd73e 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 fc7c95f6d8..9244c9af56 100644 --- a/qapi/net.json +++ b/qapi/net.json @@ -467,52 +467,6 @@ 'netmap': 'NetdevNetmapOptions', '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: # --=20 2.18.1