From nobody Mon Feb 9 10:48:35 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120437; cv=none; d=zohomail.com; s=zohoarc; b=gpOkuEoLEXjZwugNgV1gokSO87Bx1/9nr1q1+AcoYKZfNmaRTVtLXudb1cmEPo8p+ZTgP7pW58xL21C+RkudYmDls5ER+zlCklY08pGKlNK6XajVBzC0/2++f3kdfSN+ZjdLqA0xAFGNxewwuIZ7ZZ/XtZ5M8R4hJ8z4K/PLNP0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120437; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=ZJCpRJlckAswcLQAoN0w3YLH8y1NO/+R7LXhaTVr5wI=; b=ExhP4gcYAV8O24ZJfFTEHP86v6Tzscohq6rnYAs6ytztoPQhohYR8s0oasr2XAVI505MW8IKeUnK+QipDdG/U8C5kpsqIehbR+xZ50cfsONz2BHjRQKw6xHdN9ZBCgrE8u7hmh/M70pqlt19y/UYXo4ptsmNZUAG6N8/uvxnpkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120437527237.03286205923814; Wed, 25 Mar 2020 00:13:57 -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-186-omZak8moMxOccsTo-4mfTQ-1; Wed, 25 Mar 2020 03:13:53 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9E8988010CA; Wed, 25 Mar 2020 07:13:48 +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 79B94A0A7A; Wed, 25 Mar 2020 07:13:48 +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 306FB8A049; Wed, 25 Mar 2020 07:13:48 +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 02P7CZB5024009 for ; Wed, 25 Mar 2020 03:12:35 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2BED12166B2A; Wed, 25 Mar 2020 07:12:35 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 27F0F2166B2C for ; Wed, 25 Mar 2020 07:12:32 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (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 C4F1C101A55E for ; Wed, 25 Mar 2020 07:12:32 +0000 (UTC) Received: from mail-m24147.qiye.163.com (mail-m24147.qiye.163.com [220.194.24.147]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-235-u6o_-9YVOM-pOUrF_SseIA-1; Wed, 25 Mar 2020 03:12:28 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S20; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120436; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc: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=ZJCpRJlckAswcLQAoN0w3YLH8y1NO/+R7LXhaTVr5wI=; b=h5cxNWcgp6Fum4+tim8XEEUSF/O1xz0kPN9a0jVdBZLCiITxZcyuDJfwygIGAFNdocsND5 tNww7NteubHDrmWdmaKeQrdAdvYbMtwXTcUxStrg9sqpuAtc94GAnUxlwHLtPzdiYn0apM USQz1aiZb+elb5kqSUNCHmWwBH30Hzs= X-MC-Unique: omZak8moMxOccsTo-4mfTQ-1 X-MC-Unique: u6o_-9YVOM-pOUrF_SseIA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 18/29] conf: Replace virNetworkDNSSrvDefParseXML(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:58 +0800 Message-Id: <20200325071209.20841-19-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S20 X-Coremail-Antispam: 1Uf129KBjvJXoW3JFy7KFy5ZF48CFW3AF4rGrg_yoWxGr15pF s5Jas7GrW8GF43KrWjkrn5Cw15ur1kJr45C3s3ua4Ik345Xwn3GF4xZFyvg398Cr90yr4a yFyavws8Wr4DXaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pEX_TUUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbibBXxT1lZvBKfSwAAs9 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 02P7CZB5024009 X-loop: libvir-list@redhat.com 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.11 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 100 ++++++--------------------------------- 2 files changed, 15 insertions(+), 86 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 14561d9..4caea02 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -304,6 +304,7 @@ "structure": {"output": "src/conf/network_conf"}, "clearfunc": {"output": "src/conf/network_conf"}, "parsefunc": { + "output": "src/conf/network_conf", "post": true, "args.instname": true, "args": [ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 3913cb4..0469f03 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -229,7 +229,7 @@ virNetworkDefFree(virNetworkDefPtr def) "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" \ "_-+/*" =20 -static int +int virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, virNetworkDNSSrvDefPtr def, xmlXPathContextPtr ctxt G_GNUC_UNUSED, @@ -239,9 +239,9 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_GN= UC_UNUSED, const char *protocolStr G_GNUC_UNUSED, const char *domainStr G_GNUC_UNUSED, const char *targetStr G_GNUC_UNUSED, - bool has_port, - bool has_priority, - bool has_weight) + const char *portStr, + const char *priorityStr, + const char *weightStr) { if (!def->service && !partialOkay) { virReportError(VIR_ERR_XML_DETAIL, @@ -282,14 +282,14 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, return -1; } =20 - if (has_port && !def->target) { + if (portStr && !def->target) { virReportError(VIR_ERR_XML_DETAIL, _("DNS SRV port attribute not permitted without " "target for service '%s' in network '%s'"), def->service, networkName); return -1; } - if (has_port && (def->port < 1 || def->port > 65535)) { + if (portStr && (def->port < 1 || def->port > 65535)) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV port attribute " "for service '%s' in network '%s'"), @@ -297,14 +297,14 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, return -1; } =20 - if (has_priority && !def->target) { + if (priorityStr && !def->target) { virReportError(VIR_ERR_XML_DETAIL, _("DNS SRV priority attribute not permitted without= " "target for service '%s' in network '%s'"), def->service, networkName); return -1; } - if (has_priority && def->priority > 65535) { + if (priorityStr && def->priority > 65535) { virReportError(VIR_ERR_XML_DETAIL, _("Invalid DNS SRV priority attribute " "for service '%s' in network '%s'"), @@ -312,14 +312,14 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, return -1; } =20 - if (has_weight && !def->target) { + if (weightStr && !def->target) { virReportError(VIR_ERR_XML_DETAIL, _("DNS SRV weight attribute not permitted without " "target for service '%s' in network '%s'"), def->service, networkName); return -1; } - if (has_weight && def->weight > 65535) { + if (weightStr && def->weight > 65535) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV weight attribute " "for service '%s' in network '%s'"), @@ -711,79 +711,6 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, } =20 =20 -/* virNetworkDNSSrvDefParseXML will be replaced by generated namesake */ -static int -virNetworkDNSSrvDefParseXML(const char *networkName, - xmlNodePtr node, - xmlXPathContextPtr ctxt, - virNetworkDNSSrvDefPtr def, - bool partialOkay) -{ - int ret; - bool has_port =3D false; - bool has_priority =3D false; - bool has_weight =3D false; - xmlNodePtr save_ctxt =3D ctxt->node; - ctxt->node =3D node; - - def->service =3D virXMLPropString(node, "service"); - def->protocol =3D virXMLPropString(node, "protocol"); - - /* Following attributes are optional */ - def->domain =3D virXMLPropString(node, "domain"); - def->target =3D virXMLPropString(node, "target"); - - ret =3D virXPathUInt("string(./@port)", ctxt, &def->port); - if (ret >=3D 0) { - has_port =3D true; - } else if (ret =3D=3D -2) { - virReportError(VIR_ERR_XML_DETAIL, - _("invalid DNS SRV port attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - - ret =3D virXPathUInt("string(./@priority)", ctxt, &def->priority); - if (ret >=3D 0) { - has_priority =3D true; - } else if (ret =3D=3D -2) { - virReportError(VIR_ERR_XML_DETAIL, - _("Invalid DNS SRV priority attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - - ret =3D virXPathUInt("string(./@weight)", ctxt, &def->weight); - if (ret >=3D 0) { - has_weight =3D true; - } else if (ret =3D=3D -2) { - virReportError(VIR_ERR_XML_DETAIL, - _("invalid DNS SRV weight attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - - if (virNetworkDNSSrvDefParseXMLPost(node, def, ctxt, - networkName, partialOkay, - def->service, def->protocol, - def->domain, def->target, - has_port, has_priority, - has_weight) < 0) - goto error; - - ctxt->node =3D save_ctxt; - return 0; - - error: - virNetworkDNSSrvDefClear(def); - ctxt->node =3D save_ctxt; - return -1; -} - - static int virNetworkDNSTxtDefParseXML(const char *networkName, xmlNodePtr node, @@ -937,8 +864,9 @@ virNetworkDNSDefParseXML(const char *networkName, goto cleanup; =20 for (i =3D 0; i < nsrvs; i++) { - if (virNetworkDNSSrvDefParseXML(networkName, srvNodes[i], ctxt, - &def->srvs[def->nsrvs], false)= < 0) { + if (virNetworkDNSSrvDefParseXML(srvNodes[i], + &def->srvs[def->nsrvs], ctxt, + networkName, false) < 0) { goto cleanup; } def->nsrvs++; @@ -3478,7 +3406,7 @@ virNetworkDefUpdateDNSSrv(virNetworkDefPtr def, if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "srv") < 0) goto cleanup; =20 - if (virNetworkDNSSrvDefParseXML(def->name, ctxt->node, ctxt, &srv, !is= Add) < 0) + if (virNetworkDNSSrvDefParseXML(ctxt->node, &srv, ctxt, def->name, !is= Add) < 0) goto cleanup; =20 for (i =3D 0; i < dns->nsrvs; i++) { --=20 2.17.1