From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760423725; cv=none; d=zohomail.com; s=zohoarc; b=enMEvXCgZ24APsUPC1Uzm901YpTGXxI5y3pKc8KsXOTfll4Opw7JQABYIFIsW9ck19bsh4P13aDqviesdV3qiEoRlyPP6Sb/TcBIfjzozi5eEtLFHFa7GzIinDGE7sMkdAvxMfPf9NV2HUFmCjGmDT9hQydvZ8VIrZiFQheIwyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760423725; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=m9lCdyecmYFe7iO89oAqjtidLC0LFacmFWS5nHnmFEk=; b=MPVIaO+biK82djA8Ra8raXotcHb5NW+5ZWUTP53E0b+Ti06hUrYgyBiXJdAHL0ZQVYmc1noOQjyOq+pAeW2UrMR1d/LXrQANZTCyahknyurfhsxN01BeEUIVRM4Tcg6HP47msZuvPA5GJ85rISPY8BsBfDfvhuPWkCFzri+SOM0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760423725853156.6046420812869; Mon, 13 Oct 2025 23:35:25 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D3E0D444A0; Tue, 14 Oct 2025 02:35:22 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 775504452A; Tue, 14 Oct 2025 02:33:40 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BBDC144252; Tue, 14 Oct 2025 02:31:57 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id F2D9F41B73 for ; Tue, 14 Oct 2025 02:31:56 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-97-B0Pjx3vJNQ2sbca2Dv3dBA-1; Tue, 14 Oct 2025 02:31:54 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2AA821800365 for ; Tue, 14 Oct 2025 06:31:54 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 7CB24300018D for ; Tue, 14 Oct 2025 06:31:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423516; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=m9lCdyecmYFe7iO89oAqjtidLC0LFacmFWS5nHnmFEk=; b=bQVjaByJll5jsW5lAqtChMsGGJVuy4YX+uPnS7LrFXgPbuPDItOxtgZWV24Utr4GkVhEXy kODptYc4+P3uMeI/VDAa+t/vLCiaJiJOjqvv+EUtrfaFa5tw/BHtsXLdN605FbGkxcOz5H m7dGi4QB458m/0xqjQ1/90Fsm63kXl8= X-MC-Unique: B0Pjx3vJNQ2sbca2Dv3dBA-1 X-Mimecast-MFC-AGG-ID: B0Pjx3vJNQ2sbca2Dv3dBA_1760423514 To: devel@lists.libvirt.org Subject: [PATCH 1/8] wireshark: Drop needless declaration of proto_register_libvirt() and proto_reg_handoff_libvirt() Date: Tue, 14 Oct 2025 08:31:40 +0200 Message-ID: <06251214ab1a919b10ec3afdf859e26102b74959.1760423277.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: bkr7c_8gR5OS652pH4_4kM-s2EcpgE8DGFVxfRQw8Qg_1760423514 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: GRZIWMQC4NDIABR2ZQ7BB73PWD22DEGG X-Message-ID-Hash: GRZIWMQC4NDIABR2ZQ7BB73PWD22DEGG X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760423727925158501 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Both proto_register_libvirt() and proto_reg_handoff_libvirt() are declared in packet-libvirt.h which is included from plugin.c. There's no need to provide another declaration in plugin.c. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- tools/wireshark/src/plugin.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/wireshark/src/plugin.c b/tools/wireshark/src/plugin.c index 9a83f2ca07..19b25e7b1a 100644 --- a/tools/wireshark/src/plugin.c +++ b/tools/wireshark/src/plugin.c @@ -72,9 +72,6 @@ void plugin_register(void) =20 #else /* WIRESHARK_VERSION >=3D 2009000 */ =20 -void proto_register_libvirt(void); -void proto_reg_handoff_libvirt(void); - WS_DLL_PUBLIC_DEF const gchar plugin_version[] =3D PLUGIN_VERSION; WS_DLL_PUBLIC_DEF const int plugin_want_major =3D WIRESHARK_VERSION_MAJOR; WS_DLL_PUBLIC_DEF const int plugin_want_minor =3D WIRESHARK_VERSION_MINOR; --=20 2.49.1 From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760423792; cv=none; d=zohomail.com; s=zohoarc; b=Axo44NU7z8s0uKv0/R3BbXD1eh3IAYdKnHBGStRxL5xzuPHjeh+S6qTe24UYV/kc4t39HEcwbKwhkPx3FrIQSMq3AJWaDAHiIzng41AbMwWNLhvrY0iiU+Mvhleswtd+bbi4g8NS6gfOMtVhGJ393dKHIbWUqTBs7PC+GxwSR5I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760423792; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=i9RuTKItNPHWBLkm0rv6V6GSj9vGvEEtt13iSyrqx0I=; b=PLbEyalar9efeOo713UdUhB+ogqE1nprFZ7qvPHIWc2cJwuGuNUv5z5cPJMdpxQqx3Pq+9hLgnw2pmtjFw+iuW6Zcq8RXgDxcuTv4R3kxWFlYjIFNhkCXKXKJPKvjQv4PPNoRS9thUmpR8Vsowy7Gr7+ailazKfYKeoqadLSuzA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760423792433965.3266452439443; Mon, 13 Oct 2025 23:36:32 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 927C944433; Tue, 14 Oct 2025 02:36:31 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id B459C44373; Tue, 14 Oct 2025 02:34:17 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0944643DB1; Tue, 14 Oct 2025 02:31:58 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 2560E41B73 for ; Tue, 14 Oct 2025 02:31:58 -0400 (EDT) Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-57-h_u4cviuMaisIgRZgC0asg-1; Tue, 14 Oct 2025 02:31:56 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4B8BB1956087 for ; Tue, 14 Oct 2025 06:31:55 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9DFB3300018D for ; Tue, 14 Oct 2025 06:31:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423517; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=i9RuTKItNPHWBLkm0rv6V6GSj9vGvEEtt13iSyrqx0I=; b=iGIO8MJ1Nq/9r3RkXbQu+S9JCCpUdVMBdQA29Ay5Cprhm7rCzuUFN5umCMWzBzvriA0yTM rN5F3/bzvF5JLTThs63yKqqx6E6zSB/fujR2N+mOI26IonBnrWSvLPkdJI7IQ1Z+rYPM8t oY+p2Y0W2WcWrxi8n67upC5Szpoz8K8= X-MC-Unique: h_u4cviuMaisIgRZgC0asg-1 X-Mimecast-MFC-AGG-ID: h_u4cviuMaisIgRZgC0asg_1760423515 To: devel@lists.libvirt.org Subject: [PATCH 2/8] wireshark: Switch header files to #pragma once Date: Tue, 14 Oct 2025 08:31:41 +0200 Message-ID: <6c840d81aaa1c87cacc19d976ace0c7d76dfa504.1760423277.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 8RkB6JcmYmP_GTDCrHdRi8L6Gu5eMAF2Yu9oym9-Y7U_1760423515 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: HYEAB7WDOYQGD7EWS5PYW6LBEELFO5Q2 X-Message-ID-Hash: HYEAB7WDOYQGD7EWS5PYW6LBEELFO5Q2 X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760423792675158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik The genxdrstub.pl script generates some header files. But they use the old pattern to guard against multiple inclusion: #ifndef SOMETHING_H #define SOMETHING_H ... #endif Change the script to generate just '#pragma once' used everywhere else in our code. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- tools/wireshark/util/genxdrstub.pl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tools/wireshark/util/genxdrstub.pl b/tools/wireshark/util/genx= drstub.pl index 8cfda25a27..01b663a88c 100755 --- a/tools/wireshark/util/genxdrstub.pl +++ b/tools/wireshark/util/genxdrstub.pl @@ -563,11 +563,8 @@ sub add_header_file { local $self->{header_contents} =3D []; $self->print("/* *DO NOT MODIFY* this file directly.\n"); $self->print(" * This file was generated by $0 from libvirt version $l= ibvirt_version */\n"); - my $ucname =3D uc $name; - $self->print("#ifndef _$ucname\_H_\n"); - $self->print("#define _$ucname\_H_\n"); + $self->print("#pragma once\n"); $block->(); - $self->print("#endif /* _$ucname\_H_ */"); push @{ $self->{headers} }, [ $name, delete $self->{header_contents} ]; } =20 --=20 2.49.1 From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760423865; cv=none; d=zohomail.com; s=zohoarc; b=GY83YPHvEhZdD4refolB+qeWU1IJBiq7LLVMrtB1FEAjgmTaG9aCixz1BfOGGe8ToBRVfmT9UTPeyGO8RABD8ivmPDWmTGk5VAPglySlf3kJyeM+4VHUVaKKA/p/J9f/LiW94GQxMxFm66Iq7AornaNaX2RUmM7frSC4J3NGBn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760423865; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=J9b5yQaBqq15YgjhvRgzatiLUXFk+g69UpEHdpdCCYE=; b=AEOZ4BTVxgufRyxBLotq4Ma25pb59cOTGpyfDgOCVBx1UYZsrATXtdGFhR9YUF81JObfEs07LQ589KWS/9G8AyKwhJVKjpcl5ozKPBzDyq5+KOeGLFfEoqB9vkCYw2mg7fpuE5Wni4sOfVogDxBY2I4U1hT/wk48EDPI2I2vQMs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760423865338291.87858307510805; Mon, 13 Oct 2025 23:37:45 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6F438442BF; Tue, 14 Oct 2025 02:37:44 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 87303442D5; Tue, 14 Oct 2025 02:35:08 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id C212743DB1; Tue, 14 Oct 2025 02:31:59 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id E4CF244266 for ; Tue, 14 Oct 2025 02:31:58 -0400 (EDT) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-65-dJhVN2XiOEq4z0VKf-xSCA-1; Tue, 14 Oct 2025 02:31:57 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4BA441954102 for ; Tue, 14 Oct 2025 06:31:56 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A809C300018D for ; Tue, 14 Oct 2025 06:31:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423518; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=J9b5yQaBqq15YgjhvRgzatiLUXFk+g69UpEHdpdCCYE=; b=At/6I+BhMab6adonsFJTnl4wcvQhnsMVazqxr6WfpV6OY8U7Lhr97pc7hZibIngLTq1gx9 wi+N4/kZyCrdQsaAiHmduQrEs0jAswjP/cRNJhjHqRIwYRyLoTkeGjuQagIlAExqWiejiG PRvILMEspY2nSHk5FBzrZXNLVtxUdEI= X-MC-Unique: dJhVN2XiOEq4z0VKf-xSCA-1 X-Mimecast-MFC-AGG-ID: dJhVN2XiOEq4z0VKf-xSCA_1760423516 To: devel@lists.libvirt.org Subject: [PATCH 3/8] wireshark: Move WIRESHARK_VERSION macro definition Date: Tue, 14 Oct 2025 08:31:42 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: K79c8SZ2pZvP5m5H6kMR4XTSYcwngOYSnMsim7s0yrk_1760423516 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3ETCCDGAT426O4GZIFKL7QDSZYZDYNU2 X-Message-ID-Hash: 3ETCCDGAT426O4GZIFKL7QDSZYZDYNU2 X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760423865743158501 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Soon, other parts of the wireshark code will need to differentiate wrt wireshark version. Therefore, move the WIRESHARK_VERSION macro definition among with its deps into packet-libvirt.h. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- tools/wireshark/src/packet-libvirt.h | 14 ++++++++++++++ tools/wireshark/src/plugin.c | 14 -------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tools/wireshark/src/packet-libvirt.h b/tools/wireshark/src/pac= ket-libvirt.h index 14e6e13696..15cfcb0534 100644 --- a/tools/wireshark/src/packet-libvirt.h +++ b/tools/wireshark/src/packet-libvirt.h @@ -19,5 +19,19 @@ =20 #pragma once =20 +#ifdef WITH_WS_VERSION +# include +#else +# include +# define WIRESHARK_VERSION_MAJOR VERSION_MAJOR +# define WIRESHARK_VERSION_MINOR VERSION_MINOR +# define WIRESHARK_VERSION_MICRO VERSION_MICRO +#endif + +#define WIRESHARK_VERSION \ + ((WIRESHARK_VERSION_MAJOR * 1000 * 1000) + \ + (WIRESHARK_VERSION_MINOR * 1000) + \ + (WIRESHARK_VERSION_MICRO)) + void proto_register_libvirt(void); void proto_reg_handoff_libvirt(void); diff --git a/tools/wireshark/src/plugin.c b/tools/wireshark/src/plugin.c index 19b25e7b1a..64317b5280 100644 --- a/tools/wireshark/src/plugin.c +++ b/tools/wireshark/src/plugin.c @@ -12,15 +12,6 @@ =20 #include =20 -#ifdef WITH_WS_VERSION -# include -#else -# include -# define WIRESHARK_VERSION_MAJOR VERSION_MAJOR -# define WIRESHARK_VERSION_MINOR VERSION_MINOR -# define WIRESHARK_VERSION_MICRO VERSION_MICRO -#endif - #define HAVE_PLUGINS 1 #include /* plugins are DLLs */ @@ -32,11 +23,6 @@ /* Let the plugin version be the version of libvirt */ #define PLUGIN_VERSION VERSION =20 -#define WIRESHARK_VERSION \ - ((WIRESHARK_VERSION_MAJOR * 1000 * 1000) + \ - (WIRESHARK_VERSION_MINOR * 1000) + \ - (WIRESHARK_VERSION_MICRO)) - #if WIRESHARK_VERSION < 2005000 =20 WS_DLL_PUBLIC_DEF const gchar version[] =3D VERSION; --=20 2.49.1 From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760423945; cv=none; d=zohomail.com; s=zohoarc; b=ZvORJfuY94NCsUz8UceAQvwvPKQ2WBheU5vwumCttysX5KbUKX33EtvDE5Q4UOUXDH5ZNCSv/0Qh+H2rI2MB9BhejQrYQ9x4yWUs2YFjd2PxGJHsMDxW7V1LnRtbTqZ23saCQ15A7hYBFLuq4KuvltcR4KaK4BtYJLNkU3n69AE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760423945; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=oBInzYJbd/NMOeclCs5/cqprUi6yczsPijFD7k/lsW0=; b=YN0eL3tIy3YLva4PJh1CLwIxFgX2FY9vwt6RBuDcfTHdl5HptFxi8u+3VFqyE87xZJXbuqF5w0u7G/TOMjMbP2ilSMjOGj5LYpvSzo7X9IeQYweSUApxn5a2Oc2HTxTppxEB1iFtz4l373ziv1PkAFO3LGWpsUW9zYcG027eigc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760423945336973.8455976941228; Mon, 13 Oct 2025 23:39:05 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B63AF4435D; Tue, 14 Oct 2025 02:39:04 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id B6F884441F; Tue, 14 Oct 2025 02:37:24 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8FB8641B73; Tue, 14 Oct 2025 02:32:00 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id CC25844252 for ; Tue, 14 Oct 2025 02:31:59 -0400 (EDT) Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-358-86W7awcdPaWuqBk7Yyd2ow-1; Tue, 14 Oct 2025 02:31:58 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4BB8E195608D for ; Tue, 14 Oct 2025 06:31:57 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A835D300018D for ; Tue, 14 Oct 2025 06:31:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423519; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oBInzYJbd/NMOeclCs5/cqprUi6yczsPijFD7k/lsW0=; b=E9fkaPul3z9jZt1SPpQlW3gqQuh8nKqPXixb8OHlR7w2g3HfhYNqOqZmIJ5Dn+FVDkeUBK RdZ+0EtIq2Gza5gUgLDD8XxE0vvbNW9grPxLpyHtOxcI25NNBdHcoo6HkUulN/6HZAqU1I AcX6FbVPxez6csxGAW9J9Y0NLnDajLc= X-MC-Unique: 86W7awcdPaWuqBk7Yyd2ow-1 X-Mimecast-MFC-AGG-ID: 86W7awcdPaWuqBk7Yyd2ow_1760423517 To: devel@lists.libvirt.org Subject: [PATCH 4/8] wireshark: Fix int type of some virNetMessageHeader members Date: Tue, 14 Oct 2025 08:31:43 +0200 Message-ID: <7e2026668a639c39d4be2ad2b939c995de5ac150.1760423277.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: _w3Pg3mOEb6xCxEiFFs_8XdeociMQDMIz6lHNM92tpw_1760423517 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6O4GBPUPJWYG4RZDHZC5WUXIBGQR3DZE X-Message-ID-Hash: 6O4GBPUPJWYG4RZDHZC5WUXIBGQR3DZE X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760423947232154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Our virNetMessageHeader is a struct that's declared as follows: struct virNetMessageHeader { unsigned prog; unsigned vers; int proc; virNetMessageType type; unsigned serial; virNetMessageStatus status; }; Now, per RFC 4506 enums are also encoded as signed integers. This means, that only 'prog', 'vers' and 'serial' are really unsigned integers. The others ('proc', 'type' and 'status') are encoded as signed integers. Fix their type when dissecting. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- tools/wireshark/src/packet-libvirt.c | 34 +++++++++++++++++++--------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/pac= ket-libvirt.c index da2aabd98a..af14c6bed7 100644 --- a/tools/wireshark/src/packet-libvirt.c +++ b/tools/wireshark/src/packet-libvirt.c @@ -92,7 +92,7 @@ typedef gboolean (*vir_xdr_dissector_t)(tvbuff_t *tvb, pr= oto_tree *tree, XDR *xd =20 typedef struct vir_dissector_index vir_dissector_index_t; struct vir_dissector_index { - guint32 proc; + int32_t proc; vir_xdr_dissector_t args; vir_xdr_dissector_t ret; vir_xdr_dissector_t msg; @@ -275,8 +275,10 @@ dissect_xdr_array(tvbuff_t *tvb, proto_tree *tree, XDR= *xdrs, int hf, gint ett, } =20 static vir_xdr_dissector_t -find_payload_dissector(guint32 proc, guint32 type, - const vir_dissector_index_t *pds, gsize length) +find_payload_dissector(int32_t proc, + enum vir_net_message_type type, + const vir_dissector_index_t *pds, + gsize length) { const vir_dissector_index_t *pd; guint32 first, last, direction; @@ -309,6 +311,10 @@ find_payload_dissector(guint32 proc, guint32 type, return pd->ret; case VIR_NET_MESSAGE: return pd->msg; + case VIR_NET_STREAM: + case VIR_NET_STREAM_HOLE: + /* Handled elsewhere */ + return NULL; } return NULL; } @@ -397,8 +403,12 @@ dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tre= e, XDR *xdrs, int hf) #include "libvirt/protocol.h" =20 static void -dissect_libvirt_payload(tvbuff_t *tvb, proto_tree *tree, - guint32 prog, guint32 proc, guint32 type, guint32 = status) +dissect_libvirt_payload(tvbuff_t *tvb, + proto_tree *tree, + uint32_t prog, + int32_t proc, + int32_t type, + int32_t status) { gssize payload_length; =20 @@ -430,7 +440,8 @@ dissect_libvirt_payload(tvbuff_t *tvb, proto_tree *tree, return; =20 unknown: - dbg("Cannot determine payload: Prog=3D%u, Proc=3D%u, Type=3D%u, Status= =3D%u", prog, proc, type, status); + dbg("Cannot determine payload: Prog=3D%u, Proc=3D%d, Type=3D%d, Status= =3D%d", + prog, proc, type, status); proto_tree_add_item(tree, hf_libvirt_unknown, tvb, VIR_HEADER_LEN, -1,= ENC_NA); } =20 @@ -439,7 +450,8 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pin= fo, proto_tree *tree, void *opaque G_GNUC_UNUSED) { goffset offset; - guint32 prog, proc, type, serial, status; + uint32_t prog, serial; + int32_t proc, type, status; const value_string *vs; =20 col_set_str(pinfo->cinfo, COL_PROTOCOL, "Libvirt"); @@ -448,17 +460,17 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *p= info, proto_tree *tree, offset =3D 4; /* End of length field */ prog =3D tvb_get_ntohl(tvb, offset); offset +=3D 4; offset +=3D 4; /* Ignore version header field */ - proc =3D tvb_get_ntohl(tvb, offset); offset +=3D 4; - type =3D tvb_get_ntohl(tvb, offset); offset +=3D 4; + proc =3D tvb_get_ntohil(tvb, offset); offset +=3D 4; + type =3D tvb_get_ntohil(tvb, offset); offset +=3D 4; serial =3D tvb_get_ntohl(tvb, offset); offset +=3D 4; - status =3D tvb_get_ntohl(tvb, offset); offset +=3D 4; + status =3D tvb_get_ntohil(tvb, offset); offset +=3D 4; =20 col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=3D%s", val_to_str(prog, program_strings, "%x")); =20 vs =3D get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); if (vs =3D=3D NULL) { - col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%u", proc); + col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%d", proc); } else { col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", val_to_str(p= roc, vs, "%d")); } --=20 2.49.1 From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760423982; cv=none; d=zohomail.com; s=zohoarc; b=hv6cZbm5Z8W0hoqUAWToVHaEPpHZD09E4GmgM72gItyrx4Maco1WJH3m+J3uTsqOrq71WBXGjaSrq8PhfFqkVwabtNhH4X5JeKggYWXVYikX+jg44htwO0ch7Na755rMI6bvmYS9gH8yS/332yyE4Ly1QeXtxgRRxAOy968QYQg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760423982; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=fhyeqzBaTPcOkqO8/9UBVqkHZEf1N5jyLEMAa+UpAsE=; b=PU9ptabjWPFHGYyCayP+iwwyWpP43+oKthrfbfY13/WN7QsKY+FYGNSE5mloeM2t45fbGtvPI0gWSYqiUoxf95rTrcXMscsH+vN7tx8GWV2eS+WKAWAIRYMb68ncD1GvucKupj8KOP6TwTEqAO65yder2oeo4xjgEQvIAf1aCBo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760423982880181.63556648237216; Mon, 13 Oct 2025 23:39:42 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id F143E44426; Tue, 14 Oct 2025 02:39:41 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 3BA8544648; Tue, 14 Oct 2025 02:37:32 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id C17E341B73; Tue, 14 Oct 2025 02:32:01 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 09F0D43DB1 for ; Tue, 14 Oct 2025 02:32:01 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-445-5M9k8vEXOnymoDhvSglmAA-1; Tue, 14 Oct 2025 02:31:59 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4C5A31800578 for ; Tue, 14 Oct 2025 06:31:58 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A86D0300018D for ; Tue, 14 Oct 2025 06:31:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423520; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fhyeqzBaTPcOkqO8/9UBVqkHZEf1N5jyLEMAa+UpAsE=; b=NZrVV70UnCV3Q57TvXZdq1B5mvnDJUkqbqcVsGXjO7NBMW3hNGWVJNdg+flKCaxvo848EV 1iYVdiIUitfPpdzFqi7RkUb6Fwns9I5X9pH7RM3pYORrDa6KDFqg0WU2HXyV219uKAzwe7 Rp1tKGqykDo4qEqyCFYHKXv8GjisfbU= X-MC-Unique: 5M9k8vEXOnymoDhvSglmAA-1 X-Mimecast-MFC-AGG-ID: 5M9k8vEXOnymoDhvSglmAA_1760423518 To: devel@lists.libvirt.org Subject: [PATCH 5/8] wireshark: Don't special case retval of get_program_data() in dissect_libvirt_message() Date: Tue, 14 Oct 2025 08:31:44 +0200 Message-ID: <7f2dc07e23c71d5823560a8ab3fe5502e624d121.1760423277.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: fHjLhWR6fcNRlnQ-VHAxYaOiZVKkQamEjWkRdw9jQ-0_1760423518 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: C4OEIVVR3HSQ5YLY6PJNZKTCXUZ6KHVI X-Message-ID-Hash: C4OEIVVR3HSQ5YLY6PJNZKTCXUZ6KHVI X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760423985067158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik The get_program_data() function returns a pointer (in this specific case to an array of procedure strings) which, if non-NULL is then passed val_to_str(). Well, if val_to_str() sees NULL it is treated gracefully, i.e. like if the numeric value 'proc' wasn't found in the array. Therefore, there's no need to special case call to col_append_fstr(). Both result into the same behaviour. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- tools/wireshark/src/packet-libvirt.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/pac= ket-libvirt.c index af14c6bed7..6c729801d4 100644 --- a/tools/wireshark/src/packet-libvirt.c +++ b/tools/wireshark/src/packet-libvirt.c @@ -469,11 +469,7 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pi= nfo, proto_tree *tree, val_to_str(prog, program_strings, "%x")); =20 vs =3D get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); - if (vs =3D=3D NULL) { - col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%d", proc); - } else { - col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", val_to_str(p= roc, vs, "%d")); - } + col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", val_to_str(proc,= vs, "%d")); =20 col_append_fstr(pinfo->cinfo, COL_INFO, " Type=3D%s Serial=3D%u Status= =3D%s", val_to_str(type, type_strings, "%d"), serial, --=20 2.49.1 From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760424022; cv=none; d=zohomail.com; s=zohoarc; b=UzDIVQxd9Z4jOz0mYbbt1tI7czDxfJHyFLqyHkWE3Ay6pLNYwKh4y3ynDnKOo9un+OVvibC1ki0Nijn/H31brXc4MdkrIJIj2Farma3NW3h9LBmd9xeI6f3DTBrqnZE+r7+FHDizub0TS2sJ6ehf0aQ63PK9nBzkubf6/3xoe1o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760424022; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=GKIt35lXEK5mu9rRXHHsPmkkZwahyE3hNPsS++53IRk=; b=lsb5DNbzZTyUOF05LTtR/onSwcyOFCT1Iargd/BlWRd9fTe3uwYSlmzgs/Ign2YaG3kkwtCBc/8cozLhaHNlBLoy65Vqpst6JI4qqDF2mCTnvTp92fB9FcNwlvPpSMbU6jplO65UxQBWLz4Vxfzp1JNX3iLTPvA4KJZ7VB5Ob/I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760424022692817.8740953728724; Mon, 13 Oct 2025 23:40:22 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id CD67844263; Tue, 14 Oct 2025 02:40:19 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id B6549442D8; Tue, 14 Oct 2025 02:37:36 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id F136A41B73; Tue, 14 Oct 2025 02:32:02 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 3646643DB1 for ; Tue, 14 Oct 2025 02:32:02 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-444-Qzs17vxcMvyDByVm9tHDUA-1; Tue, 14 Oct 2025 02:32:00 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4C01D1800452 for ; Tue, 14 Oct 2025 06:31:59 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A859B300018D for ; Tue, 14 Oct 2025 06:31:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423521; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GKIt35lXEK5mu9rRXHHsPmkkZwahyE3hNPsS++53IRk=; b=I/dQEri0xMNZgtGGmuBQMvVa2NXEc53hzJ8ylzqHLpn6pDOZV2l3O5TcmHfZl28CwrutUF A1T7KXNWXcEfvFX2fOuhg/iRnTflfGsL1xytijsjDNoSEo8G8DnniIhe/fVogTJ0UrKPeD 7aTs2yqmScsoMP8xbBNTDUu/WR4q03U= X-MC-Unique: Qzs17vxcMvyDByVm9tHDUA-1 X-Mimecast-MFC-AGG-ID: Qzs17vxcMvyDByVm9tHDUA_1760423519 To: devel@lists.libvirt.org Subject: [PATCH 6/8] wireshark: Introduce and use vir_val_to_str() Date: Tue, 14 Oct 2025 08:31:45 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 7MnQ7No6GpsLBRTNNQp4urTvA7Lw7w3WRz2lEiae-Ps_1760423519 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CUWV2A3CWSPLJ3NTLOBJA6CF5WBQHS4P X-Message-ID-Hash: CUWV2A3CWSPLJ3NTLOBJA6CF5WBQHS4P X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760424023510158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Wireshark offers val_to_str() function which converts numeric value to string by looking up value ('val') in an array ('vs') of pairs. If no corresponding string is found, then the value is formatted using given 'fmt' string. Starting from wireshark-4.6.0 not only this function gained another argument but also returns a strdup()-ed string. To keep our code simple, let's introduce a wrapper so which can be then adjusted as needed. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- tools/wireshark/src/packet-libvirt.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/pac= ket-libvirt.c index 6c729801d4..f6ad2c4578 100644 --- a/tools/wireshark/src/packet-libvirt.c +++ b/tools/wireshark/src/packet-libvirt.c @@ -140,6 +140,15 @@ static const value_string status_strings[] =3D { { -1, NULL } }; =20 +static const char * +G_GNUC_PRINTF(3, 0) +vir_val_to_str(const uint32_t val, + const value_string *vs, + const char *fmt) +{ + return val_to_str(val, vs, fmt); +} + static gboolean dissect_xdr_string(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, guint32 maxlen) @@ -466,14 +475,14 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *p= info, proto_tree *tree, status =3D tvb_get_ntohil(tvb, offset); offset +=3D 4; =20 col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=3D%s", - val_to_str(prog, program_strings, "%x")); + vir_val_to_str(prog, program_strings, "%x")); =20 vs =3D get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); - col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", val_to_str(proc,= vs, "%d")); + col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", vir_val_to_str(p= roc, vs, "%d")); =20 col_append_fstr(pinfo->cinfo, COL_INFO, " Type=3D%s Serial=3D%u Status= =3D%s", - val_to_str(type, type_strings, "%d"), serial, - val_to_str(status, status_strings, "%d")); + vir_val_to_str(type, type_strings, "%d"), serial, + vir_val_to_str(status, status_strings, "%d")); =20 if (tree) { gint *hf_proc; --=20 2.49.1 From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760424085; cv=none; d=zohomail.com; s=zohoarc; b=TJeXt4gy45cFZPjtS8rDcnRUiNZq/MufQbqsmY0wk0W8Kw9FzMYpOHh8+J/LEL4mrk0LBX2K5kyJVZls6X/ohM3+HQNypfHu0gvUBT1PpSGWPpcIW7CXRKApA4FeacUNrrvq9ifeZ5BeCc/A/cZS/c6wu+9n0+B5sZ/U8wdj8NI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760424085; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=blE4ZJ3SVxtruZai20yCpEeiWL5nVAcMhIAr5Xosc9g=; b=k7QwDL3cC3RvEDI/NkuV8nQOX/JWYfVHt7gqx9X9pTKarrE1o19EVs9ggktSrIm2+hitPwlhz8mPw+FxxROyPESbwBQk3f9NSyo4yuxc5n0GaXrb8ZiMhXd4Tp2iaV8dz2e2wATmGiKnlsRFEGf33yzAv2HCm+Hv34gQKl1fpm0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760424085318795.1048063514834; Mon, 13 Oct 2025 23:41:25 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 5056D3F303; Tue, 14 Oct 2025 02:41:20 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 84A81447A4; Tue, 14 Oct 2025 02:37:41 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E777543DB1; Tue, 14 Oct 2025 02:32:04 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 9350C43DB1 for ; Tue, 14 Oct 2025 02:32:03 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-379-o7JrHclkOISpij8h5eLGsg-1; Tue, 14 Oct 2025 02:32:01 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5482E180034C for ; Tue, 14 Oct 2025 06:32:00 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B0FAF300018D for ; Tue, 14 Oct 2025 06:31:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423523; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=blE4ZJ3SVxtruZai20yCpEeiWL5nVAcMhIAr5Xosc9g=; b=Hn7qwIZnRCi6roFGEf70c18+ORrF+625xugKKKRtYj6FY6fDNaXrKg0v/eGzbKF177joko lN2xs8RUto54fvLL4NzCpFxgUBUTjZL4JvJcLrVQjz7vOEYh++nuaLStTbtpWXVlsX+xZa RKYcudWjnR1zIOnlZIwsKKH5YvtGTTg= X-MC-Unique: o7JrHclkOISpij8h5eLGsg-1 X-Mimecast-MFC-AGG-ID: o7JrHclkOISpij8h5eLGsg_1760423520 To: devel@lists.libvirt.org Subject: [PATCH 7/8] wireshark: Don't leak column strings Date: Tue, 14 Oct 2025 08:31:46 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: zDP2JUyXeuLxrjfkOxmipWrRQhlNLGMZ7Olx4pcfzMU_1760423520 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4QNWDQPC6S4UJTZ2GJZAUEMZLJCXH77R X-Message-ID-Hash: 4QNWDQPC6S4UJTZ2GJZAUEMZLJCXH77R X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760424086465158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik One of the problems of using val_to_str() is that it may return a const string from given table ('vs'), OR return an allocated one. Since the caller has no idea which case it is, it resides to safe option and don't free returned string. But that might lead to a memleak. This behaviour is fixed with wireshark-4.6.0 and support for it will be introduced soon. But first, make vir_val_to_str() behave like fixed val_to_str() from newer wireshark: just always allocate the string. Now, if val_to_str() needs to allocate new memory it obtains allocator by calling wmem_packet_scope() which is what we may do too. Hand in hand with that, we need to free the memory using the correct allocator, hence wmem_free(). But let's put it into a wrapper vir_wmem_free() because just like val_to_str(), it'll need additional argument when adapting to new wireshark. Oh, and freeing the memory right after col_add_fstr() is safe as it uses vsnprintf() under the hood to format passed args. One last thing, the wmem.h file used to live under epan/wmem/ but then in v3.5.0~240 [1] was moved to wsutil/wmem/. 1: https://gitlab.com/wireshark/wireshark/-/commit/7f9c1f5f92c131354fc8b2b8= 8d473706786064c0 Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- meson.build | 20 ++++++++++++++++ tools/wireshark/src/meson.build | 1 + tools/wireshark/src/packet-libvirt.c | 35 ++++++++++++++++++++++------ 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/meson.build b/meson.build index bcc18b20e5..a1e0e5ecd5 100644 --- a/meson.build +++ b/meson.build @@ -1365,6 +1365,26 @@ if wireshark_dep.found() if cc.check_header('wireshark/ws_version.h') conf.set('WITH_WS_VERSION', 1) endif + + # Find wmem.h + # But it's not as easy as you'd think. Ubuntu 20.04 has split parts of + # libwireshark.so into libwsutil.so but: + # a) wireshark.pc never mentions it, + # b) libwsutil-dev package doesn't install pkg-config file. + # Fortunately, it's fixed in 24.04. + if cc.check_header('wireshark/epan/wmem/wmem.h', dependencies: wireshark= _dep) + conf.set('WITH_WS_EPAN_WMEM', 1) + elif cc.check_header('wireshark/wsutil/wmem/wmem.h', dependencies: wires= hark_dep) + conf.set('WITH_WS_WSUTIL_WMEM', 1) + else + error('Unable to locate wmem.h file') + endif + + # TODO: drop wsutil dep once support for Ubuntu 20.04 is dropped + wsutil_dep =3D dependency('', required: false) + if not cc.has_function('wmem_free', dependencies: wireshark_dep) + wsutil_dep =3D cc.find_library('wsutil', required: true) + endif endif =20 # generic build dependencies checks diff --git a/tools/wireshark/src/meson.build b/tools/wireshark/src/meson.bu= ild index 9b452dc5ca..ba0df913e0 100644 --- a/tools/wireshark/src/meson.build +++ b/tools/wireshark/src/meson.build @@ -9,6 +9,7 @@ shared_library( ], dependencies: [ wireshark_dep, + wsutil_dep, xdr_dep, tools_dep, ], diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/pac= ket-libvirt.c index f6ad2c4578..3178ac6f27 100644 --- a/tools/wireshark/src/packet-libvirt.c +++ b/tools/wireshark/src/packet-libvirt.c @@ -21,6 +21,11 @@ #include #include #include +#ifdef WITH_WS_EPAN_WMEM +# include +#elif WITH_WS_WSUTIL_WMEM +# include +#endif #include #include #include "packet-libvirt.h" @@ -140,13 +145,19 @@ static const value_string status_strings[] =3D { { -1, NULL } }; =20 -static const char * +static char * G_GNUC_PRINTF(3, 0) vir_val_to_str(const uint32_t val, const value_string *vs, const char *fmt) { - return val_to_str(val, vs, fmt); + return val_to_str_wmem(wmem_packet_scope(), val, vs, fmt); +} + +static void +vir_wmem_free(void *ptr) +{ + wmem_free(wmem_packet_scope(), ptr); } =20 static gboolean @@ -462,6 +473,10 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *pi= nfo, proto_tree *tree, uint32_t prog, serial; int32_t proc, type, status; const value_string *vs; + char *prog_str =3D NULL; + char *proc_str =3D NULL; + char *type_str =3D NULL; + char *status_str =3D NULL; =20 col_set_str(pinfo->cinfo, COL_PROTOCOL, "Libvirt"); col_clear(pinfo->cinfo, COL_INFO); @@ -474,15 +489,21 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *p= info, proto_tree *tree, serial =3D tvb_get_ntohl(tvb, offset); offset +=3D 4; status =3D tvb_get_ntohil(tvb, offset); offset +=3D 4; =20 - col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=3D%s", - vir_val_to_str(prog, program_strings, "%x")); + prog_str =3D vir_val_to_str(prog, program_strings, "%x"); + col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=3D%s", prog_str); + vir_wmem_free(prog_str); =20 vs =3D get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); - col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", vir_val_to_str(p= roc, vs, "%d")); + proc_str =3D vir_val_to_str(proc, vs, "%d"); + col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", proc_str); + vir_wmem_free(proc_str); =20 + type_str =3D vir_val_to_str(type, type_strings, "%d"); + status_str =3D vir_val_to_str(status, status_strings, "%d"); col_append_fstr(pinfo->cinfo, COL_INFO, " Type=3D%s Serial=3D%u Status= =3D%s", - vir_val_to_str(type, type_strings, "%d"), serial, - vir_val_to_str(status, status_strings, "%d")); + type_str, serial, status_str); + vir_wmem_free(status_str); + vir_wmem_free(type_str); =20 if (tree) { gint *hf_proc; --=20 2.49.1 From nobody Tue Oct 28 08:17:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1760424235; cv=none; d=zohomail.com; s=zohoarc; b=nClcTqILWWdDlPiq6NsHnDpoJFsiJXjqIWCC09VjhmOuR+jeer4aM+G/vptSDDqahO2CBi2pgIxz7TbmnEeagNxqtHP5irBU/9kmjzKPH1S3Yc2Ee//t7UiHXjpYJFIiHhsVxeEqkYnpjvv4oTji6hWav4CuCZu6qjI+hranbsM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1760424235; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=Ns5x0MXy/XGF2IIPnaoPNWQyg8AAFWzKlQg8heDSkc8=; b=MfJxiVaynmZsBQhZoHjm6yyOrj7mgl41YB8EvzCGE32BDn9znXCGX4tPvNrCgTuEtasoz0uIhiisjc/QNxllr9shm5jQMi0d56yyhUoBIS83S8nP0tgDqbmUvzE7u19quUudZfBsZ3QnIX64hdtpOGe5oyPq1J9QVcJZBluzIgY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1760424235431739.1501967664066; Mon, 13 Oct 2025 23:43:55 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7D7E8442B1; Tue, 14 Oct 2025 02:43:54 -0400 (EDT) Received: from [172.19.199.20] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 3007844830; Tue, 14 Oct 2025 02:37:46 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9318644252; Tue, 14 Oct 2025 02:32:05 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 084C641B73 for ; Tue, 14 Oct 2025 02:32:04 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-283-jCeZIsGWPEmWOgIRQ7ACng-1; Tue, 14 Oct 2025 02:32:02 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 849EF1956096 for ; Tue, 14 Oct 2025 06:32:01 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B0D5230002D0 for ; Tue, 14 Oct 2025 06:32:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1760423523; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ns5x0MXy/XGF2IIPnaoPNWQyg8AAFWzKlQg8heDSkc8=; b=SYU6vv0A9F+tRN5ag0voxC5Uk82m0uMV1egZVXoTABc161a2ou+UYaz3+Edylz4uY/gSxb hPSWyh1yTc0sc3ZF9FqBF6iDB6P7RzmWAfCZ+XT8zrGpaQzMEK59hPGbqLYSwwZ7YmsQUX 2Xzgv2wTL/RPCcubR1M3WuUhct96eYs= X-MC-Unique: jCeZIsGWPEmWOgIRQ7ACng-1 X-Mimecast-MFC-AGG-ID: jCeZIsGWPEmWOgIRQ7ACng_1760423521 To: devel@lists.libvirt.org Subject: [PATCH 8/8] wireshark: Adapt to wireshark-4.6.0 Date: Tue, 14 Oct 2025 08:31:47 +0200 Message-ID: <8ed2f303d6a267202908656ec2b51965a788dc85.1760423277.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: iL77AzOnVGJGtqJfql-d4W-4sV8RrHX0YK1lqa4ubT0_1760423521 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: RW363HFT2VZUIBSKP7DBNY5ZFE5DUJJ3 X-Message-ID-Hash: RW363HFT2VZUIBSKP7DBNY5ZFE5DUJJ3 X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1760424236125158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik The main difference is that wmem_packet_scope() is gone [1] but the packet_info struct has 'pool` member which points to the allocator used for given packet. Unfortunately, while we were given pointer to packet_info at the entry level to our dissector (dissect_libvirt() -> tcp_dissect_pdus() -> dissect_libvirt_message()) it was never propagated to generated/primitive dissectors. But not all dissectors need to allocate memory, so mark the new argument as unused. And while our generator could be rewritten so that the argument is annotated as unused iff it's really unused, I couldn't bother rewriting it. It's generated code after all. Too much work for little gain. Another significant change is that val_to_str() now requires new argument: pointer to allocator to use because it always allocates new memory [2][3]. 1: https://gitlab.com/wireshark/wireshark/-/commit/5ca5c9ca372e06881b23ba9f= 4fdcb6b479886444 2: https://gitlab.com/wireshark/wireshark/-/commit/b63599762468e4cf1783419a= 5556377604d344bb 3: https://gitlab.com/wireshark/wireshark/-/commit/84799be215313e61b83a3eaf= 074f89d6ee349b8c Resolves: https://gitlab.com/libvirt/libvirt/-/issues/823 Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- tools/wireshark/src/packet-libvirt.c | 157 +++++++++++++++++++-------- tools/wireshark/util/genxdrstub.pl | 18 +-- 2 files changed, 119 insertions(+), 56 deletions(-) diff --git a/tools/wireshark/src/packet-libvirt.c b/tools/wireshark/src/pac= ket-libvirt.c index 3178ac6f27..c5c8fb4756 100644 --- a/tools/wireshark/src/packet-libvirt.c +++ b/tools/wireshark/src/packet-libvirt.c @@ -63,7 +63,7 @@ static gint ett_libvirt_stream_hole =3D -1; =20 #define XDR_PRIMITIVE_DISSECTOR(xtype, ctype, ftype) \ static gboolean \ - dissect_xdr_##xtype(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf= ) \ + dissect_xdr_##xtype(tvbuff_t *tvb, packet_info *pinfo G_GNUC_UNUSED, p= roto_tree *tree, XDR *xdrs, int hf) \ { \ goffset start; \ ctype val; \ @@ -93,7 +93,7 @@ XDR_PRIMITIVE_DISSECTOR(bool, bool_t, boolean) =20 VIR_WARNINGS_RESET =20 -typedef gboolean (*vir_xdr_dissector_t)(tvbuff_t *tvb, proto_tree *tree, X= DR *xdrs, int hf); +typedef gboolean (*vir_xdr_dissector_t)(tvbuff_t *tvb, packet_info *pinfo,= proto_tree *tree, XDR *xdrs, int hf); =20 typedef struct vir_dissector_index vir_dissector_index_t; struct vir_dissector_index { @@ -146,22 +146,32 @@ static const value_string status_strings[] =3D { }; =20 static char * -G_GNUC_PRINTF(3, 0) -vir_val_to_str(const uint32_t val, +G_GNUC_PRINTF(4, 0) +vir_val_to_str(packet_info *pinfo, + const uint32_t val, const value_string *vs, const char *fmt) { - return val_to_str_wmem(wmem_packet_scope(), val, vs, fmt); +#if WIRESHARK_VERSION < 4006000 + return val_to_str_wmem(pinfo->pool, val, vs, fmt); +#else + return val_to_str(pinfo->pool, val, vs, fmt); +#endif } =20 static void -vir_wmem_free(void *ptr) +vir_wmem_free(packet_info *pinfo, + void *ptr) { - wmem_free(wmem_packet_scope(), ptr); + wmem_free(pinfo->pool, ptr); } =20 static gboolean -dissect_xdr_string(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, +dissect_xdr_string(tvbuff_t *tvb, + packet_info *pinfo G_GNUC_UNUSED, + proto_tree *tree, + XDR *xdrs, + int hf, guint32 maxlen) { goffset start; @@ -179,7 +189,11 @@ dissect_xdr_string(tvbuff_t *tvb, proto_tree *tree, XD= R *xdrs, int hf, } =20 static gboolean -dissect_xdr_opaque(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, +dissect_xdr_opaque(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + XDR *xdrs, + int hf, guint32 size) { goffset start; @@ -190,7 +204,7 @@ dissect_xdr_opaque(tvbuff_t *tvb, proto_tree *tree, XDR= *xdrs, int hf, start =3D xdr_getpos(xdrs); if ((rc =3D xdr_opaque(xdrs, (caddr_t)val, size))) { gint len =3D xdr_getpos(xdrs) - start; - const char *s =3D tvb_bytes_to_str(wmem_packet_scope(), tvb, start= , len); + const char *s =3D tvb_bytes_to_str(pinfo->pool, tvb, start, len); =20 proto_tree_add_bytes_format_value(tree, hf, tvb, start, len, NULL,= "%s", s); } else { @@ -202,7 +216,11 @@ dissect_xdr_opaque(tvbuff_t *tvb, proto_tree *tree, XD= R *xdrs, int hf, } =20 static gboolean -dissect_xdr_bytes(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, +dissect_xdr_bytes(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + XDR *xdrs, + int hf, guint32 maxlen) { goffset start; @@ -212,7 +230,7 @@ dissect_xdr_bytes(tvbuff_t *tvb, proto_tree *tree, XDR = *xdrs, int hf, start =3D xdr_getpos(xdrs); if (xdr_bytes(xdrs, (char **)&val, &length, maxlen)) { gint len =3D xdr_getpos(xdrs) - start; - const char *s =3D tvb_bytes_to_str(wmem_packet_scope(), tvb, start= , len); + const char *s =3D tvb_bytes_to_str(pinfo->pool, tvb, start, len); =20 proto_tree_add_bytes_format_value(tree, hf, tvb, start, len, NULL,= "%s", s); free(val); @@ -224,7 +242,11 @@ dissect_xdr_bytes(tvbuff_t *tvb, proto_tree *tree, XDR= *xdrs, int hf, } =20 static gboolean -dissect_xdr_pointer(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, +dissect_xdr_pointer(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + XDR *xdrs, + int hf, vir_xdr_dissector_t dissect) { goffset start; @@ -236,7 +258,7 @@ dissect_xdr_pointer(tvbuff_t *tvb, proto_tree *tree, XD= R *xdrs, int hf, return FALSE; } if (not_null) { - return dissect(tvb, tree, xdrs, hf); + return dissect(tvb, pinfo, tree, xdrs, hf); } else { proto_item *ti; ti =3D proto_tree_add_item(tree, hf, tvb, start, xdr_getpos(xdrs) = - start, ENC_NA); @@ -246,15 +268,22 @@ dissect_xdr_pointer(tvbuff_t *tvb, proto_tree *tree, = XDR *xdrs, int hf, } =20 static gboolean -dissect_xdr_iterable(tvbuff_t *tvb, proto_item *ti, XDR *xdrs, gint ett, i= nt rhf, - guint32 length, vir_xdr_dissector_t dissect, goffset = start) +dissect_xdr_iterable(tvbuff_t *tvb, + packet_info *pinfo, + proto_item *ti, + XDR *xdrs, + gint ett, + int rhf, + guint32 length, + vir_xdr_dissector_t dissect, + goffset start) { proto_tree *tree; guint32 i; =20 tree =3D proto_item_add_subtree(ti, ett); for (i =3D 0; i < length; i++) { - if (!dissect(tvb, tree, xdrs, rhf)) + if (!dissect(tvb, pinfo, tree, xdrs, rhf)) return FALSE; } proto_item_set_len(ti, xdr_getpos(xdrs) - start); @@ -262,8 +291,16 @@ dissect_xdr_iterable(tvbuff_t *tvb, proto_item *ti, XD= R *xdrs, gint ett, int rhf } =20 static gboolean -dissect_xdr_vector(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, gin= t ett, - int rhf, const gchar *rtype, guint32 size, vir_xdr_diss= ector_t dissect) +dissect_xdr_vector(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + XDR *xdrs, + int hf, + gint ett, + int rhf, + const gchar *rtype, + guint32 size, + vir_xdr_dissector_t dissect) { goffset start; proto_item *ti; @@ -271,12 +308,20 @@ dissect_xdr_vector(tvbuff_t *tvb, proto_tree *tree, X= DR *xdrs, int hf, gint ett, start =3D xdr_getpos(xdrs); ti =3D proto_tree_add_item(tree, hf, tvb, start, -1, ENC_NA); proto_item_append_text(ti, " :: %s[%u]", rtype, size); - return dissect_xdr_iterable(tvb, ti, xdrs, ett, rhf, size, dissect, st= art); + return dissect_xdr_iterable(tvb, pinfo, ti, xdrs, ett, rhf, size, diss= ect, start); } =20 static gboolean -dissect_xdr_array(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf, gint= ett, - int rhf, const gchar *rtype, guint32 maxlen, vir_xdr_dis= sector_t dissect) +dissect_xdr_array(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + XDR *xdrs, + int hf, + gint ett, + int rhf, + const gchar *rtype, + guint32 maxlen, + vir_xdr_dissector_t dissect) { goffset start; proto_item *ti; @@ -291,7 +336,7 @@ dissect_xdr_array(tvbuff_t *tvb, proto_tree *tree, XDR = *xdrs, int hf, gint ett, =20 ti =3D proto_tree_add_item(tree, hf, tvb, start, -1, ENC_NA); proto_item_append_text(ti, " :: %s<%u>", rtype, length); - return dissect_xdr_iterable(tvb, ti, xdrs, ett, rhf, length, dissect, = start); + return dissect_xdr_iterable(tvb, pinfo, ti, xdrs, ett, rhf, length, di= ssect, start); } =20 static vir_xdr_dissector_t @@ -340,7 +385,10 @@ find_payload_dissector(int32_t proc, } =20 static void -dissect_libvirt_stream(tvbuff_t *tvb, proto_tree *tree, gint payload_lengt= h) +dissect_libvirt_stream(tvbuff_t *tvb, + packet_info *pinfo G_GNUC_UNUSED, + proto_tree *tree, + gint payload_length) { proto_tree_add_item(tree, hf_libvirt_stream, tvb, VIR_HEADER_LEN, payload_length - VIR_HEADER_LEN, ENC_NA); @@ -357,6 +405,7 @@ dissect_libvirt_num_of_fds(tvbuff_t *tvb, proto_tree *t= ree) =20 static void dissect_libvirt_fds(tvbuff_t *tvb G_GNUC_UNUSED, + packet_info *pinfo G_GNUC_UNUSED, gint start G_GNUC_UNUSED, gint32 nfds G_GNUC_UNUSED) { @@ -364,8 +413,12 @@ dissect_libvirt_fds(tvbuff_t *tvb G_GNUC_UNUSED, } =20 static void -dissect_libvirt_payload_xdr_data(tvbuff_t *tvb, proto_tree *tree, gint pay= load_length, - gint32 status, vir_xdr_dissector_t dissec= t) +dissect_libvirt_payload_xdr_data(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + gint payload_length, + gint32 status, + vir_xdr_dissector_t dissect) { gint32 nfds =3D 0; gint start =3D VIR_HEADER_LEN; @@ -384,17 +437,21 @@ dissect_libvirt_payload_xdr_data(tvbuff_t *tvb, proto= _tree *tree, gint payload_l payload_data =3D (caddr_t)tvb_memdup(NULL, payload_tvb, 0, payload_len= gth); xdrmem_create(&xdrs, payload_data, payload_length, XDR_DECODE); =20 - dissect(payload_tvb, tree, &xdrs, -1); + dissect(payload_tvb, pinfo, tree, &xdrs, -1); =20 xdr_destroy(&xdrs); g_free(payload_data); =20 if (nfds !=3D 0) - dissect_libvirt_fds(tvb, start + payload_length, nfds); + dissect_libvirt_fds(tvb, pinfo, start + payload_length, nfds); } =20 static gboolean -dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tree, XDR *xdrs, int hf) +dissect_xdr_stream_hole(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + XDR *xdrs, + int hf) { goffset start; proto_item *ti; @@ -411,10 +468,10 @@ dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tr= ee, XDR *xdrs, int hf) tree =3D proto_item_add_subtree(ti, ett_libvirt_stream_hole); =20 hf =3D hf_libvirt_stream_hole_length; - if (!dissect_xdr_hyper(tvb, tree, xdrs, hf)) return FALSE; + if (!dissect_xdr_hyper(tvb, pinfo, tree, xdrs, hf)) return FALSE; =20 hf =3D hf_libvirt_stream_hole_flags; - if (!dissect_xdr_u_int(tvb, tree, xdrs, hf)) return FALSE; + if (!dissect_xdr_u_int(tvb, pinfo, tree, xdrs, hf)) return FALSE; =20 proto_item_set_len(ti, xdr_getpos(xdrs) - start); return TRUE; @@ -424,6 +481,7 @@ dissect_xdr_stream_hole(tvbuff_t *tvb, proto_tree *tree= , XDR *xdrs, int hf) =20 static void dissect_libvirt_payload(tvbuff_t *tvb, + packet_info *pinfo, proto_tree *tree, uint32_t prog, int32_t proc, @@ -447,13 +505,13 @@ dissect_libvirt_payload(tvbuff_t *tvb, xd =3D find_payload_dissector(proc, type, pds, *len); if (xd =3D=3D NULL) goto unknown; - dissect_libvirt_payload_xdr_data(tvb, tree, payload_length, status= , xd); + dissect_libvirt_payload_xdr_data(tvb, pinfo, tree, payload_length,= status, xd); } else if (status =3D=3D VIR_NET_ERROR) { - dissect_libvirt_payload_xdr_data(tvb, tree, payload_length, status= , dissect_xdr_remote_error); + dissect_libvirt_payload_xdr_data(tvb, pinfo, tree, payload_length,= status, dissect_xdr_remote_error); } else if (type =3D=3D VIR_NET_STREAM) { /* implicitly, status =3D=3D = VIR_NET_CONTINUE */ - dissect_libvirt_stream(tvb, tree, payload_length); + dissect_libvirt_stream(tvb, pinfo, tree, payload_length); } else if (type =3D=3D VIR_NET_STREAM_HOLE) { - dissect_libvirt_payload_xdr_data(tvb, tree, payload_length, status= , dissect_xdr_stream_hole); + dissect_libvirt_payload_xdr_data(tvb, pinfo, tree, payload_length,= status, dissect_xdr_stream_hole); } else { goto unknown; } @@ -489,21 +547,21 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *p= info, proto_tree *tree, serial =3D tvb_get_ntohl(tvb, offset); offset +=3D 4; status =3D tvb_get_ntohil(tvb, offset); offset +=3D 4; =20 - prog_str =3D vir_val_to_str(prog, program_strings, "%x"); + prog_str =3D vir_val_to_str(pinfo, prog, program_strings, "%x"); col_add_fstr(pinfo->cinfo, COL_INFO, "Prog=3D%s", prog_str); - vir_wmem_free(prog_str); + vir_wmem_free(pinfo, prog_str); =20 vs =3D get_program_data(prog, VIR_PROGRAM_PROCSTRINGS); - proc_str =3D vir_val_to_str(proc, vs, "%d"); + proc_str =3D vir_val_to_str(pinfo, proc, vs, "%d"); col_append_fstr(pinfo->cinfo, COL_INFO, " Proc=3D%s", proc_str); - vir_wmem_free(proc_str); + vir_wmem_free(pinfo, proc_str); =20 - type_str =3D vir_val_to_str(type, type_strings, "%d"); - status_str =3D vir_val_to_str(status, status_strings, "%d"); + type_str =3D vir_val_to_str(pinfo, type, type_strings, "%d"); + status_str =3D vir_val_to_str(pinfo, status, status_strings, "%d"); col_append_fstr(pinfo->cinfo, COL_INFO, " Type=3D%s Serial=3D%u Status= =3D%s", type_str, serial, status_str); - vir_wmem_free(status_str); - vir_wmem_free(type_str); + vir_wmem_free(pinfo, status_str); + vir_wmem_free(pinfo, type_str); =20 if (tree) { gint *hf_proc; @@ -532,21 +590,26 @@ dissect_libvirt_message(tvbuff_t *tvb, packet_info *p= info, proto_tree *tree, proto_tree_add_item(libvirt_tree, hf_libvirt_status, tvb, offset,= 4, ENC_NA); offset +=3D 4; =20 /* Dissect payload remaining */ - dissect_libvirt_payload(tvb, libvirt_tree, prog, proc, type, statu= s); + dissect_libvirt_payload(tvb, pinfo, libvirt_tree, prog, proc, type= , status); } =20 return 0; } =20 static guint -get_message_len(packet_info *pinfo G_GNUC_UNUSED, tvbuff_t *tvb, int offse= t, void *data G_GNUC_UNUSED) +get_message_len(packet_info *pinfo G_GNUC_UNUSED, + tvbuff_t *tvb, + int offset, + void *data G_GNUC_UNUSED) { return tvb_get_ntohl(tvb, offset); } =20 static int -dissect_libvirt(tvbuff_t *tvb, packet_info *pinfo, - proto_tree *tree, void *data G_GNUC_UNUSED) +dissect_libvirt(tvbuff_t *tvb, + packet_info *pinfo, + proto_tree *tree, + void *data G_GNUC_UNUSED) { /* Another magic const - 4; simply, how much bytes * is needed to tell the length of libvirt packet. */ diff --git a/tools/wireshark/util/genxdrstub.pl b/tools/wireshark/util/genx= drstub.pl index 01b663a88c..f69695c091 100755 --- a/tools/wireshark/util/genxdrstub.pl +++ b/tools/wireshark/util/genxdrstub.pl @@ -250,7 +250,7 @@ sub xdr_type { sub render_caller { my ($self, $hfid) =3D @_; my $name =3D $c->rinc( 'dissect_xdr_'.($self->idstrip || lc($self->xdr= _type)) ); - "$name(tvb, tree, xdrs, hf)"; + "$name(tvb, pinfo, tree, xdrs, hf)"; } =20 sub ft_type { @@ -345,7 +345,7 @@ BEGIN{::register_profile( sub render_caller { my ($self) =3D @_; my ($klass) =3D ref($self) =3D~ /([^:]+)$/; - sprintf '%s(tvb, tree, xdrs, hf, %s)', + sprintf '%s(tvb, pinfo, tree, xdrs, hf, %s)', $c->rinc('dissect_xdr_'.lc($klass)), $c->rinc('dissect_xdr_'.$self->reftype->idstrip); } @@ -359,7 +359,7 @@ BEGIN{::register_profile( sub render_caller { my ($self, $hfid) =3D @_; my ($klass) =3D ref($self) =3D~ /([^:]+)$/; - sprintf '%s(tvb, tree, xdrs, hf, %s)', + sprintf '%s(tvb, pinfo, tree, xdrs, hf, %s)', $c->rinc('dissect_xdr_'.lc($klass)), $self->length || '~0'; } =20 @@ -447,7 +447,7 @@ BEGIN{::register_profile( sub render_caller { my ($self, $hfid) =3D @_; my ($pname) =3D reverse split /__/, $hfid; - sprintf 'dissect_xdr_array(tvb, tree, xdrs, hf, %s, %s, "%s", %s, %s)', + sprintf 'dissect_xdr_array(tvb, pinfo, tree, xdrs, hf, %s, %s, "%s", %= s, %s)', $c->rinc('ett_'.$self->idstrip), $c->rinc("hf_$hfid\__$pname"), $self->reftype->idstrip, @@ -476,7 +476,7 @@ BEGIN{::register_profile( sub render_caller { my ($self, $hfid) =3D @_; my ($pname) =3D reverse split /__/, $hfid; - sprintf 'dissect_xdr_vector(tvb, tree, xdrs, hf, %s, %s, "%s", %s, %s)= ', + sprintf 'dissect_xdr_vector(tvb, pinfo, tree, xdrs, hf, %s, %s, "%s", = %s, %s)', $c->rinc('ett_'.$self->idstrip), $c->rinc("hf_$hfid\__$pname"), $self->reftype->idstrip, @@ -857,7 +857,7 @@ __END__<is_primitive; %> -static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, proto_tree *tre= e, XDR *xdrs, int hf) +static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, packet_info *pi= nfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) { return <%=3D $self->dealias->render_caller($self->ident eq $ident ? un= def : $ident) %>; } @@ -865,7 +865,7 @@ static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *t= vb, proto_tree *tree, XDR * <% my ($self, $ident) =3D @_; my $hfvar =3D $c->rinc('hf_'.$self->idstrip); %> -static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, proto_tree *tre= e, XDR *xdrs, int hf) +static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, packet_info *pi= nfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) { goffset start; proto_item *ti; @@ -890,7 +890,7 @@ static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *t= vb, proto_tree *tree, XDR * } @@ Sym::Type::Enum#render_dissector <% my ($self, $ident) =3D @_; %> -static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, proto_tree *tre= e, XDR *xdrs, int hf) +static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, packet_info *pi= nfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) { goffset start; enum { DUMMY } es; @@ -914,7 +914,7 @@ static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *t= vb, proto_tree *tree, XDR * my ($self, $ident) =3D @_; my $decl_type =3D $self->decl->type->idstrip; %> -static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, proto_tree *tre= e, XDR *xdrs, int hf) +static gboolean dissect_xdr_<%=3D $ident %>(tvbuff_t *tvb, packet_info *pi= nfo G_GNUC_UNUSED, proto_tree *tree, XDR *xdrs, int hf) { gboolean rc =3D TRUE; goffset start; --=20 2.49.1