From nobody Fri Dec 19 20:15:32 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) client-ip=207.211.31.120; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1587477053; cv=none; d=zohomail.com; s=zohoarc; b=e5YGbjl2EHHgyt9EOSoIriM4jaFounTBVZj0Gxr9QccHTlpqRcueOwn62/l1S4KQdSeDjmStC8wKwWE+yqwH/mohNOosDoh3yLBNj2vccQOuPJiVGif3klQpDLasNpg6UIa1Y84yf5B8KAkECf3AOF1flcECmclPaEYBXrkOa8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1587477053; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4iE4Y2YaGz2YZX70h4gSMscRzc/S7dAO9HSBazStZOw=; b=fqMVHTEyFd+ndIi75+2eS7Arjm4OL5wbSqmnFO5kDYZUCp+GgWrXDRgKRNJi8Ip3CDWj9QM8hK7wg1T+fzYvqdXX+39RliiPIqt0W7LlITxEhTfabkDw6yx4OURBZoFriyxi8lieOof5OEIMt/youhWyB6tGylEJDwfeuqt/ksw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by mx.zohomail.com with SMTPS id 1587477053749459.59768473696477; Tue, 21 Apr 2020 06:50:53 -0700 (PDT) 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-259-NN4z47-5P7mSwEHgchdjEw-1; Tue, 21 Apr 2020 09:50:50 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1F1EE1B2C98C; Tue, 21 Apr 2020 13:50:44 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E07385DA7C; Tue, 21 Apr 2020 13:50:43 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 3AB50941AF; Tue, 21 Apr 2020 13:50:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 03LDoNLd003380 for ; Tue, 21 Apr 2020 09:50:23 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1786C2166B29; Tue, 21 Apr 2020 13:50:23 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 135A62166B27 for ; Tue, 21 Apr 2020 13:50:23 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id DD7F98FF66C for ; Tue, 21 Apr 2020 13:50:22 +0000 (UTC) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-509-geHHAvTIODabO9Mj1xqwvA-1; Tue, 21 Apr 2020 09:50:15 -0400 Received: by mail-wm1-f67.google.com with SMTP id y24so3756144wma.4 for ; Tue, 21 Apr 2020 06:50:15 -0700 (PDT) Received: from localhost.localdomain (public-gprs377075.centertel.pl. [37.47.104.52]) by smtp.gmail.com with ESMTPSA id q10sm3981826wrv.95.2020.04.21.06.50.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Apr 2020 06:50:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587477052; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=4iE4Y2YaGz2YZX70h4gSMscRzc/S7dAO9HSBazStZOw=; b=giOxNP+WPMr5OAHdkiytOt5qr9jvvZPLExMrkYYmlw2rUly6QPnM+iLoHjWz+hR3bOP3kk URt2nYOd+6wggm5IVBHUvsjS1vlx5CZkcpPxtVjJS/jIJTClv6ZCCwXGKL/xFuM4HowrZ0 8y+RI5lPmETDW6BuXhlVsm93qhJ/FmM= X-MC-Unique: NN4z47-5P7mSwEHgchdjEw-1 X-MC-Unique: geHHAvTIODabO9Mj1xqwvA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sy+dlrCunlJq/YNYV5vKXHF/qZXo4fk+AgoEZhup/tc=; b=U+ARlI80NBnJcnVH0cVT9Tn3pmMWgzn0GyHz+KbX/Dq1f+edZr6F1zanmdKH/8xS1g 39u+OAgiupahSm0oNmjSsnzEOvlFER/FCeb0EUg7RZANj1VY2tTmgOcUTKEvKXclFVfr nKr1UkNKjm7GlqabIfBHWT6AZ1Y6z+Ne0wf+M8Q2C5BF1QPhs9F2baHjAAO8c8Gd124C mNyCsFP4KOzsJM+AiK6BnnI57IsVIqBBdFilCpx4TvL8oBqstM0qgAT0a9IyYNBrAv01 XCfer9rdHEPBXTcikZYPpiLkhI4LfgWPhua/Yf1S5Jbz6TyCVyKZJ/6YPkNV4vUJQLS7 CH/w== X-Gm-Message-State: AGi0PuY/B7di6zDbb7ZCrlwVZZLQOj25lhCGnFs0x3ABItUoSJN6dUb+ 967SI0QSWLCEJtBSWjuHByE7mhkbiKQ= X-Google-Smtp-Source: APiQypIE13qRNPm/dvwAj89o2KzMqvjWWDmuafHKDgjt1wrWberdgPNJrD9WQEX4hFjOAtk/r0ewww== X-Received: by 2002:a1c:a7c2:: with SMTP id q185mr5086124wme.42.1587477014061; Tue, 21 Apr 2020 06:50:14 -0700 (PDT) From: Rafael Fonseca To: libvir-list@redhat.com Subject: [PATCH v2 12/40] util: convert dnsmasqCaps to GObject Date: Tue, 21 Apr 2020 15:48:53 +0200 Message-Id: <20200421134921.3717019-13-r4f4rfs@gmail.com> In-Reply-To: <20200421134921.3717019-1-r4f4rfs@gmail.com> References: <20200421134921.3717019-1-r4f4rfs@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 03LDoNLd003380 X-loop: libvir-list@redhat.com Cc: Rafael Fonseca X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Rafael Fonseca --- src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 22 ++++++--------- src/util/virdnsmasq.c | 56 +++++++++++++++++-------------------- src/util/virdnsmasq.h | 6 ++-- tests/networkxml2conftest.c | 10 ++----- 5 files changed, 42 insertions(+), 53 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 33ee7069de..5b6f97bd97 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1939,6 +1939,7 @@ virDevMapperGetTargets; =20 =20 # util/virdnsmasq.h +dnsmasq_caps_get_type; dnsmasqAddDhcpHost; dnsmasqAddHost; dnsmasqCapsGet; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index f06099297a..728d432c4c 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -115,9 +115,10 @@ networkDriverUnlock(virNetworkDriverStatePtr driver) static dnsmasqCapsPtr networkGetDnsmasqCaps(virNetworkDriverStatePtr driver) { - dnsmasqCapsPtr ret; + dnsmasqCapsPtr ret =3D NULL; networkDriverLock(driver); - ret =3D virObjectRef(driver->dnsmasqCaps); + if (driver->dnsmasqCaps) + ret =3D g_object_ref(driver->dnsmasqCaps); networkDriverUnlock(driver); return ret; } @@ -132,7 +133,7 @@ networkDnsmasqCapsRefresh(virNetworkDriverStatePtr driv= er) return -1; =20 networkDriverLock(driver); - virObjectUnref(driver->dnsmasqCaps); + g_clear_object(&driver->dnsmasqCaps); driver->dnsmasqCaps =3D caps; networkDriverUnlock(driver); return 0; @@ -543,7 +544,7 @@ networkUpdateState(virNetworkObjPtr obj, { virNetworkDefPtr def; virNetworkDriverStatePtr driver =3D opaque; - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); virMacMapPtr macmap; char *macMapFile =3D NULL; int ret =3D -1; @@ -629,7 +630,6 @@ networkUpdateState(virNetworkObjPtr obj, ret =3D 0; cleanup: virObjectUnlock(obj); - virObjectUnref(dnsmasq_caps); VIR_FREE(macMapFile); return ret; } @@ -905,7 +905,7 @@ networkStateCleanup(void) VIR_FREE(network_driver->dnsmasqStateDir); VIR_FREE(network_driver->radvdStateDir); =20 - virObjectUnref(network_driver->dnsmasqCaps); + g_clear_object(&network_driver->dnsmasqCaps); =20 virMutexDestroy(&network_driver->lock); =20 @@ -1544,7 +1544,7 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverSta= tePtr driver, dnsmasqContext *dctx) { virNetworkDefPtr def =3D virNetworkObjGetDef(obj); - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); virCommandPtr cmd =3D NULL; int ret =3D -1; char *configfile =3D NULL; @@ -1587,7 +1587,6 @@ networkBuildDhcpDaemonCommandLine(virNetworkDriverSta= tePtr driver, *cmdout =3D cmd; ret =3D 0; cleanup: - virObjectUnref(dnsmasq_caps); VIR_FREE(configfile); VIR_FREE(configstr); VIR_FREE(leaseshelper_path); @@ -1911,7 +1910,7 @@ networkStartRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { virNetworkDefPtr def =3D virNetworkObjGetDef(obj); - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); pid_t radvdPid; char *pidfile =3D NULL; char *radvdpidbase =3D NULL; @@ -1989,7 +1988,6 @@ networkStartRadvd(virNetworkDriverStatePtr driver, =20 ret =3D 0; cleanup: - virObjectUnref(dnsmasq_caps); virCommandFree(cmd); VIR_FREE(configfile); VIR_FREE(radvdpidbase); @@ -2003,14 +2001,13 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, virNetworkObjPtr obj) { virNetworkDefPtr def =3D virNetworkObjGetDef(obj); - dnsmasqCapsPtr dnsmasq_caps =3D networkGetDnsmasqCaps(driver); + g_autoptr(dnsmasqCaps) dnsmasq_caps =3D networkGetDnsmasqCaps(driver); g_autofree char *radvdpidbase =3D NULL; g_autofree char *pidfile =3D NULL; pid_t radvdPid; =20 /* Is dnsmasq handling RA? */ if (DNSMASQ_RA_SUPPORT(dnsmasq_caps)) { - virObjectUnref(dnsmasq_caps); if ((radvdpidbase =3D networkRadvdPidfileBasename(def->name)) && (pidfile =3D virPidFileBuildPath(driver->pidDir, radvdpidbase)= )) { /* radvd should not be running but in case it is */ @@ -2019,7 +2016,6 @@ networkRefreshRadvd(virNetworkDriverStatePtr driver, } return 0; } - virObjectUnref(dnsmasq_caps); =20 /* if there's no running radvd, just start it */ radvdPid =3D virNetworkObjGetRadvdPid(obj); diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c index adc6f96bb6..a8fb22a368 100644 --- a/src/util/virdnsmasq.c +++ b/src/util/virdnsmasq.c @@ -598,7 +598,7 @@ dnsmasqReload(pid_t pid G_GNUC_UNUSED) * */ struct _dnsmasqCaps { - virObject parent; + GObject parent; char *binaryPath; bool noRefresh; time_t mtime; @@ -606,26 +606,31 @@ struct _dnsmasqCaps { unsigned long version; }; =20 -static virClassPtr dnsmasqCapsClass; +G_DEFINE_TYPE(dnsmasqCaps, dnsmasq_caps, G_TYPE_OBJECT); =20 static void -dnsmasqCapsDispose(void *obj) +dnsmasqCapsFinalize(GObject *obj) { - dnsmasqCapsPtr caps =3D obj; + dnsmasqCapsPtr caps =3D DNSMASQ_CAPS(obj); =20 virBitmapFree(caps->flags); VIR_FREE(caps->binaryPath); + + G_OBJECT_CLASS(dnsmasq_caps_parent_class)->finalize(obj); } =20 -static int dnsmasqCapsOnceInit(void) +static void +dnsmasq_caps_init(dnsmasqCaps *caps G_GNUC_UNUSED) { - if (!VIR_CLASS_NEW(dnsmasqCaps, virClassForObject())) - return -1; - - return 0; } =20 -VIR_ONCE_GLOBAL_INIT(dnsmasqCaps); +static void +dnsmasq_caps_class_init(dnsmasqCapsClass *klass) +{ + GObjectClass *obj =3D G_OBJECT_CLASS(klass); + + obj->finalize =3D dnsmasqCapsFinalize; +} =20 static void dnsmasqCapsSet(dnsmasqCapsPtr caps, @@ -764,65 +769,54 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool = force) static dnsmasqCapsPtr dnsmasqCapsNewEmpty(const char *binaryPath) { - dnsmasqCapsPtr caps; - - if (dnsmasqCapsInitialize() < 0) - return NULL; - if (!(caps =3D virObjectNew(dnsmasqCapsClass))) - return NULL; + g_autoptr(dnsmasqCaps) caps =3D + DNSMASQ_CAPS(g_object_new(DNSMASQ_TYPE_CAPS, NULL)); if (!(caps->flags =3D virBitmapNew(DNSMASQ_CAPS_LAST))) - goto error; + return NULL; caps->binaryPath =3D g_strdup(binaryPath ? binaryPath : DNSMASQ); - return caps; - - error: - virObjectUnref(caps); - return NULL; + return g_steal_pointer(&caps); } =20 dnsmasqCapsPtr dnsmasqCapsNewFromBuffer(const char *buf, const char *binaryPath) { - dnsmasqCapsPtr caps =3D dnsmasqCapsNewEmpty(binaryPath); + g_autoptr(dnsmasqCaps) caps =3D dnsmasqCapsNewEmpty(binaryPath); =20 if (!caps) return NULL; =20 if (dnsmasqCapsSetFromBuffer(caps, buf) < 0) { - virObjectUnref(caps); return NULL; } - return caps; + return g_steal_pointer(&caps); } =20 dnsmasqCapsPtr dnsmasqCapsNewFromFile(const char *dataPath, const char *binaryPath) { - dnsmasqCapsPtr caps =3D dnsmasqCapsNewEmpty(binaryPath); + g_autoptr(dnsmasqCaps) caps =3D dnsmasqCapsNewEmpty(binaryPath); =20 if (!caps) return NULL; =20 if (dnsmasqCapsSetFromFile(caps, dataPath) < 0) { - virObjectUnref(caps); return NULL; } - return caps; + return g_steal_pointer(&caps); } =20 dnsmasqCapsPtr dnsmasqCapsNewFromBinary(const char *binaryPath) { - dnsmasqCapsPtr caps =3D dnsmasqCapsNewEmpty(binaryPath); + g_autoptr(dnsmasqCaps) caps =3D dnsmasqCapsNewEmpty(binaryPath); =20 if (!caps) return NULL; =20 if (dnsmasqCapsRefreshInternal(caps, true) < 0) { - virObjectUnref(caps); return NULL; } - return caps; + return g_steal_pointer(&caps); } =20 /** dnsmasqCapsRefresh: diff --git a/src/util/virdnsmasq.h b/src/util/virdnsmasq.h index ff0e56d635..9cbbd5562d 100644 --- a/src/util/virdnsmasq.h +++ b/src/util/virdnsmasq.h @@ -23,7 +23,8 @@ =20 #pragma once =20 -#include "virobject.h" +#include "internal.h" +#include #include "virsocketaddr.h" =20 typedef struct @@ -75,7 +76,8 @@ typedef enum { DNSMASQ_CAPS_LAST, /* this must always be the last item */ } dnsmasqCapsFlags; =20 -typedef struct _dnsmasqCaps dnsmasqCaps; +#define DNSMASQ_TYPE_CAPS dnsmasq_caps_get_type() +G_DECLARE_FINAL_TYPE(dnsmasqCaps, dnsmasq_caps, DNSMASQ, CAPS, GObject); typedef dnsmasqCaps *dnsmasqCapsPtr; =20 =20 diff --git a/tests/networkxml2conftest.c b/tests/networkxml2conftest.c index a8355272b9..ed3a2cf6ae 100644 --- a/tests/networkxml2conftest.c +++ b/tests/networkxml2conftest.c @@ -101,11 +101,11 @@ static int mymain(void) { int ret =3D 0; - dnsmasqCapsPtr restricted + g_autoptr(dnsmasqCaps) restricted =3D dnsmasqCapsNewFromBuffer("Dnsmasq version 2.48", DNSMASQ); - dnsmasqCapsPtr full + g_autoptr(dnsmasqCaps) full =3D dnsmasqCapsNewFromBuffer("Dnsmasq version 2.63\n--bind-dynamic= ", DNSMASQ); - dnsmasqCapsPtr dhcpv6 + g_autoptr(dnsmasqCaps) dhcpv6 =3D dnsmasqCapsNewFromBuffer("Dnsmasq version 2.64\n--bind-dynamic= ", DNSMASQ); =20 #define DO_TEST(xname, xcaps) \ @@ -143,10 +143,6 @@ mymain(void) DO_TEST("ptr-domains-auto", dhcpv6); DO_TEST("dnsmasq-options", dhcpv6); =20 - virObjectUnref(dhcpv6); - virObjectUnref(full); - virObjectUnref(restricted); - return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } =20 --=20 2.25.3