From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752416; cv=none; d=zohomail.com; s=zohoarc; b=T8fG3FZ9kmA84XrtUYdBfy8ZXlkvZ5ztDr6Svuy76GtkwcJZRN4XYPp66QvqIU2ObajmVM0AjM65UAqFRBC35MIApAoRCVQB0lYgecoqVwB4AuJ1kpKmBk7Wn5r98+XYVVATq75ZADI1SpC5MtKIWA2DKUKFpdajK8LfLOXGzvQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752416; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=eDiCRI/D680lVHo64W0BRqMebuht6ea+fDi6micNgJQ=; b=MXw+wzqpN9Oh5IqL5C8e6vDjq2sDEw+s9dH0IjJRs10ZR6U5yxUeaUFM1t6/vW/0zq34CP7DZi/AhsvoXac66ywneFrr3XKylu8szM9KeCAXMtSP7p+x6/Yk0kVYJP2R0wr9RhH4xPJ3a7nMfXrmZapJ9DFKJxQEffmSU3UHi34= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1591752416918806.0825457796766; Tue, 9 Jun 2020 18:26:56 -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-272-YtYtSH3jOlKqi071rmDKcQ-1; Tue, 09 Jun 2020 21:26:52 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B57BE1800D42; Wed, 10 Jun 2020 01:26:47 +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 9266419D61; Wed, 10 Jun 2020 01:26:47 +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 630EEB34AC; Wed, 10 Jun 2020 01:26:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1QTfT027186 for ; Tue, 9 Jun 2020 21:26:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id B88C72026FFE; Wed, 10 Jun 2020 01:26:29 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B3B632026D5D for ; Wed, 10 Jun 2020 01:26:27 +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 EB10C80CDB3 for ; Wed, 10 Jun 2020 01:26:26 +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-33-05eUwP-zNAe8ABBIS9_ZBw-1; Tue, 09 Jun 2020 21:26:23 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S3; Wed, 10 Jun 2020 09:21:11 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752415; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=eDiCRI/D680lVHo64W0BRqMebuht6ea+fDi6micNgJQ=; b=MJ1t91JBmEhz7uJszFF4sJAvMNTKPT9bWAV3Dsk/qrlvaydLdhW4Kdmq+y+hXylMm82wCM hajNVE6FwQIGnKIDWYwx8fdtemeZQI5wo3biAj9RTabIf8uF1PwxakRLf4oAz0zmUOiRUn gWSMy7/Y1sMQtvIxWiuvrLJY3F+SC34= X-MC-Unique: YtYtSH3jOlKqi071rmDKcQ-1 X-MC-Unique: 05eUwP-zNAe8ABBIS9_ZBw-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 01/21] build-aux: Add a tool to generate xml parse/format functions Date: Wed, 10 Jun 2020 09:20:29 +0800 Message-Id: <20200610012049.10774-2-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S3 X-Coremail-Antispam: 1Uf129KBjvAXoWfuF1xuF4DAw17tw1kCw1fXrb_yoWrJw18Ao WSg3WUtrn3Cr1Ygrn5Ka47Wrs8uF98Krs7J34fGryYga1vq3y5W3WrZa1DWa90vr4DAF9Y vr1Iq3s3GF4DAFyfn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTR2g4-UUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiiAg-T1tVg1i3RQAAsX X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.84 on 10.5.11.23 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This tool is used to generate parsexml/formatbuf functions for structs. It is based on libclang and its python-binding. Some directives (such as genparse, xmlattr, etc.) need to be added on the declarations of structs to direct the tool. Signed-off-by: Shi Lei --- build-aux/generator/directive.py | 839 +++++++++++++++++++++++++++++++ build-aux/generator/go | 14 + build-aux/generator/main.py | 416 +++++++++++++++ build-aux/generator/utils.py | 100 ++++ po/POTFILES.in | 1 + 5 files changed, 1370 insertions(+) create mode 100644 build-aux/generator/directive.py create mode 100755 build-aux/generator/go create mode 100755 build-aux/generator/main.py create mode 100644 build-aux/generator/utils.py diff --git a/build-aux/generator/directive.py b/build-aux/generator/directi= ve.py new file mode 100644 index 0000000..c0d3c61 --- /dev/null +++ b/build-aux/generator/directive.py @@ -0,0 +1,839 @@ +# +# Copyright (C) 2020 Shandong Massclouds Co.,Ltd. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see +# . +# + +import json +from collections import OrderedDict +from utils import singleton +from utils import dedup, counterName +from utils import BlockAssembler +from utils import Terms, singleline, indent, render, renderByDict + +BUILTIN_TYPES =3D { + 'Bool': {}, + 'String': {}, + 'Chars': { + 'conv': 'virStrcpyStatic(def->${name}, ${name}Str)' + }, + 'UChars': { + 'conv': 'virStrcpyStatic((char *)def->${name}, ${mdvar})' + }, + 'Int': { + 'fmt': '%d', + 'conv': 'virStrToLong_i(${mdvar}, NULL, 0, &def->${name})' + }, + 'UInt': { + 'fmt': '%u', + 'conv': 'virStrToLong_uip(${mdvar}, NULL, 0, &def->${name})' + }, + 'ULong': { + 'fmt': '%lu', + 'conv': 'virStrToLong_ulp(${mdvar}, NULL, 0, &def->${name})' + }, + 'ULongLong': { + 'fmt': '%llu', + 'conv': 'virStrToLong_ullp(${mdvar}, NULL, 0, &def->${name})' + }, + 'U8': { + 'fmt': '%u', + 'conv': 'virStrToLong_u8p(${mdvar}, NULL, 0, &def->${name})' + }, + 'U32': { + 'fmt': '%u', + 'conv': 'virStrToLong_uip(${mdvar}, NULL, 0, &def->${name})' + }, +} + + +@singleton +class TypeTable(OrderedDict): + def __init__(self): + OrderedDict.__init__(self) + for name, kvs in BUILTIN_TYPES.items(): + kvs['name'] =3D name + kvs['meta'] =3D 'Builtin' + self[name] =3D kvs + + def register(self, kvs): + name =3D kvs['name'] + if name not in self: + self[name] =3D kvs + return name + + def get(self, name): + if name in self: + return self[name] + return {'meta': 'Struct', 'name': name, 'external': True} + + +T_NAMESPACE_PARSE =3D ''' +if (xmlopt) + def->ns =3D xmlopt->ns; +if (def->ns.parse) { + if (virXMLNamespaceRegister(ctxt, &def->ns) < 0) + goto error; + if ((def->ns.parse)(ctxt, &def->namespaceData) < 0) + goto error; +} +''' + +T_NAMESPACE_FORMAT_BEGIN =3D ''' +if (def->namespaceData && def->ns.format) + virXMLNamespaceFormatNS(buf, &def->ns); +''' + +T_NAMESPACE_FORMAT_END =3D ''' +if (def->namespaceData && def->ns.format) { + if ((def->ns.format)(buf, def->namespaceData) < 0) + return -1; +} +''' + +T_CLEAR_FUNC_IMPL =3D ''' +void +${typename}Clear(${typename}Ptr def) +{ + if (!def) + return; + + ${body} +} +''' + +T_CLEAR_FUNC_DECL =3D ''' +void +${typename}Clear(${typename}Ptr def); +''' + + +def clearMember(member): + mtype =3D TypeTable().get(member['type']) + + refname =3D 'def->%s' % member['name'] + if member.get('array'): + refname +=3D '[i]' + + code =3D '' + if mtype['meta'] =3D=3D 'Struct': + if member['pointer'] and not mtype.get('external'): + code =3D '%sClear(%s);' % (mtype['name'], refname) + code +=3D '\nVIR_FREE(%s);' % refname + else: + code =3D '%sClear(&%s);' % (mtype['name'], refname) + elif mtype['name'] =3D=3D 'String': + code =3D 'VIR_FREE(%s);' % refname + elif mtype['name'] in ['Chars', 'UChars']: + code =3D 'memset(%s, 0, sizeof(%s));' % (refname, refname) + elif not member.get('array'): + code =3D '%s =3D 0;' % refname + + if member.get('specified'): + assert not member.get('array'), "'specified' can't come with 'arra= y'." + code +=3D '\n%s_specified =3D false;' % refname + + if member.get('array') and code: + counter =3D counterName(member['name']) + if singleline(code): + code =3D render(T_LOOP_SINGLE, counter=3Dcounter, body=3Dcode) + else: + code =3D render(T_LOOP_MULTI, + counter=3Dcounter, body=3Dindent(code, 2)) + code +=3D '\nVIR_FREE(def->%s);' % member['name'] + code +=3D '\ndef->%s =3D 0;' % counter + + return code + + +T_CLEAR_NAMESPACE =3D ''' +if (def->namespaceData && def->ns.free) + (def->ns.free)(def->namespaceData); +''' + + +def makeClearFunc(writer, atype): + if 'genparse' not in atype: + return + + blocks =3D BlockAssembler() + for member in atype['members']: + blocks.append(clearMember(member)) + + if 'namespace' in atype: + blocks.append(T_CLEAR_NAMESPACE.strip()) + + body =3D indent(blocks.output('\n\n'), 1) + + impl =3D render(T_CLEAR_FUNC_IMPL, typename=3Datype['name'], body=3Dbo= dy) + writer.write(atype, 'clearfunc', '.c', impl) + + decl =3D render(T_CLEAR_FUNC_DECL, typename=3Datype['name']) + writer.write(atype, 'clearfunc', '.h', decl) + + +# +# Templates for parsing member block +# +T_READ_ATTR_BY_PROP =3D '${mdvar} =3D virXMLPropString(node, "${tname}");' +T_READ_ELEM_BY_PROP =3D '${mdvar} =3D virXMLChildNode(node, "${tname}");' +T_READ_ELEM_CONTENT =3D '${mdvar} =3D virXMLChildNodeContent(node, "${tnam= e}");' + +T_PARSE_MEMBER_MORE =3D ''' +${number} =3D virXMLChildNodeSet(node, "${tname}", &nodes); +if (${number} > 0) { + size_t i; + + if (VIR_ALLOC_N(def->${name}, ${number}) < 0) + goto error; + + for (i =3D 0; i < ${number}; i++) { + xmlNodePtr tnode =3D nodes[i]; + ${item} + } + def->${counter} =3D ${number}; + VIR_FREE(nodes); +} else if (${number} < 0) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Invalid ${tname} element found.")); + goto error; +}${report_missing} +''' + +T_CHECK_INVALID_ERROR =3D ''' +if (${tmpl}) { + virReportError(VIR_ERR_XML_ERROR, + _("Invalid '${tname}' setting '%s' in '%s'"), + ${mdvar}, instname); + goto error; +} +''' + +T_MISSING_ERROR =3D ''' +{ + virReportError(VIR_ERR_XML_ERROR, + _("Missing '${tname}' setting in '%s'"), + instname); + goto error; +} +''' + +T_CHECK_MISSING_ERROR =3D 'if (${mdvar} =3D=3D NULL) ' + T_MISSING_ERROR.s= trip() + +T_ALLOC_MEMORY =3D ''' +if (VIR_ALLOC(def->${name}) < 0) + goto error; +''' + +T_STRUCT_ASSIGNMENT_TEMPLATE =3D ''' +if (${funcname}(${mdvar}, ${amp}${refname}, instname, NULL) < 0) + goto error; +''' + + +def parseMember(member, atype, tmpvars): + if not member.get('xmlattr') and not member.get('xmlelem'): + return None + + tname =3D member['xmlattr'] if member.get('xmlattr') else member['xmle= lem'] + mtype =3D TypeTable().get(member['type']) + + # + # Helper functions + # + def _readXMLByXPath(mdvar): + if member.get('xmlattr'): + tmpl =3D T_READ_ATTR_BY_PROP + elif mtype['meta'] =3D=3D 'Struct': + tmpl =3D T_READ_ELEM_BY_PROP + else: + tmpl =3D T_READ_ELEM_CONTENT + return render(tmpl, mdvar=3Dmdvar, tname=3Dtname) + + def _assignValue(name, mdvar): + refname =3D 'def->' + name + if member.get('callback') or mtype['meta'] =3D=3D 'Struct': + if member.get('callback'): + funcname =3D member['callback'] + 'ParseXML' + else: + funcname =3D mtype['name'] + 'ParseXML' + + tmpl =3D '' + if member['pointer'] and not mtype.get('external'): + tmpl +=3D T_ALLOC_MEMORY + tmpl +=3D T_STRUCT_ASSIGNMENT_TEMPLATE + + if (member['pointer'] and not mtype.get('external')) or \ + mtype['name'] in ['Chars', 'UChars']: + amp =3D '' + else: + amp =3D '&' + + tmpl =3D render(tmpl, funcname=3Dfuncname, amp=3Damp, mdvar=3D= mdvar) + elif mtype['meta'] =3D=3D 'Enum': + formalname =3D mtype['name'] + if not formalname.endswith('Type'): + formalname +=3D 'Type' + tmpl =3D '(def->${name} =3D %sFromString(%s)) <=3D 0' \ + % (formalname, mdvar) + elif mtype['name'] =3D=3D 'Bool': + tmpl =3D 'virStrToBool(${mdvar}, "%s", &def->${name}) < 0' \ + % member.get('truevalue', 'yes') + elif mtype['name'] =3D=3D 'String': + tmpl =3D 'def->${name} =3D g_strdup(${mdvar});' + else: + tmpl =3D None + builtin =3D BUILTIN_TYPES.get(mtype['name']) + if builtin: + tmpl =3D builtin.get('conv', None) + if tmpl: + tmpl +=3D ' < 0' + + if not tmpl: + return None + + if not member.get('callback') and mtype['meta'] !=3D 'Struct' and \ + mdvar.endswith('Str') and (mtype['name'] !=3D 'String'): + tmpl =3D render(T_CHECK_INVALID_ERROR, + tmpl=3Dtmpl, tname=3Dtname, mdvar=3Dmdvar) + + ret =3D render(tmpl, refname=3Drefname, name=3Dname, + tname=3Dtname, mdvar=3Dmdvar) + + if member.get('specified') and not member.get('array'): + ret +=3D '\ndef->%s_specified =3D true;' % name + return ret + + def _assignValueOnCondition(name, mdvar): + block =3D _assignValue(name, mdvar) + if not block: + return None + + if member.get('required'): + ret =3D render(T_CHECK_MISSING_ERROR, mdvar=3Dmdvar, tname=3Dt= name) + ret +=3D '\n\n' + block + return ret + + if singleline(block): + return render(T_IF_SINGLE, condition=3Dmdvar, body=3Dblock) + else: + return render(T_IF_MULTI, condition=3Dmdvar, body=3Dindent(blo= ck, 1)) + + # + # Main routine + # + name =3D member['name'] + + # For sequence-type member + if member.get('array'): + node_num =3D 'n%sNodes' % Terms.upperInitial(tname) + tmpvars.append(node_num) + tmpvars.append('nodes') + counter =3D counterName(member['name']) + + report_missing =3D '' + if member.get('required'): + report_missing =3D ' else ' + render(T_MISSING_ERROR, tname=3D= tname) + + if mtype['meta'] !=3D 'Struct': + item =3D 'def->%s[i] =3D virXMLNodeContentString(tnode);' % na= me + else: + item =3D _assignValue(name + '[i]', 'tnode') + + return render(T_PARSE_MEMBER_MORE, name=3Dname, counter=3Dcounter, + number=3Dnode_num, item=3Dindent(item, 2), + report_missing=3Dreport_missing, tname=3Dtname) + + # For ordinary member + mdvar =3D member['name'].replace('.', '_') + if member.get('xmlattr') or mtype['meta'] !=3D 'Struct': + mdvar +=3D 'Str' + else: + mdvar +=3D 'Node' + tmpvars.append(mdvar) + + blocks =3D BlockAssembler() + blocks.append(_readXMLByXPath(mdvar)) + blocks.append(_assignValueOnCondition(name, mdvar)) + return blocks.output() + + +def align(funcname): + return ' ' * (len(funcname) + 1) + + +T_PARSE_FUNC_DECL =3D ''' +int +${funcname}(${args}); +''' + +T_PARSE_FUNC_IMPL =3D ''' +int +${funcname}(${args}) +{ + ${declare_vars} + VIR_USED(instname); + VIR_USED(opaque); + + if (!def) + goto error; + + ${body} + + return 0; + + error: + ${cleanup_vars} + ${typename}Clear(def); + return -1; +} +''' + +T_PARSE_FUNC_POST_INVOKE =3D ''' +if (${funcname}Hook(${args}) < 0) + goto error; +''' + + +def _handleTmpVars(tmpvars): + heads, tails =3D [], [] + tmpvars =3D dedup(tmpvars) + for var in tmpvars: + if var =3D=3D 'nodes': + heads.append('xmlNodePtr *nodes =3D NULL;') + tails.append('VIR_FREE(nodes);') + elif var.endswith('Str'): + heads.append('g_autofree char *%s =3D NULL;' % var) + elif var.endswith('Node'): + heads.append('xmlNodePtr %s =3D NULL;' % var) + else: + assert var.endswith('Nodes') and var.startswith('n') + heads.append('int %s =3D 0;' % var) + + return '\n'.join(heads), '\n'.join(tails) + + +def makeParseFunc(writer, atype): + if 'genparse' not in atype: + return + + typename =3D atype['name'] + funcname =3D typename + 'ParseXML' + alignment =3D align(funcname) + + formal_args =3D [ + 'xmlNodePtr node', typename + 'Ptr def', + 'const char *instname', 'void *opaque' + ] + + actual_args =3D ['node', 'def', 'instname', 'opaque'] + + if 'namespace' in atype: + formal_args.append('xmlXPathContextPtr ctxt') + actual_args.append('ctxt') + formal_args.append('virNetworkXMLOptionPtr xmlopt') + actual_args.append('xmlopt') + + kwargs =3D {'funcname': funcname, 'typename': typename, + 'args': (',\n%s' % alignment).join(formal_args)} + + tmpvars =3D [] + blocks =3D BlockAssembler() + for member in atype['members']: + blocks.append(parseMember(member, atype, tmpvars)) + + decl =3D renderByDict(T_PARSE_FUNC_DECL, kwargs) + + if atype['genparse'] in ['withhook', 'concisehook']: + if atype['genparse'] =3D=3D 'withhook': + for var in tmpvars: + if var.endswith('Str') or var.endswith('Node') or \ + var.endswith('Nodes') and var.startswith('n'): + actual_args.append(var) + + actual_args =3D ', '.join(actual_args) if actual_args else '' + post =3D render(T_PARSE_FUNC_POST_INVOKE, funcname=3Dfuncname, + args=3Dactual_args) + blocks.append(post) + + if atype['genparse'] =3D=3D 'withhook': + for var in tmpvars: + line =3D None + if var.endswith('Str'): + line =3D 'const char *' + var + elif var.endswith('Node'): + line =3D 'xmlNodePtr ' + var + elif var.endswith('Nodes') and var.startswith('n'): + line =3D 'int ' + var + + if line: + formal_args.append(line) + + connector =3D ',\n' + alignment + 4 * ' ' + decl +=3D '\n' + render(T_PARSE_FUNC_DECL, funcname=3Dfuncname + '= Hook', + args=3Dconnector.join(formal_args)) + + writer.write(atype, 'parsefunc', '.h', decl) + + if 'namespace' in atype: + blocks.append(T_NAMESPACE_PARSE.strip()) + + kwargs['body'] =3D indent(blocks.output('\n\n'), 1) + + declare_vars, cleanup_vars =3D _handleTmpVars(tmpvars) + kwargs['declare_vars'] =3D indent(declare_vars, 1) + kwargs['cleanup_vars'] =3D indent(cleanup_vars, 1) + + impl =3D renderByDict(T_PARSE_FUNC_IMPL, kwargs) + writer.write(atype, 'parsefunc', '.c', impl) + + +T_FORMAT_FUNC_DECL =3D ''' +int +${typename}FormatBuf(virBufferPtr buf, +${alignment}const char *name, +${alignment}const ${typename} *def, +${alignment}void *opaque); +''' + +T_FORMAT_FUNC_IMPL =3D ''' +int +${typename}FormatBuf(virBufferPtr buf, +${alignment}const char *name, +${alignment}const ${typename} *def, +${alignment}void *opaque) +{ + VIR_USED(opaque); + + if (!def) + return 0; + + ${format_members} + + return 0; +} +''' + +T_FORMAT_CHECK_DECL =3D ''' +bool +${typename}Check(const ${typename} *def, void *opaque); +''' + +T_FORMAT_CHECK_IMPL =3D ''' +bool +${typename}Check(const ${typename} *def, void *opaque) +{ + VIR_USED(opaque); + + if (!def) + return false; + + return ${check}; +} +''' + +T_FORMAT_ELEMENTS =3D ''' +virBufferAddLit(buf, ">\\n"); + +virBufferAdjustIndent(buf, 2); + +${elements} + +virBufferAdjustIndent(buf, -2); +virBufferAsprintf(buf, "\\n", name); +''' + +T_FORMAT_SHORTHAND =3D ''' +if (!(${checks})) { + virBufferAddLit(buf, "/>\\n"); + return 0; +} +''' + +T_IF_SINGLE =3D ''' +if (${condition}) + ${body} +''' + +T_IF_MULTI =3D ''' +if (${condition}) { + ${body} +} +''' + +T_LOOP_SINGLE =3D ''' +if (def->${counter} > 0) { + size_t i; + for (i =3D 0; i < def->${counter}; i++) + ${body} +} +''' + +T_LOOP_MULTI =3D ''' +if (def->${counter} > 0) { + size_t i; + for (i =3D 0; i < def->${counter}; i++) { + ${body} + } +} +''' + +T_FORMAT_MEMBER_OF_ENUM =3D ''' +const char *str =3D ${fullname}ToString(${var}); +if (!str) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown ${tname} type %d"), + ${var}); + return -1; +} +virBufferAsprintf(buf, "${layout}", str); +''' + + +def formatMember(member, require, ret_checks): + if not member.get('xmlattr') and not member.get('xmlelem'): + return None + + mtype =3D TypeTable().get(member['type']) + + # + # Helper functions. + # + def _checkOnCondition(var): + if member.get('array'): + return None + + t =3D TypeTable().get(member['type']) + + ret =3D None + if 'checkformat' in member: + ret =3D '%s(&%s, opaque)' % (member['checkformat'], var) + elif member['pointer']: + ret =3D var + elif member.get('specified'): + ret =3D var + '_specified' + if ret.startswith('&'): + ret =3D ret[1:] + elif t['meta'] =3D=3D 'Struct': + ret =3D '%sCheck(&%s, opaque)' % (t['name'], var) + elif member.get('required'): + pass + elif t['meta'] =3D=3D 'Enum': + ret =3D var + elif t['meta'] =3D=3D 'Builtin': + if t['name'] in ['Chars', 'UChars']: + ret =3D var + '[0]' + else: + ret =3D var + + return ret + + def _handleMore(code): + code =3D indent(code, 2) + counter =3D counterName(member['name']) + ret_checks.append('def->' + counter) + if singleline(code): + return render(T_LOOP_SINGLE, counter=3Dcounter, body=3Dcode) + else: + return render(T_LOOP_MULTI, counter=3Dcounter, body=3Dcode) + + def _format(layout, var): + tmpl =3D '${funcname}(buf, "${layout}", ${var})' + + funcname =3D 'virBufferAsprintf' + has_return =3D False + if member.get('callback') or mtype['meta'] =3D=3D 'Struct': + if member.get('callback'): + funcname =3D member['callback'] + 'FormatBuf' + else: + funcname =3D mtype['name'] + 'FormatBuf' + + has_return =3D True + if not member['pointer'] and \ + mtype['name'] not in ['Chars', 'UChars']: + var =3D '&' + var + + var =3D '%s, opaque' % var + elif mtype['meta'] =3D=3D 'Enum': + name =3D mtype['name'] + if not name.endswith('Type'): + name +=3D 'Type' + tmpl =3D render(T_FORMAT_MEMBER_OF_ENUM, + fullname=3Dname, tname=3Dmember['xmlattr']) + elif mtype['meta'] in ['String', 'Chars', 'UChars']: + funcname =3D 'virBufferEscapeString' + elif mtype['name'] =3D=3D 'Bool': + truevalue =3D member.get('truevalue', 'yes') + if truevalue =3D=3D 'yes': + var =3D '%s ? "yes" : "no"' % var + elif truevalue =3D=3D 'on': + var =3D '%s ? "on" : "off"' % var + else: + var =3D '%s ? "%s" : ""' % (var, truevalue) + + code =3D render(tmpl, funcname=3Dfuncname, layout=3Dlayout, var=3D= var) + if has_return: + code +=3D ' < 0' + code =3D render(T_IF_SINGLE, condition=3Dcode, body=3D'return = -1;') + elif mtype['meta'] not in ['Enum']: + code +=3D ';' + + return code + + def _handleAttr(tagname, var): + if 'xmlattr' not in member: + return None + + fmt =3D '%s' + if member.get('format.fmt'): + fmt =3D member['format.fmt'] + elif mtype['meta'] =3D=3D 'Builtin': + fmt =3D BUILTIN_TYPES[mtype['name']].get('fmt', '%s') + + layout =3D " %s=3D'%s'" % (tagname, fmt) + return _format(layout, var) + + def _handleElem(tagname, var): + if 'xmlattr' in member: + return None + + if mtype['meta'] !=3D 'Struct': + layout =3D '<%s>%%s\\n' % (tagname, tagname) + else: + layout =3D tagname + + code =3D _format(layout, var) + return code + + # + # Main routine + # + name =3D member['name'] + if member.get('array'): + name =3D name + '[i]' + var =3D 'def->' + name + + ret =3D None + if 'xmlattr' in member: + tagname =3D member['xmlattr'] + else: + tagname =3D member['xmlelem'] + + if require =3D=3D 'attribute': + ret =3D _handleAttr(tagname, var) + else: + ret =3D _handleElem(tagname, var) + + if not ret: + return None + + checks =3D _checkOnCondition(var) + if checks: + ret =3D indent(ret, 1) + if singleline(ret): + ret =3D render(T_IF_SINGLE, condition=3Dchecks, body=3Dret) + else: + ret =3D render(T_IF_MULTI, condition=3Dchecks, body=3Dret) + + if member.get('array'): + return _handleMore(ret) + + if checks: + if '&&' in checks or '||' in checks: + checks =3D '(%s)' % checks + ret_checks.append(checks) + + return ret + + +def makeFormatFunc(writer, atype): + if 'genformat' not in atype: + return + + # + # Helper functions. + # + def _formatMembers(): + attrs =3D [] + elems =3D [] + check_attrs =3D [] + check_elems =3D [] + + for member in atype['members']: + attr =3D formatMember(member, 'attribute', check_attrs) + if attr: + attrs.append(attr) + + elem =3D formatMember(member, 'element', check_elems) + if elem: + elems.append(elem) + + ret =3D BlockAssembler() + if len(check_attrs) =3D=3D len(attrs) \ + and len(check_elems) =3D=3D len(elems): + checks =3D ' || '.join(check_attrs + check_elems) + atype['check'] =3D checks + ret.append(render(T_IF_SINGLE, condition=3D'!(%s)' % checks, + body=3D'return 0;')) + + ret.append('virBufferAsprintf(buf, "<%s", name);') + + if 'namespace' in atype: + ret.append(T_NAMESPACE_FORMAT_BEGIN.strip()) + + ret.extend(attrs) + + if elems: + if attrs and len(check_elems) =3D=3D len(elems): + checks =3D ' || '.join(check_elems) + ret.append(render(T_FORMAT_SHORTHAND, checks=3Dchecks)) + + elements =3D '\n\n'.join(elems) + if 'namespace' in atype: + elements +=3D '\n\n' + T_NAMESPACE_FORMAT_END.strip() + + ret.append(render(T_FORMAT_ELEMENTS, elements=3Delements)) + else: + ret.append('virBufferAddLit(buf, "/>\\n");') + + return ret.output('\n\n') + + # + # Main routine of formating. + # + typename =3D atype['name'] + alignment =3D align(typename + 'FormatBuf') + + kwargs =3D {'alignment': alignment, 'typename': typename, + 'format_members': indent(_formatMembers(), 1)} + + decl =3D renderByDict(T_FORMAT_FUNC_DECL, kwargs) + writer.write(atype, 'formatfunc', '.h', decl) + + impl =3D renderByDict(T_FORMAT_FUNC_IMPL, kwargs) + writer.write(atype, 'formatfunc', '.c', impl) + + if atype.get('check'): + decl =3D render(T_FORMAT_CHECK_DECL, typename=3Dtypename) + writer.write(atype, 'formatfunc', '.h', decl) + + impl =3D render(T_FORMAT_CHECK_IMPL, + typename=3Dtypename, check=3Datype['check']) + writer.write(atype, 'formatfunc', '.c', impl) + + +def showDirective(atype): + print('\n###### Directive ######\n') + print(json.dumps(atype, indent=3D4)) diff --git a/build-aux/generator/go b/build-aux/generator/go new file mode 100755 index 0000000..9e30e08 --- /dev/null +++ b/build-aux/generator/go @@ -0,0 +1,14 @@ +# This is a command-line tool + +libclang_line=3D`ldconfig -p | grep libclang` +export libclang_path=3D`expr "$libclang_line" : '.* =3D> \(.*\)$'` +if test -z "$libclang_path"; then + echo "libclang is required by libvirt\n" + exit -1 +fi + +WORK_DIR=3D$(cd $(dirname $0); pwd) +export PYTHONDONTWRITEBYTECODE=3D1 +export topdir=3D"${WORK_DIR}/../.." +export builddir=3D"${WORK_DIR}/../../build" +${WORK_DIR}/main.py $@ diff --git a/build-aux/generator/main.py b/build-aux/generator/main.py new file mode 100755 index 0000000..78a90f1 --- /dev/null +++ b/build-aux/generator/main.py @@ -0,0 +1,416 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2020 Shandong Massclouds Co.,Ltd. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see +# . +# + +import os +import re +import sys +import argparse +from clang.cindex import Config, Index, CursorKind +from clang.cindex import SourceLocation, SourceRange, TokenKind +from datetime import datetime +from directive import TypeTable, showDirective +from directive import makeClearFunc, makeParseFunc, makeFormatFunc +from utils import Terms + +TOOL_DESC =3D ''' +Generate xml parse/format functions based on directives. + +Subcommand:\n + list: List types. By default, only list structs tagged by + 'genparse'/'genformat'. When the option '-a' is specified, + list all types discovered by this tool.\n + show: Show the target type's directives and its code for preview. + Specify target type by its name. The option '-k' indicates + the kinds of code for preview.\n + generate: Generate code. To be called by Makefile. + It needs option -k to filter output. + +Option:\n + -k: Specify kinds to filter code output. More than one kind can be + specified, 'c' for clearfunc; 'p' for parsefunc; + 'f' for formatfunc.\n + The option '-k' is only valid for show and generate. +''' + +# Three builtin types need to be handled specially: +# 'char *' =3D> String +# 'char XXXX[...]' =3D> Chars +# 'unsigned char XXXX[...]' =3D> UChars +BUILTIN_MAP =3D { + 'bool': 'Bool', + 'char': 'Char', + 'unsigned char': 'UChar', + 'int': 'Int', + 'unsigned int': 'UInt', + 'long': 'Long', + 'unsigned long': 'ULong', + 'long long': 'LongLong', + 'unsigned long long': 'ULongLong', + 'uint8_t': 'U8', + 'uint32_t': 'U32', +} + + +def getBuiltinType(ctype, ptr=3DFalse, size=3DNone): + if ctype =3D=3D 'char': + if ptr: + return 'String' + elif size: + return 'Chars' + + if ctype =3D=3D 'unsigned char' and size: + return 'UChars' + + return BUILTIN_MAP.get(ctype, None) + + +def cursorLineExtent(cursor, tu): + loc =3D cursor.location + start =3D SourceLocation.from_position(tu, loc.file, loc.line, 1) + end =3D SourceLocation.from_position(tu, loc.file, loc.line, -1) + return SourceRange.from_locations(start, end) + + +def getTokens(cursor, tu): + return tu.get_tokens(extent=3DcursorLineExtent(cursor, tu)) + + +DIRECTIVES =3D [ + 'genparse', 'genformat', 'namespace', 'xmlattr', 'xmlelem', + 'required', 'array', 'specified', 'callback', 'truevalue', 'checkforma= t' +] + + +def createDirectives(text): + tlist =3D re.findall(r'/\*(.*)\*/', text) + if len(tlist) !=3D 1: + return None + + tlist =3D tlist[0].split(',') + if len(tlist) =3D=3D 0: + return None + + directives =3D {} + for item in tlist: + item =3D item.strip() + if ':' in item: + key, value =3D item.split(':') + else: + key, value =3D item, None + + if key in DIRECTIVES: + directives[key] =3D value + return directives + + +def getDirectives(tokens, cursor): + for token in tokens: + if token.location.column <=3D cursor.location.column: + continue + if token.kind =3D=3D TokenKind.COMMENT: + directive =3D createDirectives(token.spelling) + if directive: + return directive + return None + + +def determinType(kvs, tokens, cursor): + prefix =3D [] + kind =3D None + for token in tokens: + if token.location.column >=3D cursor.location.column: + break + if not kind: + kind =3D token.kind + prefix.append(token.spelling) + + suffix =3D [] + for token in tokens: + if token.spelling =3D=3D ';': + break + suffix.append(token.spelling) + + size =3D None + if len(suffix) =3D=3D 3 and suffix[0] =3D=3D '[' and suffix[2] =3D=3D = ']': + size =3D suffix[1] + + assert kind in [TokenKind.IDENTIFIER, TokenKind.KEYWORD], \ + 'Bad field "%s".' % cursor.spelling + + assert prefix + typename =3D ' '.join(prefix) + + # For array, remove the most-outer pointer + if kvs.get('array'): + if typename.endswith('Ptr'): + typename =3D typename[:-3] + elif typename.endswith('*'): + typename =3D typename[:-1].strip() + + ptr =3D False + if typename.endswith('Ptr'): + typename =3D typename[:-3] + ptr =3D True + elif prefix[-1] =3D=3D '*': + typename =3D typename[:-1].strip() + ptr =3D True + + ret =3D getBuiltinType(typename, ptr, size) + if ret: + typename =3D ret + + kvs.update({'type': typename, 'pointer': ptr}) + if size: + kvs['size'] =3D size + return kvs + + +def analyseMember(cursor, tu): + dvs =3D getDirectives(getTokens(cursor, tu), cursor) + if not dvs: + return None + + kvs =3D {'name': cursor.spelling} + kvs.update(dvs) + + # Formalize member + for key in ['array', 'required', 'specified']: + if key in kvs: + kvs[key] =3D True + + if 'checkformat' in kvs: + assert kvs.get('checkformat'), 'Directive "checkformat" is None' + + for tag in ['xmlattr', 'xmlelem']: + if tag in kvs: + if not kvs[tag]: + if kvs.get('array'): + kvs[tag] =3D Terms.singularize(kvs['name']) + else: + kvs[tag] =3D kvs['name'] + + return determinType(kvs, getTokens(cursor, tu), cursor) + + +def analyseStruct(struct, cursor, tu): + tokens =3D getTokens(cursor, tu) + kvs =3D getDirectives(tokens, cursor) + if kvs: + path, _ =3D os.path.splitext(cursor.location.file.name) + path, filename =3D os.path.split(path) + _, dirname =3D os.path.split(path) + kvs['output'] =3D dirname + '/' + filename + struct.update(kvs) + + inner_members =3D [] + for child in cursor.get_children(): + if inner_members: + # Flatten the members of embedded struct + for member in inner_members: + member['name'] =3D child.spelling + '.' + member['name= '] + struct['members'].append(member) + inner_members =3D [] + continue + + if child.kind =3D=3D CursorKind.STRUCT_DECL: + for ichild in child.get_children(): + member =3D analyseMember(ichild, tu) + if member: + inner_members.append(member) + continue + + member =3D analyseMember(child, tu) + if member: + struct['members'].append(member) + + return struct + + +def discoverStructures(tu): + for cursor in tu.cursor.get_children(): + if cursor.kind =3D=3D CursorKind.STRUCT_DECL and cursor.is_definit= ion(): + # Detect structs + name =3D cursor.spelling + if not name: + continue + if name.startswith('_'): + name =3D name[1:] + struct =3D {'name': name, 'meta': 'Struct', 'members': []} + analyseStruct(struct, cursor, tu) + TypeTable().register(struct) + elif cursor.kind =3D=3D CursorKind.TYPEDEF_DECL: + # Detect enums + # We can't seek out enums by CursorKind.ENUM_DECL, + # since almost all enums are anonymous. + token =3D cursor.get_tokens() + try: + next(token) # skip 'typedef' + if next(token).spelling =3D=3D 'enum': + enum =3D {'name': cursor.spelling, 'meta': 'Enum'} + TypeTable().register(enum) + except StopIteration: + pass + + +class CodeWriter(object): + def __init__(self, args, builddir): + self._builddir =3D builddir + self._cmd =3D args.cmd + self._files =3D {} + self._filters =3D {} + self._filters['clearfunc'] =3D args.kinds and 'c' in args.kinds + self._filters['parsefunc'] =3D args.kinds and 'p' in args.kinds + self._filters['formatfunc'] =3D args.kinds and 'f' in args.kinds + if args.cmd =3D=3D 'show': + self._filters['target'] =3D args.target + + def _getFile(self, path, ext): + assert ext in ['.h', '.c'] + _, basename =3D os.path.split(path) + path =3D '%s.generated%s' % (path, ext) + f =3D self._files.get(path) + if f is None: + f =3D open(path, 'w') + f.write('/* Generated by build-aux/generator */\n\n') + if ext in ['.c']: + f.write('#include \n') + f.write('#include "%s.h"\n' % basename) + f.write('#include "viralloc.h"\n') + f.write('#include "virerror.h"\n') + f.write('#include "virstring.h"\n\n') + f.write('#define VIR_FROM_THIS VIR_FROM_NONE\n') + else: + f.write('#pragma once\n\n') + f.write('#include "internal.h"\n') + f.write('#include "virxml.h"\n') + self._files[path] =3D f + return f + + def write(self, atype, kind, extname, content): + if not self._filters[kind]: + return + + if self._cmd =3D=3D 'show': + target =3D self._filters['target'] + if not target or target =3D=3D atype['name']: + if extname =3D=3D '.h': + info =3D Terms.upperInitial(kind) + print('\n###### %s ######' % info) + print('\n[.h]') + else: + print('\n[.c]') + print('\n' + content) + return + + assert self._cmd =3D=3D 'generate' + + if atype.get('output'): + lfs =3D '\n' if extname =3D=3D '.h' else '\n\n' + path =3D self._builddir + '/src/' + atype['output'] + f =3D self._getFile(path, extname) + f.write(lfs + content + '\n') + + def complete(self): + for name in self._files: + self._files[name].close() + self._files.clear() + + +def getHFiles(path): + retlist =3D [] + for fname in os.listdir(path): + if fname.endswith('.h'): + retlist.append(os.path.join(path, fname)) + return retlist + + +HELP_LIST =3D 'list structs tagged by "genparse"/"genformat"' +HELP_LIST_ALL =3D 'list all discovered types' + +if __name__ =3D=3D "__main__": + parser =3D argparse.ArgumentParser( + formatter_class=3Dargparse.RawDescriptionHelpFormatter, + description=3DTOOL_DESC) + subparsers =3D parser.add_subparsers(dest=3D'cmd') + parser_list =3D subparsers.add_parser('list', help=3DHELP_LIST) + parser_list.add_argument('-a', dest=3D'list_all', action=3D'store_true= ', + default=3DFalse, help=3DHELP_LIST_ALL) + parser_show =3D subparsers.add_parser('show', help=3D'show target code= ') + parser_show.add_argument('target', help=3D'target for being previewed') + parser_show.add_argument('-k', dest=3D'kinds', + help=3D'kinds of code to be previewed') + parser_generate =3D subparsers.add_parser('generate', help=3D'generate= code') + parser_generate.add_argument('-k', dest=3D'kinds', + help=3D'kinds of code to be generated') + args =3D parser.parse_args() + + if not args.cmd: + parser.print_help() + sys.exit(1) + + if args.cmd =3D=3D 'generate': + print('###### Generator: start ... ######') + if not args.kinds: + print("[dry run]: no kinds specified for 'generate'") + + timestamp =3D datetime.now() + topdir =3D os.environ.get('topdir', None) + builddir =3D os.environ.get('builddir', None) + assert topdir and builddir, 'Set env "topdir" and "builddir".' + + libclang_path =3D os.environ.get('libclang_path') + assert libclang_path, 'No libclang library.' + Config.set_library_file(libclang_path) + + # Examine all *.h in "$(topdir)/src/[util|conf]" + index =3D Index.create() + hfiles =3D getHFiles(topdir + '/src/util') + getHFiles(topdir + '/src/= conf') + for hfile in hfiles: + tu =3D index.parse(hfile) + discoverStructures(tu) # find all structs and enums + + if args.cmd =3D=3D 'list': + print('%-64s %s' % ('TYPENAME', 'META')) + for name, kvs in TypeTable().items(): + if not args.list_all: + if not ('genparse' in kvs or 'genparse' in kvs): + continue + print('%-64s %s' % (name, kvs['meta'])) + sys.exit(0) + elif args.cmd =3D=3D 'show': + assert args.target, args + atype =3D TypeTable().get(args.target) + if not atype: + sys.exit(0) + showDirective(atype) + + writer =3D CodeWriter(args, builddir) + + for atype in TypeTable().values(): + makeClearFunc(writer, atype) + makeParseFunc(writer, atype) + makeFormatFunc(writer, atype) + + writer.complete() + + if args.cmd =3D=3D 'generate': + elapse =3D (datetime.now() - timestamp).microseconds + print('\n###### Generator: elapse %d(us) ######\n' % elapse) + + sys.exit(0) diff --git a/build-aux/generator/utils.py b/build-aux/generator/utils.py new file mode 100644 index 0000000..c65045a --- /dev/null +++ b/build-aux/generator/utils.py @@ -0,0 +1,100 @@ +# +# Copyright (C) 2020 Shandong Massclouds Co.,Ltd. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see +# . +# + +import re +import string + + +def singleton(cls): + _instances =3D {} + + def inner(): + if cls not in _instances: + _instances[cls] =3D cls() + return _instances[cls] + return inner + + +class Terms(object): + abbrs =3D ['uuid', 'pci', 'zpci', 'ptr', 'mac', 'mtu', 'dns', 'ip', 'd= hcp'] + plurals =3D {'addresses': 'address'} + + @classmethod + def singularize(cls, name): + ret =3D cls.plurals.get(name, None) + if ret: + return ret + assert name.endswith('s') + return name[:-1] + + # Don't use str.capitalize() which force other letters to be lowercase. + @classmethod + def upperInitial(cls, word): + if not word: + return '' + if word in cls.abbrs: + return word.upper() + if len(word) > 0 and word[0].isupper(): + return word + return word[0].upper() + word[1:] + + +def singleline(code): + return len(re.findall(r'\n', code.strip())) =3D=3D 0 + + +def indent(block, count, unit=3D4): + if not block: + return '' + lines =3D [] + for line in block.strip().split('\n'): + lines.append(' ' * unit * count + line if line else '') + return '\n'.join(lines).strip() + + +def render(template, **kwargs): + return string.Template(template).safe_substitute(kwargs).strip() + + +def renderByDict(template, dictionary): + return string.Template(template).safe_substitute(**dictionary).strip() + + +class BlockAssembler(list): + def append(self, block): + if block: + super(BlockAssembler, self).append(block) + + def output(self, connector=3D'\n'): + return connector.join(self) + + +def dedup(alist): + assert isinstance(alist, list) + ret =3D [] + for e in alist: + if e not in ret: + ret.append(e) + + return ret + + +def counterName(name): + if not name.islower(): + name =3D Terms.upperInitial(name) + return 'n' + name diff --git a/po/POTFILES.in b/po/POTFILES.in index 6607e29..2d7eb1e 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -5,6 +5,7 @@ @BUILDDIR@/src/admin/admin_server_dispatch_stubs.h @BUILDDIR@/src/remote/remote_client_bodies.h @BUILDDIR@/src/remote/remote_daemon_dispatch_stubs.h +@SRCDIR@/build-aux/generator/directive.py @SRCDIR@/src/access/viraccessdriverpolkit.c @SRCDIR@/src/access/viraccessmanager.c @SRCDIR@/src/admin/admin_server.c --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752420; cv=none; d=zohomail.com; s=zohoarc; b=AyXX6FycTs4o4hecji0XRn4HngC5DYxJj/qi7hCb8n4cbfdnAD2C4nhmJ4m1mRrX9ON4emYC1h1XiHrEPNkczkHxZiDDsQW4jp+4KqmphaILrKCEbJBiY7Wrv2wMGpUDL2gkYSahTneSEnsZGPKCTRXHfzfPsvyNdFBE36CnI4k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752420; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=uAr6cRW2oN/6LKsqU305DfSt0KqvvzY4+K2y77ybqT0=; b=IZrShieND/g8RSfhRGeZRqvNBG1DEdv+re6zhB2UcZf/ok1aztuNG+ZYXzm1HA3Pwpw/FAZLxcy+n4sNdcq21nTwb8eqqzdA+1ZCfB6do53S8Lr3pZbtWFUnxAOuIvu42xGxeymUlscpmKxGnBaKkzX6vH9or0k300h9brx7DJg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1591752420965200.2350838281186; Tue, 9 Jun 2020 18:27:00 -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-143-lnYOozy-OieJ_OmuzZxJsA-1; Tue, 09 Jun 2020 21:26:56 -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 6FBAE8014D9; Wed, 10 Jun 2020 01:26:49 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 533C37B912; Wed, 10 Jun 2020 01:26:49 +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 25009180043E; Wed, 10 Jun 2020 01:26:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1QhBH027261 for ; Tue, 9 Jun 2020 21:26:43 -0400 Received: by smtp.corp.redhat.com (Postfix) id E83AF10EE6E3; Wed, 10 Jun 2020 01:26:42 +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 E3D8510EE6D9 for ; Wed, 10 Jun 2020 01:26:40 +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 F2B34811768 for ; Wed, 10 Jun 2020 01:26:39 +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-415-o5Y1FZrMOXScueQDzRqwmg-1; Tue, 09 Jun 2020 21:26:36 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S4; Wed, 10 Jun 2020 09:21:13 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752419; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=uAr6cRW2oN/6LKsqU305DfSt0KqvvzY4+K2y77ybqT0=; b=VpxJzZbeOz09OrIwls0vvhZ3rHSkf7xIGI937QCsCp0thze+K2WinoHhoMvLI4P+aQTfxj YDnnPEJZgB/NCRtP4z7yDpKrI4nVnfcUvfNp3zwWGZzPXHdzvM83BU7vjwbFAnCSbDLSdS vPIKx9of4nBT5rU+Ppo+o480kL7BmHY= X-MC-Unique: lnYOozy-OieJ_OmuzZxJsA-1 X-MC-Unique: o5Y1FZrMOXScueQDzRqwmg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 02/21] maint: Check libclang and its python3 binding Date: Wed, 10 Jun 2020 09:20:30 +0800 Message-Id: <20200610012049.10774-3-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S4 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRvhFxUUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiGQo-T1nkgmIUPQAAsX X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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 X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Make sure libclang and its python3 binding have been installed. Signed-off-by: Shi Lei --- configure.ac | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/configure.ac b/configure.ac index 6c8ac2f..747e52a 100644 --- a/configure.ac +++ b/configure.ac @@ -707,6 +707,18 @@ if test -z "$FLAKE8"; then AC_MSG_WARN(['flake8' binary is required to check python code style]) fi =20 +dnl Need libclang and its python3 binding to generate some functions +LIBCLANG_LINE=3D`ldconfig -p | grep libclang` +LIBCLANG_PATH=3D`expr "$LIBCLANG_LINE" : '.* =3D> \(.*\)$'` +if test -z "$LIBCLANG_PATH"; then + AC_MSG_ERROR([libclang is required by libvirt]) +fi +HAVE_PY3_CLANG=3D`python3 -c 'import clang.cindex;print("ok")' 2>/dev/null` +if test -z "$HAVE_PY3_CLANG"; then + AC_MSG_ERROR(['python3-clang' is required. Execute 'pip3 install clang= '.]) +fi +AC_SUBST(LIBCLANG_PATH) + dnl Python3 < 3.7 treats the C locale as 7-bit only. dnl We must force env vars so it treats it as UTF-8 dnl regardless of the user's locale. --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.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 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752409; cv=none; d=zohomail.com; s=zohoarc; b=d7tX4Ver3PdS7B5WTx8ZgwlSGLOX6YXZjM9b6YWA//jLLyr89/Oq3qH0E0Fd2U5Qt8ZbBA4ttbKDBH9fXf4jd/1lvv0/R9iAqD8VqPUq73+uY3He5lUbkfkCuti3l+rTE607FIXlxOOHQzGAqlksgNs/uNrFKx2XKozer30ANPc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752409; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=8Y3iCgnRN71I5G3JY8AHu830vu8FBG2ZgAI729U+pd0=; b=QCecJPGtLmCRGjjfHGNLe8DvCQpBJlBu7x25Y/vIqzk5gUJrTz95qKZ6JmsqCyU54l81MRCabZJdmpmYcBcjb8eRdXwMfSAIsKnfcuxXKEhXP5jYz+v9V13ZslTzCvMMNnuKv2v/40ATvOgu6NXKVVgEYBTGcC4fC8Lw6WfL+8g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1591752409254286.5667128110091; Tue, 9 Jun 2020 18:26:49 -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-28-LWDGPZ5JO_25wLmA05n-TA-1; Tue, 09 Jun 2020 21:26:45 -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 E37F01854C64; Wed, 10 Jun 2020 01:26:39 +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 17BFF7F0BE; Wed, 10 Jun 2020 01:26:37 +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 15803B3487; Wed, 10 Jun 2020 01:26:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1QWTR027199 for ; Tue, 9 Jun 2020 21:26:32 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2CF0A9D77; Wed, 10 Jun 2020 01:26:32 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 274368054F for ; Wed, 10 Jun 2020 01:26:29 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (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 7EE8B185A78B for ; Wed, 10 Jun 2020 01:26:29 +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-218-aMvpUMxUONiv6xZNOQMAiQ-1; Tue, 09 Jun 2020 21:26:24 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S5; Wed, 10 Jun 2020 09:21:15 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752407; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=8Y3iCgnRN71I5G3JY8AHu830vu8FBG2ZgAI729U+pd0=; b=cYe5/s3YS96md02NKXRvLLCK9Szy1NfW1vVWMitjUP11oKDcHfj/fuXkcjThAtkgm0p/fv 9ngt0TmPhekPXT/LEcZVpEUuRqr6oajTRbZDhc/yWtMkIsk+qc016D5iEGssLSRbWoFlPu V0YNbPCm/Ut9GQNwtH0w6Kh0aNOLRsA= X-MC-Unique: LWDGPZ5JO_25wLmA05n-TA-1 X-MC-Unique: aMvpUMxUONiv6xZNOQMAiQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 03/21] maint: Call generator automatically when c-head-files change Date: Wed, 10 Jun 2020 09:20:31 +0800 Message-Id: <20200610012049.10774-4-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S5 X-Coremail-Antispam: 1Uf129KBjvJXoWfGw1kCF1fCr18uryxJrWUArb_yoWkWFWrpw sYkF1rAa1vqrW5Kr1xKayDJF1jq3yjqa45WF1F9w1Utr48ZF98GrWxt3yY9r1agFW7Zr4I 9ry3KFyjgrWkAaDanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pRH89_UUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiSw0-T1dqAXgRbQAAsO X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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 X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Let makefile call the generator-tool whenever the c header files change. Only check those header files under src/conf and src/util. Signed-off-by: Shi Lei --- src/Makefile.am | 15 +++++++++++++++ src/access/Makefile.inc.am | 2 +- src/conf/Makefile.inc.am | 11 ++++++++++- src/esx/Makefile.inc.am | 2 +- src/interface/Makefile.inc.am | 2 +- src/lxc/Makefile.inc.am | 1 + src/network/Makefile.inc.am | 2 +- src/node_device/Makefile.inc.am | 2 +- src/nwfilter/Makefile.inc.am | 2 +- src/qemu/Makefile.inc.am | 1 + src/remote/Makefile.inc.am | 2 +- src/secret/Makefile.inc.am | 2 +- src/storage/Makefile.inc.am | 2 +- src/test/Makefile.inc.am | 2 +- src/util/Makefile.inc.am | 12 +++++++++--- src/vbox/Makefile.inc.am | 2 +- tests/Makefile.am | 2 ++ tools/Makefile.am | 2 ++ 18 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 12dd6b8..224d786 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -24,6 +24,7 @@ AM_CPPFLAGS =3D -I$(top_srcdir) \ -I$(top_srcdir)/include \ -I$(srcdir)/util \ -I./util \ + -I./conf \ -DIN_LIBVIRT \ -Dabs_top_builddir=3D"\"$(abs_top_builddir)\"" \ -Dabs_top_srcdir=3D"\"$(abs_top_srcdir)\"" \ @@ -87,6 +88,20 @@ sbin_PROGRAMS =3D bin_PROGRAMS =3D DRIVER_SOURCES =3D =20 +GENERATED_FILES_STAMP =3D .generated_files.stamp +UTIL_HEADS =3D $(wildcard $(top_srcdir)/src/util/*.h) +CONF_HEADS =3D $(wildcard $(top_srcdir)/src/conf/*.h) +GENERATOR_SRC =3D $(wildcard $(top_srcdir)/build-aux/generator/*.py) + +$(GENERATED_FILES_STAMP): $(UTIL_HEADS) $(CONF_HEADS) $(GENERATOR_SRC) + $(AM_V_GEN)topdir=3D$(top_srcdir) builddir=3D$(top_builddir) \ + libclang_path=3D$(LIBCLANG_PATH) \ + $(PYTHON) -B $(top_srcdir)/build-aux/generator/main.py \ + generate -k cpf && touch $@ + +MAINTAINERCLEANFILES +=3D $(GENERATED_FILES_STAMP) +CLEANFILES +=3D $(GENERATED_FILES_STAMP) + COMMON_UNIT_VARS =3D \ -e 's|[@]runstatedir[@]|$(runstatedir)|g' \ -e 's|[@]sbindir[@]|$(sbindir)|g' \ diff --git a/src/access/Makefile.inc.am b/src/access/Makefile.inc.am index 11f87c6..7832558 100644 --- a/src/access/Makefile.inc.am +++ b/src/access/Makefile.inc.am @@ -55,7 +55,7 @@ nodist_libvirt_driver_access_la_SOURCES =3D \ noinst_LTLIBRARIES +=3D libvirt_driver_access.la libvirt_la_BUILT_LIBADD +=3D libvirt_driver_access.la libvirt_driver_access_la_CFLAGS =3D \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(NULL) libvirt_driver_access_la_LDFLAGS =3D $(AM_LDFLAGS) diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am index debc6f4..3bd2199 100644 --- a/src/conf/Makefile.inc.am +++ b/src/conf/Makefile.inc.am @@ -160,7 +160,11 @@ DEVICE_CONF_SOURCES =3D \ conf/device_conf.h \ $(NULL) =20 +CONF_GENERATED_SOURCES =3D \ + $(NULL) + CONF_SOURCES =3D \ + $(CONF_GENERATED_SOURCES) \ $(NETDEV_CONF_SOURCES) \ $(DOMAIN_CONF_SOURCES) \ $(OBJECT_EVENT_SOURCES) \ @@ -180,11 +184,16 @@ CONF_SOURCES =3D \ $(DEVICE_CONF_SOURCES) \ $(NULL) =20 +BUILT_SOURCES +=3D $(CONF_GENERATED_SOURCES) +$(CONF_GENERATED_SOURCES): $(GENERATED_FILES_STAMP) +MAINTAINERCLEANFILES +=3D $(CONF_GENERATED_SOURCES) +CLEANFILES +=3D $(CONF_GENERATED_SOURCES) + noinst_LTLIBRARIES +=3D libvirt_conf.la libvirt_la_BUILT_LIBADD +=3D libvirt_conf.la libvirt_conf_la_SOURCES =3D $(CONF_SOURCES) libvirt_conf_la_CFLAGS =3D \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(NULL) libvirt_conf_la_LDFLAGS =3D $(AM_LDFLAGS) diff --git a/src/esx/Makefile.inc.am b/src/esx/Makefile.inc.am index d53cef1..1df9a54 100644 --- a/src/esx/Makefile.inc.am +++ b/src/esx/Makefile.inc.am @@ -78,7 +78,7 @@ noinst_LTLIBRARIES +=3D libvirt_driver_esx.la libvirt_la_BUILT_LIBADD +=3D libvirt_driver_esx.la libvirt_driver_esx_la_CFLAGS =3D \ $(CURL_CFLAGS) \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ -I$(builddir)/esx \ -I$(srcdir)/vmx \ $(AM_CFLAGS) \ diff --git a/src/interface/Makefile.inc.am b/src/interface/Makefile.inc.am index 46a43e6..03ccef1 100644 --- a/src/interface/Makefile.inc.am +++ b/src/interface/Makefile.inc.am @@ -23,7 +23,7 @@ mod_LTLIBRARIES +=3D libvirt_driver_interface.la libvirt_driver_interface_la_CFLAGS =3D \ -I$(srcdir)/access \ -I$(builddir)/access \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(LIBNL_CFLAGS) \ $(NULL) diff --git a/src/lxc/Makefile.inc.am b/src/lxc/Makefile.inc.am index b8c2e1e..fdbefb5 100644 --- a/src/lxc/Makefile.inc.am +++ b/src/lxc/Makefile.inc.am @@ -95,6 +95,7 @@ libvirt_driver_lxc_impl_la_CFLAGS =3D \ -I$(srcdir)/access \ -I$(builddir)/access \ -I$(srcdir)/conf \ + -I./conf \ -I$(builddir)/lxc \ -I$(builddir)/rpc \ -I$(srcdir)/hypervisor \ diff --git a/src/network/Makefile.inc.am b/src/network/Makefile.inc.am index 196a30e..d260f75 100644 --- a/src/network/Makefile.inc.am +++ b/src/network/Makefile.inc.am @@ -46,7 +46,7 @@ libvirt_driver_network_impl_la_CFLAGS =3D \ $(DBUS_CFLAGS) \ -I$(srcdir)/access \ -I$(builddir)/access \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(NULL) libvirt_driver_network_impl_la_SOURCES =3D $(NETWORK_DRIVER_SOURCES) diff --git a/src/node_device/Makefile.inc.am b/src/node_device/Makefile.inc= .am index 7885636..ee3c3bc 100644 --- a/src/node_device/Makefile.inc.am +++ b/src/node_device/Makefile.inc.am @@ -40,7 +40,7 @@ libvirt_driver_nodedev_la_SOURCES =3D $(NODE_DEVICE_DRIVE= R_SOURCES) libvirt_driver_nodedev_la_CFLAGS =3D \ -I$(srcdir)/access \ -I$(builddir)/access \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(LIBNL_CFLAGS) \ $(NULL) diff --git a/src/nwfilter/Makefile.inc.am b/src/nwfilter/Makefile.inc.am index 20db809..774b681 100644 --- a/src/nwfilter/Makefile.inc.am +++ b/src/nwfilter/Makefile.inc.am @@ -40,7 +40,7 @@ libvirt_driver_nwfilter_impl_la_CFLAGS =3D \ $(DBUS_CFLAGS) \ -I$(srcdir)/access \ -I$(builddir)/access \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(NULL) libvirt_driver_nwfilter_impl_la_LDFLAGS =3D $(AM_LDFLAGS) diff --git a/src/qemu/Makefile.inc.am b/src/qemu/Makefile.inc.am index 6a7fc08..680ec88 100644 --- a/src/qemu/Makefile.inc.am +++ b/src/qemu/Makefile.inc.am @@ -101,6 +101,7 @@ libvirt_driver_qemu_impl_la_CFLAGS =3D \ -I$(srcdir)/access \ -I$(builddir)/access \ -I$(srcdir)/conf \ + -I./conf \ -I$(srcdir)/secret \ -I$(srcdir)/hypervisor \ $(AM_CFLAGS) \ diff --git a/src/remote/Makefile.inc.am b/src/remote/Makefile.inc.am index 1b1be83..4e42608 100644 --- a/src/remote/Makefile.inc.am +++ b/src/remote/Makefile.inc.am @@ -47,7 +47,7 @@ REMOTE_DAEMON_CFLAGS =3D \ $(COVERAGE_CFLAGS) \ -I$(srcdir)/access \ -I$(builddir)/access \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ -I$(srcdir)/rpc \ -I$(builddir)/rpc \ -I$(builddir)/remote \ diff --git a/src/secret/Makefile.inc.am b/src/secret/Makefile.inc.am index a8390f8..198b666 100644 --- a/src/secret/Makefile.inc.am +++ b/src/secret/Makefile.inc.am @@ -20,7 +20,7 @@ mod_LTLIBRARIES +=3D libvirt_driver_secret.la libvirt_driver_secret_la_CFLAGS =3D \ -I$(srcdir)/access \ -I$(builddir)/access \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(NULL) libvirt_driver_secret_la_LIBADD =3D \ diff --git a/src/storage/Makefile.inc.am b/src/storage/Makefile.inc.am index 2f46d24..556d07b 100644 --- a/src/storage/Makefile.inc.am +++ b/src/storage/Makefile.inc.am @@ -122,7 +122,7 @@ libvirt_driver_storage_impl_la_SOURCES =3D libvirt_driver_storage_impl_la_CFLAGS =3D \ -I$(srcdir)/access \ -I$(builddir)/access \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ -I$(srcdir)/secret \ $(AM_CFLAGS) \ $(NULL) diff --git a/src/test/Makefile.inc.am b/src/test/Makefile.inc.am index b84ab52..ce1e635 100644 --- a/src/test/Makefile.inc.am +++ b/src/test/Makefile.inc.am @@ -21,7 +21,7 @@ driver_test_assetdir =3D $(pkgdatadir) noinst_LTLIBRARIES +=3D libvirt_driver_test.la libvirt_la_BUILT_LIBADD +=3D libvirt_driver_test.la libvirt_driver_test_la_CFLAGS =3D \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ $(NULL) libvirt_driver_test_la_SOURCES =3D $(TEST_DRIVER_SOURCES) diff --git a/src/util/Makefile.inc.am b/src/util/Makefile.inc.am index 5bc60cb..4056f1d 100644 --- a/src/util/Makefile.inc.am +++ b/src/util/Makefile.inc.am @@ -1,5 +1,8 @@ # vim: filetype=3Dautomake =20 +UTIL_GENERATED_SOURCES =3D \ + $(NULL) + # These files are not related to driver APIs. Simply generic # helper APIs for various purposes UTIL_SOURCES =3D \ @@ -236,9 +239,9 @@ UTIL_SOURCES =3D \ util/virmdev.h \ util/virfilecache.c \ util/virfilecache.h \ + $(UTIL_GENERATED_SOURCES) \ $(NULL) =20 - EXTRA_DIST +=3D \ $(srcdir)/keycodemapdb/data/keymaps.csv \ $(srcdir)/keycodemapdb/tools/keymap-gen \ @@ -253,8 +256,9 @@ KEYTABLES =3D \ $(KEYNAMES:%=3Dutil/virkeynametable_%.h) \ $(NULL) =20 -BUILT_SOURCES +=3D $(KEYTABLES) -CLEANFILES +=3D $(KEYTABLES) +BUILT_SOURCES +=3D $(KEYTABLES) $(UTIL_GENERATED_SOURCES) +CLEANFILES +=3D $(KEYTABLES) $(UTIL_GENERATED_SOURCES) +MAINTAINERCLEANFILES +=3D $(KEYTABLES) $(UTIL_GENERATED_SOURCES) =20 UTIL_IO_HELPER_SOURCES =3D util/iohelper.c =20 @@ -300,6 +304,8 @@ libvirt_util_la_LIBADD =3D \ $(NULL) =20 =20 +$(UTIL_GENERATED_SOURCES): $(GENERATED_FILES_STAMP) + util/virkeycodetable_%.h: $(srcdir)/keycodemapdb/data/keymaps.csv \ $(srcdir)/keycodemapdb/tools/keymap-gen Makefile.am $(AM_V_GEN)export NAME=3D`echo $@ | sed -e 's,util/virkeycodetable_,,' \ diff --git a/src/vbox/Makefile.inc.am b/src/vbox/Makefile.inc.am index c5c6d53..7348475 100644 --- a/src/vbox/Makefile.inc.am +++ b/src/vbox/Makefile.inc.am @@ -48,7 +48,7 @@ mod_LTLIBRARIES +=3D libvirt_driver_vbox.la libvirt_driver_vbox_la_LDFLAGS =3D $(AM_LDFLAGS_MOD_NOUNDEF) =20 libvirt_driver_vbox_impl_la_CFLAGS =3D \ - -I$(srcdir)/conf \ + -I$(srcdir)/conf -I./conf \ $(AM_CFLAGS) \ -DVBOX_DRIVER \ $(NULL) diff --git a/tests/Makefile.am b/tests/Makefile.am index f5766a7..486de26 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -21,7 +21,9 @@ AM_CPPFLAGS =3D \ -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_builddir)/src -I$(top_srcdir)/src \ -I$(top_srcdir)/src/util \ + -I$(top_builddir)/src/util \ -I$(top_srcdir)/src/conf \ + -I$(top_builddir)/src/conf \ -I$(top_srcdir)/src/hypervisor \ -I$(top_builddir)/src/rpc \ $(NULL) diff --git a/tools/Makefile.am b/tools/Makefile.am index 53df930..05a219e 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -19,6 +19,8 @@ AM_CPPFLAGS =3D \ -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_builddir)/src -I$(top_srcdir)/src \ -I$(top_srcdir)/src/util \ + -I$(top_builddir)/src/util \ + -I$(top_builddir)/src/conf \ -I$(top_srcdir) \ $(NULL) =20 --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752424; cv=none; d=zohomail.com; s=zohoarc; b=e595X070+dakOEYgiY6BdEtfjwyznfExGqDUsWvrmkRztqJftFUeQg0UUSsnifAH31J7FFHPY86vT9YgIfA0AR1iYohM+r8rMkUtD4xUJJRcOPUsNjNoOt9NiDQzF3ghPlTQOJ7vtT6QvI7JNXhGiuENRGeuKaG/TiR8K6kJkyE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752424; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Gn46fh7Vv5bTTBm/TtYkh+8V/u8W1aorThWi2K4/Ctw=; b=dl83cUtu+mUt4EYfsX3/3Pc7EQ8KakiU8rZl6EMERuAZpQuZZ2MoJH7KgCt4+t/cfABXSNfHy4ufTwubBeYvM84pdGCBGeG6UW/pwwJcIQVfOIglFLJOUzq/0IMrWpuMaEfwqgA8iZB7ZCVqzG1rqtp8i/llPMkM/HDGtcoUD8U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1591752424918611.9254017206753; Tue, 9 Jun 2020 18:27:04 -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-130-xQcy91iAOtSXFfm1x03Erw-1; Tue, 09 Jun 2020 21:27:00 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B14F2835B4F; Wed, 10 Jun 2020 01:26:50 +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 929708927E; Wed, 10 Jun 2020 01:26:50 +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 67961B3487; Wed, 10 Jun 2020 01:26:50 +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 05A1QjsT027292 for ; Tue, 9 Jun 2020 21:26:45 -0400 Received: by smtp.corp.redhat.com (Postfix) id A45A12156A2E; Wed, 10 Jun 2020 01:26:45 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9F03B2166BA2 for ; Wed, 10 Jun 2020 01:26:42 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.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 BE51D8007A4 for ; Wed, 10 Jun 2020 01:26:42 +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-378-n_W4UezzMkygTj4XNcKhWQ-1; Tue, 09 Jun 2020 21:26:39 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S6; Wed, 10 Jun 2020 09:21:19 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752423; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Gn46fh7Vv5bTTBm/TtYkh+8V/u8W1aorThWi2K4/Ctw=; b=S1DOwUySPbkhSGf6Ng4X/5c85K09EK0T8C1J8AQVxnona/PcIFECNP8IjlKkZYBkKPjFvw JKSVbjHeNRlO9mqdhOYPovdpj5y5BIu+2Ez3xBXmYfhL/2zOxdq+ofe6rDCbLPlSZJUCHF qEJCUKSbL+cpUz//lcuff8lNc+Xc4x8= X-MC-Unique: xQcy91iAOtSXFfm1x03Erw-1 X-MC-Unique: n_W4UezzMkygTj4XNcKhWQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 04/21] maint: Add helper macro VIR_USED Date: Wed, 10 Jun 2020 09:20:32 +0800 Message-Id: <20200610012049.10774-5-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S6 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRNGYpUUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiERA-T1nxsm4e6gAAsx X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.13 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The macro VIR_USED is used in generated parse/format functions to avoid args-unused warnings. Signed-off-by: Shi Lei --- src/internal.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/internal.h b/src/internal.h index e181218..315f12d 100644 --- a/src/internal.h +++ b/src/internal.h @@ -502,3 +502,5 @@ enum { # define fprintf(fh, ...) g_fprintf(fh, __VA_ARGS__) =20 #endif /* VIR_NO_GLIB_STDIO */ + +#define VIR_USED(var) do { break; } while(var) --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752423; cv=none; d=zohomail.com; s=zohoarc; b=EnsPlLn9ULs/rdw1uoABKomjdr3/hAuhYoyk5fx+PLU1dU6ApvC7xUfqCzT0Y1RfgpCwosUt+2tTtGqNgWrorbmDRnJ4g+r3OJoEGRb4kOZMyPMkgMen80NgJiPjS4y5Yj/hdycFT+86yCr2pXVJLWn/AGgmBS216nhxmt7bGPY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752423; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=B72/O9iK3pT6y4W4IcZkPrckxS8CWT1YCSR747wqdaw=; b=hY08PAanp0UXm3L0/fLfVFK0ARpMjSm28t9cpv3f5vgboXDPFleFoHLr4xmeiaZN5riIEEUdv8oOJr3M7qfMx0b3KJ+fYc0nGLcH0rCpni+Yo4XDV5xcA++/GMTB45ZLKGd74CWrEo0P8e/S4IMHHxABa3O/fQ2pkhTnu/nEt+U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1591752423708150.0945740036899; Tue, 9 Jun 2020 18:27:03 -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-325-oymNn1edOYGF8RYbeS2SuA-1; Tue, 09 Jun 2020 21:26:59 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 33BA780572E; Wed, 10 Jun 2020 01:26:52 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 13A208FF61; Wed, 10 Jun 2020 01:26:52 +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 D6C9D1806B0B; Wed, 10 Jun 2020 01:26:51 +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 05A1Qjqe027291 for ; Tue, 9 Jun 2020 21:26:45 -0400 Received: by smtp.corp.redhat.com (Postfix) id A68092156A3B; Wed, 10 Jun 2020 01:26:45 +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 A1E992156A2D for ; Wed, 10 Jun 2020 01:26:44 +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 A7C6A811768 for ; Wed, 10 Jun 2020 01:26:44 +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-317-JrJBHLuCPbCxuCZPKg4nqg-1; Tue, 09 Jun 2020 21:26:41 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S7; Wed, 10 Jun 2020 09:21:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752422; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=B72/O9iK3pT6y4W4IcZkPrckxS8CWT1YCSR747wqdaw=; b=hYif+8WBZx50K0Pk+JKuRka6Mz+LXr5KOcBY1+OBkcLwSCdFtpLdSupEAewlFfDtbarL3z EtucW4XZmVUrFUZWbzNWUd2s2AMPASU/sXkB084BUfSE+FzGLYTXq8Qdika30wKruo8Ur/ +S1wbYVfH3F6o3i5EXa2kns7A26s1WU= X-MC-Unique: oymNn1edOYGF8RYbeS2SuA-1 X-MC-Unique: JrJBHLuCPbCxuCZPKg4nqg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 05/21] util: Add two helper functions virXMLChildNode and virXMLChildNodeSet Date: Wed, 10 Jun 2020 09:20:33 +0800 Message-Id: <20200610012049.10774-6-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S7 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRNGYpUUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiUBI-T1f4p9wARQAAsj X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.13 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add these helper functions to parse xml without using xmlXPathContext. Signed-off-by: Shi Lei --- src/util/virxml.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ src/util/virxml.h | 3 +++ 2 files changed, 60 insertions(+) diff --git a/src/util/virxml.c b/src/util/virxml.c index 02b59ea..a2edbc1 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -1405,3 +1405,60 @@ virXMLNamespaceRegister(xmlXPathContextPtr ctxt, =20 return 0; } + + +/** + * virXMLChildNode: + * @node: Parent XML dom node pointer + * @name: Name of the child element + * + * Convenience function to return the child element of a XML node. + * + * Returns the pointer of child element node or NULL in case of failure. + * If there are many nodes match condition, it only returns the first node. + */ +xmlNodePtr +virXMLChildNode(xmlNodePtr node, const char *name) +{ + xmlNodePtr cur =3D node->children; + while (cur) { + if (cur->type =3D=3D XML_ELEMENT_NODE && virXMLNodeNameEqual(cur, = name)) + return cur; + cur =3D cur->next; + } + return NULL; +} + + +/** + * virXMLChildNodeSet: + * @node: Parent XML dom node pointer + * @name: Name of the children element + * @list: the returned list of nodes (or NULL if only count matters) + * + * Convenience function to evaluate a set of children elements + * + * Returns the number of nodes found in which case @list is set (and + * must be freed) or -1 if the evaluation failed. + */ +int +virXMLChildNodeSet(xmlNodePtr node, const char *name, xmlNodePtr **list) +{ + size_t count =3D 0; + if (list !=3D NULL) + *list =3D NULL; + + xmlNodePtr cur =3D node->children; + while (cur) { + if (cur->type =3D=3D XML_ELEMENT_NODE && virXMLNodeNameEqual(cur, = name)) { + if (list !=3D NULL) { + if (VIR_APPEND_ELEMENT_COPY(*list, count, cur) < 0) + return -1; + } else { + count++; + } + } + cur =3D cur->next; + } + return count; +} diff --git a/src/util/virxml.h b/src/util/virxml.h index 26ab9f9..0abde44 100644 --- a/src/util/virxml.h +++ b/src/util/virxml.h @@ -79,6 +79,9 @@ char * virXMLPropStringLimit(xmlNodePtr node, char * virXMLNodeContentString(xmlNodePtr node); long virXMLChildElementCount(xmlNodePtr node); =20 +xmlNodePtr virXMLChildNode(xmlNodePtr node, const char *name); +int virXMLChildNodeSet(xmlNodePtr node, const char *name, xmlNodePtr **lis= t); + /* Internal function; prefer the macros below. */ xmlDocPtr virXMLParseHelper(int domcode, const char *filename, --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1591752413; cv=none; d=zohomail.com; s=zohoarc; b=OgjfkH3b/hI9KB7TwsREfujrQ2GAOaMjFOQOlE9oOl8BjOdRkIH4DqfjkiHGhqDtKI63MDh7MqohBf8ErXOZc6+uMrXKT7q2g8caHA84IG0H5f2ntYWdzv15vABZgq6cEeoBFRAkk+qTQViXALkG8df3cYFrGf+EW8dJ/j4gbSk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752413; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=RuXlSgd0h86K/1QRvchcqU7/WNLiuhYWR4sI2132Qus=; b=afIFeSaDvSqSUw6ZPpQ45V/H1t0C56bdy1nR5TOh3wnDLQNui5kTgCRuMGU0iIzQAZ/qX1HMaBQcrpGns5wiWwraDSK82WV3BXPAfQ4WJk51lLL1LNvLSyO+j0QML2uk07+MRBk6Mxz2CwoRSHphhot2ZkpObyd+ECHjh4CyJ4Q= 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 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 1591752413714420.0998255698379; Tue, 9 Jun 2020 18:26: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-449-sy4h-LkEP2mFI0ub7pETbA-1; Tue, 09 Jun 2020 21:26:49 -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 D400B8014D4; Wed, 10 Jun 2020 01:26: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 A74497A8D3; Wed, 10 Jun 2020 01:26:44 +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 762B5B34AA; Wed, 10 Jun 2020 01:26:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1Qhe5027260 for ; Tue, 9 Jun 2020 21:26:43 -0400 Received: by smtp.corp.redhat.com (Postfix) id E884E10E60DD; Wed, 10 Jun 2020 01:26:42 +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 E3DBD10EE6DD for ; Wed, 10 Jun 2020 01:26:41 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (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 1E808811E7A for ; Wed, 10 Jun 2020 01:26:41 +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-510-Ex7axMcyMqy_pygZDiOd_A-1; Tue, 09 Jun 2020 21:26:37 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S8; Wed, 10 Jun 2020 09:21:24 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752412; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=RuXlSgd0h86K/1QRvchcqU7/WNLiuhYWR4sI2132Qus=; b=bAe6GRpCJZTU/FXkIs/WPZJTlVeZcY8V2PL2+mSMFNs/FcOcs1VzS3ikjJoiup5IYekCQG uRvBIK9m82Zkl14cT4UIr9Ua4eBW8r7J+a4z3+zCs0DA3nvWxKJrWDcfaTHeA9zT0mHfDy LJlEdtTBKQN4BGJ6LrFoUgi4bHh9s3E= X-MC-Unique: sy4h-LkEP2mFI0ub7pETbA-1 X-MC-Unique: Ex7axMcyMqy_pygZDiOd_A-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 06/21] conf: Extract error-checking code from virNetworkDNSTxtDefParseXML Date: Wed, 10 Jun 2020 09:20:34 +0800 Message-Id: <20200610012049.10774-7-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S8 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4Rbo7iUUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiiBU-T1tVg1i3fgAAsx X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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 X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 48 +++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index f1d22b2..47aaef3 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -904,26 +904,25 @@ virNetworkDNSSrvDefParseXML(const char *networkName, =20 =20 static int -virNetworkDNSTxtDefParseXML(const char *networkName, - xmlNodePtr node, - virNetworkDNSTxtDefPtr def, - bool partialOkay) +virNetworkDNSTxtDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, + virNetworkDNSTxtDefPtr def, + const char *networkName, + void *opaque) { const char *bad =3D " ,"; + bool partialOkay =3D false; + + if (opaque) + partialOkay =3D *((bool *) opaque); =20 - if (!(def->name =3D virXMLPropString(node, "name"))) { - virReportError(VIR_ERR_XML_DETAIL, - _("missing required name attribute in DNS TXT recor= d " - "of network %s"), networkName); - goto error; - } if (strcspn(def->name, bad) !=3D strlen(def->name)) { virReportError(VIR_ERR_XML_DETAIL, _("prohibited character in DNS TXT record " "name '%s' of network %s"), def->name, networkNam= e); goto error; } - if (!(def->value =3D virXMLPropString(node, "value")) && !partialOkay)= { + + if (!def->value && !partialOkay) { virReportError(VIR_ERR_XML_DETAIL, _("missing required value attribute in DNS TXT reco= rd " "named '%s' of network %s"), def->name, networkNa= me); @@ -936,6 +935,33 @@ virNetworkDNSTxtDefParseXML(const char *networkName, "in DNS TXT record of network %s"), networkName); goto error; } + + return 0; + + error: + return -1; +} + + +static int +virNetworkDNSTxtDefParseXML(const char *networkName, + xmlNodePtr node, + virNetworkDNSTxtDefPtr def, + bool partialOkay) +{ + if (!(def->name =3D virXMLPropString(node, "name"))) { + virReportError(VIR_ERR_XML_DETAIL, + _("missing required name attribute in DNS TXT recor= d " + "of network %s"), networkName); + goto error; + } + + def->value =3D virXMLPropString(node, "value"); + + if (virNetworkDNSTxtDefParseXMLHook(node, def, networkName, + &partialOkay) < 0) + goto error; + return 0; =20 error: --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752417; cv=none; d=zohomail.com; s=zohoarc; b=hGl30AYmZMKlb6BITeP0dhpdOBVVmTn/jRjpIJ4GlZXxoDI34Hk954a5iMtZ7VZkf/hWr5lSpNlrBTsxBxEjk7TEtc3vTFZVrXQha1+2ul1uAPsvrp0bIuJeKNal37UHQgXLC0PToqp5jL+yT3+UHtbS69Gwotx6LuQgu0SkqsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752417; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Y1lzl3H6091Op8TE8WkatRNf4q1fJnv2vRiXImKhi7Y=; b=a1ULZ4mvcU/R53OTVY/WBys8g0qmZgRYMhyEMp+z8n6JkPWE0NFQpxVZ01sI3ot5ZNxEnSwh458A/jRqzWeGOp/ay3ycNX/rga4vzEknsV9Ufhz6SqzNSe4oSqgUVjS/BGnB0AdLVfjHZBdb1oDVQCLmIaFaq2Xsv7T0p+Lr/+s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1591752417326954.3990740398355; Tue, 9 Jun 2020 18:26: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-183-j2M1sz_ANjWBEHdyAtjWdg-1; Tue, 09 Jun 2020 21:26:53 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 77B2B107ACF3; Wed, 10 Jun 2020 01:26:48 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5BD4B78FC5; Wed, 10 Jun 2020 01:26: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 275341809557; Wed, 10 Jun 2020 01:26:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1QhMG027262 for ; Tue, 9 Jun 2020 21:26:43 -0400 Received: by smtp.corp.redhat.com (Postfix) id EB1B810E60F6; Wed, 10 Jun 2020 01:26:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E620210EE6E0 for ; Wed, 10 Jun 2020 01:26:42 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (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 58336856FFF for ; Wed, 10 Jun 2020 01:26:42 +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-242-06UeyVr3OoerCDMkBWZz5Q-1; Tue, 09 Jun 2020 21:26:39 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S9; Wed, 10 Jun 2020 09:21:26 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752416; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Y1lzl3H6091Op8TE8WkatRNf4q1fJnv2vRiXImKhi7Y=; b=bJY5YDDo9cyaQCD6UcB5xyN5eZYxGbt712BSS9+XHuD7VSmroQH4z2LhT2TSSzzNN99ApC 8nSnS0tSllYt/u4cn9Tytx1lphf74MOYUYG7BaFJ8dsc1/HYtqsB5seDpvnuBz9yhoQa6p VjOMPh2jlfgFEzvrUf0VIWQZsRcmbx4= X-MC-Unique: j2M1sz_ANjWBEHdyAtjWdg-1 X-MC-Unique: 06UeyVr3OoerCDMkBWZz5Q-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 07/21] conf: Replace virNetworkDNSTxtDefParseXML(hardcoded) with namesake(generated) Date: Wed, 10 Jun 2020 09:20:35 +0800 Message-Id: <20200610012049.10774-8-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S9 X-Coremail-Antispam: 1Uf129KBjvJXoWxCFWrKryUtryfJFyftF45trb_yoWrurWfpa n8tF1qyw48WF1fKFW7Ar95CrnrCw1kXw4Ykryfu347Aw4rZryxGr1fKr1xXr45GryFyF43 CF1aqr98Gr4UAFUanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0p_6wCtUUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiHxc-T1uyHIthsgAAsV X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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.15 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- po/POTFILES.in | 1 + src/conf/Makefile.inc.am | 2 ++ src/conf/network_conf.c | 47 ++++++---------------------------------- src/conf/network_conf.h | 8 ++++--- 4 files changed, 15 insertions(+), 43 deletions(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index 2d7eb1e..a0bd358 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -3,6 +3,7 @@ @BUILDDIR@/src/access/viraccessapicheckqemu.c @BUILDDIR@/src/admin/admin_client.h @BUILDDIR@/src/admin/admin_server_dispatch_stubs.h +@BUILDDIR@/src/conf/network_conf.generated.c @BUILDDIR@/src/remote/remote_client_bodies.h @BUILDDIR@/src/remote/remote_daemon_dispatch_stubs.h @SRCDIR@/build-aux/generator/directive.py diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am index 3bd2199..0b36a8b 100644 --- a/src/conf/Makefile.inc.am +++ b/src/conf/Makefile.inc.am @@ -161,6 +161,8 @@ DEVICE_CONF_SOURCES =3D \ $(NULL) =20 CONF_GENERATED_SOURCES =3D \ + conf/network_conf.generated.c \ + conf/network_conf.generated.h \ $(NULL) =20 CONF_SOURCES =3D \ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 47aaef3..964a8a7 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -174,14 +174,6 @@ virNetworkIPDefClear(virNetworkIPDefPtr def) } =20 =20 -static void -virNetworkDNSTxtDefClear(virNetworkDNSTxtDefPtr def) -{ - VIR_FREE(def->name); - VIR_FREE(def->value); -} - - static void virNetworkDNSHostDefClear(virNetworkDNSHostDefPtr def) { @@ -903,7 +895,7 @@ virNetworkDNSSrvDefParseXML(const char *networkName, } =20 =20 -static int +int virNetworkDNSTxtDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, virNetworkDNSTxtDefPtr def, const char *networkName, @@ -943,33 +935,6 @@ virNetworkDNSTxtDefParseXMLHook(xmlNodePtr node G_GNUC= _UNUSED, } =20 =20 -static int -virNetworkDNSTxtDefParseXML(const char *networkName, - xmlNodePtr node, - virNetworkDNSTxtDefPtr def, - bool partialOkay) -{ - if (!(def->name =3D virXMLPropString(node, "name"))) { - virReportError(VIR_ERR_XML_DETAIL, - _("missing required name attribute in DNS TXT recor= d " - "of network %s"), networkName); - goto error; - } - - def->value =3D virXMLPropString(node, "value"); - - if (virNetworkDNSTxtDefParseXMLHook(node, def, networkName, - &partialOkay) < 0) - goto error; - - return 0; - - error: - virNetworkDNSTxtDefClear(def); - return -1; -} - - static int virNetworkDNSDefParseXML(const char *networkName, xmlNodePtr node, @@ -1100,10 +1065,10 @@ virNetworkDNSDefParseXML(const char *networkName, goto cleanup; =20 for (i =3D 0; i < ntxts; i++) { - if (virNetworkDNSTxtDefParseXML(networkName, txtNodes[i], - &def->txts[def->ntxts], false)= < 0) { + if (virNetworkDNSTxtDefParseXML(txtNodes[i], &def->txts[def->n= txts], + networkName, NULL) < 0) goto cleanup; - } + def->ntxts++; } } @@ -3714,6 +3679,7 @@ virNetworkDefUpdateDNSTxt(virNetworkDefPtr def, virNetworkDNSTxtDef txt; bool isAdd =3D (command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST || command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); + bool notAdd; =20 memset(&txt, 0, sizeof(txt)); =20 @@ -3727,7 +3693,8 @@ virNetworkDefUpdateDNSTxt(virNetworkDefPtr def, if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "txt") < 0) goto cleanup; =20 - if (virNetworkDNSTxtDefParseXML(def->name, ctxt->node, &txt, !isAdd) <= 0) + notAdd =3D !isAdd; + if (virNetworkDNSTxtDefParseXML(ctxt->node, &txt, def->name, ¬Add) = < 0) goto cleanup; =20 for (foundIdx =3D 0; foundIdx < dns->ntxts; foundIdx++) { diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index f2dc388..eac8a76 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -130,9 +130,9 @@ struct _virNetworkDHCPHostDef { =20 typedef struct _virNetworkDNSTxtDef virNetworkDNSTxtDef; typedef virNetworkDNSTxtDef *virNetworkDNSTxtDefPtr; -struct _virNetworkDNSTxtDef { - char *name; - char *value; +struct _virNetworkDNSTxtDef { /* genparse:concisehook */ + char *name; /* xmlattr, required */ + char *value; /* xmlattr */ }; =20 typedef struct _virNetworkDNSSrvDef virNetworkDNSSrvDef; @@ -440,3 +440,5 @@ virNetworkDefUpdateSection(virNetworkDefPtr def, unsigned int flags); /* virNetworkUpdateFlags = */ =20 VIR_ENUM_DECL(virNetworkTaint); + +#include "network_conf.generated.h" --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.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 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752429; cv=none; d=zohomail.com; s=zohoarc; b=izUTW4JHQZvVl/fwo57Kg9/mcM0MT9feMbUqq1KW9r8bEVZrnwUq4HQWbSbOh/qBkEdlvKcvtOD5FmKmcd+6Qd5Vn0T5C0ezOfA3FiOBsyB5dej9DnRqU648RzmcopMZrJTDxKhFerbTmFRs96InYc+5O7wCV6BG2WukXZ7mp9Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752429; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=v6swf/Zfvj0TQzNLt/6vrfbqJOvypnyq2bO+lG6PbDc=; b=H46itCwdkJgUu7kMJ6WBc6nuaP7NDQEePSHxYSGPkQzxwySuRf2bovsMlSXMrTJZjn1YA/SZTnThInK7gRGTno6raGRc+A0KKsGZAitIZvf7yxy/nqgo8ZvlZ8wDAq4BVlRgxPplBKUSPWOSThQph9yXaMwovscgBH0wh+OLlF8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1591752429749539.7814931570834; Tue, 9 Jun 2020 18:27:09 -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-6-F3bjMQ0ROAGrefGgXSAjrA-1; Tue, 09 Jun 2020 21:27:05 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B3806107ACF6; Wed, 10 Jun 2020 01:26:58 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 954F97C377; Wed, 10 Jun 2020 01:26:58 +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 66858180530E; Wed, 10 Jun 2020 01:26:58 +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 05A1Qt3m027348 for ; Tue, 9 Jun 2020 21:26:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id B81D22166BA3; Wed, 10 Jun 2020 01:26:55 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B3C662166BA2 for ; Wed, 10 Jun 2020 01:26:55 +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 98AE780CDB7 for ; Wed, 10 Jun 2020 01:26:55 +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-491-cPxNiME4PqKI8zbh6um5yg-1; Tue, 09 Jun 2020 21:26:52 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S10; Wed, 10 Jun 2020 09:21:29 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752428; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=v6swf/Zfvj0TQzNLt/6vrfbqJOvypnyq2bO+lG6PbDc=; b=IniPKBNYWFyxjZWnQE7vfFfBiNY4lIHF5uRB5Jr4PsEcAg+GvfGH2fx1xrBhrnncQp6dBg HAx+ClO7UmIu8PZVJLpjK7VRCB3cDTpzP1Il4GE7uXgAO79avcFW08QNNq0fm4k0jDXLTO lynRq5tZNUqKsODWAnl6TFjRqO1ThnI= X-MC-Unique: F3bjMQ0ROAGrefGgXSAjrA-1 X-MC-Unique: cPxNiME4PqKI8zbh6um5yg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 08/21] conf: Generate virNetworkDNSTxtDefFormatBuf Date: Wed, 10 Jun 2020 09:20:36 +0800 Message-Id: <20200610012049.10774-9-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S10 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRpE_MDUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiWhk-T1f4pkbTIAAAsP X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.15 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 4 ++-- src/conf/network_conf.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 964a8a7..b807bac 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2280,8 +2280,8 @@ virNetworkDNSDefFormat(virBufferPtr buf, } =20 for (i =3D 0; i < def->ntxts; i++) { - virBufferEscapeString(buf, "txts[i].name); - virBufferEscapeString(buf, "value=3D'%s'/>\n", def->txts[i].value); + if (virNetworkDNSTxtDefFormatBuf(buf, "txt", &def->txts[i], NULL) = < 0) + return -1; } =20 for (i =3D 0; i < def->nsrvs; i++) { diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index eac8a76..b3c2895 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -130,7 +130,7 @@ struct _virNetworkDHCPHostDef { =20 typedef struct _virNetworkDNSTxtDef virNetworkDNSTxtDef; typedef virNetworkDNSTxtDef *virNetworkDNSTxtDefPtr; -struct _virNetworkDNSTxtDef { /* genparse:concisehook */ +struct _virNetworkDNSTxtDef { /* genparse:concisehook, genformat */ char *name; /* xmlattr, required */ char *value; /* xmlattr */ }; --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752422; cv=none; d=zohomail.com; s=zohoarc; b=HowjEb+ujxcZtpDIrtoB6bdcgE3jae1lyo6kFarAtD3HHz3ZDRGatMg7V9c8L1gWCli2csSSaZg6jD5uehlN9og2rhOjZqxEKyz60VAmo5WD7Qw3xzCMPtIEzC2v6UA61vlYyybDm5snsYzDA/a/qHQozrrrvvuplDgnVOwzM+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752422; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=nku7YR44Va3AT00/3LQhD7fiBjnNG6gswP8AhWAySbg=; b=JJrKuqVM3x1W64grl+86CMPwdUI23wp3glSjFEQYBBDwWqHBf86ZJXNUZWOOJ5B5WOD2Lkz9bIdJ2fpuYOGb5UaEAF68WynVX39FsRL+k0EvYO7MJ2Yi8nJie/9hjICOCbbcdGEnyX/fckmMlbG6f+LzSYkS+WK3n958B8LKcVc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1591752421970572.2704872605883; Tue, 9 Jun 2020 18:27:01 -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-293-JpqG8rZFPSivi_5cXnT0Aw-1; Tue, 09 Jun 2020 21:26:58 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DE3F6EC1AC; Wed, 10 Jun 2020 01:26:52 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C14845C298; Wed, 10 Jun 2020 01:26:52 +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 92FC6180CB27; Wed, 10 Jun 2020 01:26:52 +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 05A1QjfR027293 for ; Tue, 9 Jun 2020 21:26:45 -0400 Received: by smtp.corp.redhat.com (Postfix) id A50732156A3A; Wed, 10 Jun 2020 01:26:45 +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 9F3F02166BA3 for ; Wed, 10 Jun 2020 01:26:43 +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 45BF1811E7A for ; Wed, 10 Jun 2020 01:26:43 +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-145-xDihtIf9NCeeziTP-JEuWg-1; Tue, 09 Jun 2020 21:26:40 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S11; Wed, 10 Jun 2020 09:21:32 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752420; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=nku7YR44Va3AT00/3LQhD7fiBjnNG6gswP8AhWAySbg=; b=UbxrZ+y4qlRt8kDIc84I7b5p5ixZfyAYLvf3sjuP7yFD8BAXaWcDGMxtATVX0xDODp6xVS Coc/QmvD/Yj8pF2YU0fvDsYp+Sx1ddB7uoAu4j00goLRuL0ZSktQzrLXRjga2/a57+waVv 85m+8x1h7uql0X7ZnTF4DMbu95yPvWU= X-MC-Unique: JpqG8rZFPSivi_5cXnT0Aw-1 X-MC-Unique: xDihtIf9NCeeziTP-JEuWg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 09/21] conf: Extract error-checking code from virNetworkDNSSrvDefParseXML Date: Wed, 10 Jun 2020 09:20:37 +0800 Message-Id: <20200610012049.10774-10-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S11 X-Coremail-Antispam: 1Uf129KBjvJXoW3Jr4kJry7ZrW8WFy3Jr4Utwb_yoWxJrWkpF s5Ja98GrWrGr4fKrWjkF1kGw15Wrn5tr45C3s7Zas2k3y3Xwn7Cr4xZFyDW3y7Cr98Gr4a yFy3Zws5Wrn8Z3JanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pif-PUUUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiUBw-T1f4p9wAbgAAsG X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.16 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 115 +++++++++++++++++++++++++++++++--------- 1 file changed, 91 insertions(+), 24 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index b807bac..21b13ad 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -785,23 +785,29 @@ virNetworkDNSHostDefParseXML(const char *networkName, "_-+/*" =20 static int -virNetworkDNSSrvDefParseXML(const char *networkName, - xmlNodePtr node, - xmlXPathContextPtr ctxt, - virNetworkDNSSrvDefPtr def, - bool partialOkay) +virNetworkDNSSrvDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, + virNetworkDNSSrvDefPtr def, + const char *networkName, + void *opaque, + const char *domainStr G_GNUC_UNUSED, + const char *serviceStr G_GNUC_UNUSED, + const char *protocolStr G_GNUC_UNUSED, + const char *targetStr G_GNUC_UNUSED, + const char *portStr, + const char *priorityStr, + const char *weightStr) { - int ret; - VIR_XPATH_NODE_AUTORESTORE(ctxt); - - ctxt->node =3D node; + bool partialOkay =3D false; + if (opaque) + partialOkay =3D *((bool *) opaque); =20 - if (!(def->service =3D virXMLPropString(node, "service")) && !partialO= kay) { + if (!def->service && !partialOkay) { virReportError(VIR_ERR_XML_DETAIL, _("missing required service attribute in DNS SRV re= cord " "of network '%s'"), networkName); goto error; } + if (def->service) { if (strlen(def->service) > DNS_RECORD_LENGTH_SRV) { virReportError(VIR_ERR_XML_DETAIL, @@ -819,13 +825,14 @@ virNetworkDNSSrvDefParseXML(const char *networkName, } } =20 - if (!(def->protocol =3D virXMLPropString(node, "protocol")) && !partia= lOkay) { + if (!def->protocol && !partialOkay) { virReportError(VIR_ERR_XML_DETAIL, _("missing required protocol attribute " "in DNS SRV record '%s' of network '%s'"), def->service, networkName); goto error; } + if (def->protocol && strspn(def->protocol, PROTOCOL_CHARS) < strlen(def->protocol)) { virReportError(VIR_ERR_XML_DETAIL, @@ -835,19 +842,14 @@ virNetworkDNSSrvDefParseXML(const char *networkName, goto error; } =20 - /* 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 && !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); goto error; } - if (ret =3D=3D -2 || (ret >=3D 0 && (def->port < 1 || def->port > 6553= 5))) { + if (portStr && (def->port < 1 || def->port > 65535)) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV port attribute " "for service '%s' in network '%s'"), @@ -855,15 +857,14 @@ virNetworkDNSSrvDefParseXML(const char *networkName, goto error; } =20 - ret =3D virXPathUInt("string(./@priority)", ctxt, &def->priority); - if (ret >=3D 0 && !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); goto error; } - if (ret =3D=3D -2 || (ret >=3D 0 && def->priority > 65535)) { + if (priorityStr && def->priority > 65535) { virReportError(VIR_ERR_XML_DETAIL, _("Invalid DNS SRV priority attribute " "for service '%s' in network '%s'"), @@ -871,15 +872,14 @@ virNetworkDNSSrvDefParseXML(const char *networkName, goto error; } =20 - ret =3D virXPathUInt("string(./@weight)", ctxt, &def->weight); - if (ret >=3D 0 && !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); goto error; } - if (ret =3D=3D -2 || (ret >=3D 0 && def->weight > 65535)) { + if (weightStr && def->weight > 65535) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV weight attribute " "for service '%s' in network '%s'"), @@ -889,6 +889,73 @@ virNetworkDNSSrvDefParseXML(const char *networkName, =20 return 0; =20 + error: + return -1; +} + + +static int +virNetworkDNSSrvDefParseXML(const char *networkName, + xmlNodePtr node, + xmlXPathContextPtr ctxt, + virNetworkDNSSrvDefPtr def, + bool partialOkay) +{ + g_autofree char *portStr =3D NULL; + g_autofree char *priorityStr =3D NULL; + g_autofree char *weightStr =3D NULL; + VIR_XPATH_NODE_AUTORESTORE(ctxt); + + 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"); + + portStr =3D virXMLPropString(node, "port"); + if (portStr) { + if (virStrToLong_uip(portStr, NULL, 0, &def->port) < 0) { + virReportError(VIR_ERR_XML_DETAIL, + _("invalid DNS SRV port attribute " + "for service '%s' in network '%s'"), + def->service, networkName); + goto error; + } + } + + priorityStr =3D virXMLPropString(node, "priority"); + if (priorityStr) { + if (virStrToLong_uip(priorityStr, NULL, 0, &def->priority) < 0) { + virReportError(VIR_ERR_XML_DETAIL, + _("Invalid DNS SRV priority attribute " + "for service '%s' in network '%s'"), + def->service, networkName); + goto error; + } + } + + weightStr =3D virXMLPropString(node, "weight"); + if (weightStr) { + if (virStrToLong_uip(weightStr, NULL, 0, &def->weight) < 0) { + virReportError(VIR_ERR_XML_DETAIL, + _("invalid DNS SRV weight attribute " + "for service '%s' in network '%s'"), + def->service, networkName); + goto error; + } + } + + if (virNetworkDNSSrvDefParseXMLHook(node, def, networkName, &partialOk= ay, + def->domain, def->service, + def->protocol, def->target, + portStr, priorityStr, weightStr) <= 0) + goto error; + + return 0; + error: virNetworkDNSSrvDefClear(def); return -1; --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1591752432; cv=none; d=zohomail.com; s=zohoarc; b=fQlqTz1Qe5g0CIqFPigbmVzRPCamxV0glwxYj/5POHW8z/L8Vg/cL7llDGjDqNI/R05KNQpViMMYso9/I28cBjpFnUzMBmZMYYvnqSa4w6gY3KcgQ/Z3NHTNVSAd0H7IzzF9TapGQNUL06FVSx9pIJiIx8VMzStSphg0D3ptpEk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752432; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=fnGXe2RAbW3Pw7sYmBRDyCD3CsZF7RbqrOicbILfwG4=; b=AQF0TH08Ih7Bm0FkhmyMHXlTRG2fFq5c9qUmPGJzmxmcSXqIi33b5nyO8J6M2by6gR9TAr631nKdySUBcHcN1bxF7qg0X7aaESXQ9ij9uXO2xFR+TCVCcftBXLNUHRcUquZ6v+Y1OFguK6gTDRgb5zcc5ECJXl53djxbe2ID7aI= 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 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 1591752432419489.4854678165176; Tue, 9 Jun 2020 18:27:12 -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-331-xELumVdxMquTkVhb8TTdQQ-1; Tue, 09 Jun 2020 21:27:09 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 36164835B5C; Wed, 10 Jun 2020 01:26:59 +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 12E8910190A7; Wed, 10 Jun 2020 01:26:59 +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 DB8F7B34A9; Wed, 10 Jun 2020 01:26:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1QuPQ027354 for ; Tue, 9 Jun 2020 21:26:56 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6228210E60F6; Wed, 10 Jun 2020 01:26:56 +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 5E2EF10E60DD for ; Wed, 10 Jun 2020 01:26:56 +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 1A32A800655 for ; Wed, 10 Jun 2020 01:26:56 +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-507-OxCWSfsLP_GBnwTINPSJ9Q-1; Tue, 09 Jun 2020 21:26:52 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S12; Wed, 10 Jun 2020 09:21:33 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752431; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=fnGXe2RAbW3Pw7sYmBRDyCD3CsZF7RbqrOicbILfwG4=; b=VW0d663MwCYMMwBLVBLDyZjlxl7lU5aAfF3u4Zrno1gRidH7sJwr+7m0+Z9NxWq4+ZkXrn uveiCBAfQXnyu/NleYIGpxENnDY6rH8AWc1TBheeNUsQP6JSnhiQkUFwe9/fFU8l9O1AKT 5lnl6+LKNjSocnX0d5BzFux+NIm/Fjo= X-MC-Unique: xELumVdxMquTkVhb8TTdQQ-1 X-MC-Unique: OxCWSfsLP_GBnwTINPSJ9Q-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 10/21] conf: Replace virNetworkDNSSrvDefParseXML(hardcoded) with namesake(generated) Date: Wed, 10 Jun 2020 09:20:38 +0800 Message-Id: <20200610012049.10774-11-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S12 X-Coremail-Antispam: 1Uf129KBjvJXoWxtFyrXF1fur15WFyrtFWDArb_yoW7Xr1kpF n5JasrArWrGF4rKFWjyrn5Cwn8ur1kJr45C3s3Z34xCw45Xr1fCr1xZr1xWrW5Cr9Yyr13 AFyavrs8Gr4UZF7anT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pRrb15UUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiSR4-T1dqAU+-+QAAsS X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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.84 on 10.5.11.22 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 88 +++-------------------------------------- src/conf/network_conf.h | 16 ++++---- 2 files changed, 14 insertions(+), 90 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 21b13ad..bfdc10b 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -183,16 +183,6 @@ virNetworkDNSHostDefClear(virNetworkDNSHostDefPtr def) } =20 =20 -static void -virNetworkDNSSrvDefClear(virNetworkDNSSrvDefPtr def) -{ - VIR_FREE(def->domain); - VIR_FREE(def->service); - VIR_FREE(def->protocol); - VIR_FREE(def->target); -} - - static void virNetworkDNSForwarderClear(virNetworkDNSForwarderPtr def) { @@ -784,7 +774,7 @@ virNetworkDNSHostDefParseXML(const char *networkName, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" \ "_-+/*" =20 -static int +int virNetworkDNSSrvDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, virNetworkDNSSrvDefPtr def, const char *networkName, @@ -894,74 +884,6 @@ virNetworkDNSSrvDefParseXMLHook(xmlNodePtr node G_GNUC= _UNUSED, } =20 =20 -static int -virNetworkDNSSrvDefParseXML(const char *networkName, - xmlNodePtr node, - xmlXPathContextPtr ctxt, - virNetworkDNSSrvDefPtr def, - bool partialOkay) -{ - g_autofree char *portStr =3D NULL; - g_autofree char *priorityStr =3D NULL; - g_autofree char *weightStr =3D NULL; - VIR_XPATH_NODE_AUTORESTORE(ctxt); - - 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"); - - portStr =3D virXMLPropString(node, "port"); - if (portStr) { - if (virStrToLong_uip(portStr, NULL, 0, &def->port) < 0) { - virReportError(VIR_ERR_XML_DETAIL, - _("invalid DNS SRV port attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - } - - priorityStr =3D virXMLPropString(node, "priority"); - if (priorityStr) { - if (virStrToLong_uip(priorityStr, NULL, 0, &def->priority) < 0) { - virReportError(VIR_ERR_XML_DETAIL, - _("Invalid DNS SRV priority attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - } - - weightStr =3D virXMLPropString(node, "weight"); - if (weightStr) { - if (virStrToLong_uip(weightStr, NULL, 0, &def->weight) < 0) { - virReportError(VIR_ERR_XML_DETAIL, - _("invalid DNS SRV weight attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - } - - if (virNetworkDNSSrvDefParseXMLHook(node, def, networkName, &partialOk= ay, - def->domain, def->service, - def->protocol, def->target, - portStr, priorityStr, weightStr) <= 0) - goto error; - - return 0; - - error: - virNetworkDNSSrvDefClear(def); - return -1; -} - - int virNetworkDNSTxtDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, virNetworkDNSTxtDefPtr def, @@ -1112,8 +1034,8 @@ 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->n= srvs], + networkName, NULL) < 0) { goto cleanup; } def->nsrvs++; @@ -3661,6 +3583,7 @@ virNetworkDefUpdateDNSSrv(virNetworkDefPtr def, bool isAdd =3D (command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST || command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); int foundCt =3D 0; + bool notAdd; =20 memset(&srv, 0, sizeof(srv)); =20 @@ -3674,7 +3597,8 @@ virNetworkDefUpdateDNSSrv(virNetworkDefPtr def, if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "srv") < 0) goto cleanup; =20 - if (virNetworkDNSSrvDefParseXML(def->name, ctxt->node, ctxt, &srv, !is= Add) < 0) + notAdd =3D !isAdd; + if (virNetworkDNSSrvDefParseXML(ctxt->node, &srv, def->name, ¬Add) = < 0) goto cleanup; =20 for (i =3D 0; i < dns->nsrvs; i++) { diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index b3c2895..3a4d829 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -137,14 +137,14 @@ struct _virNetworkDNSTxtDef { /* genparse:conciseho= ok, genformat */ =20 typedef struct _virNetworkDNSSrvDef virNetworkDNSSrvDef; typedef virNetworkDNSSrvDef *virNetworkDNSSrvDefPtr; -struct _virNetworkDNSSrvDef { - char *domain; - char *service; - char *protocol; - char *target; - unsigned int port; - unsigned int priority; - unsigned int weight; +struct _virNetworkDNSSrvDef { /* genparse:withhook */ + char *domain; /* xmlattr */ + char *service; /* xmlattr */ + char *protocol; /* xmlattr */ + char *target; /* xmlattr */ + unsigned int port; /* xmlattr */ + unsigned int priority; /* xmlattr */ + unsigned int weight; /* xmlattr */ }; =20 typedef struct _virNetworkDNSHostDef virNetworkDNSHostDef; --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752431; cv=none; d=zohomail.com; s=zohoarc; b=gI/dHjxdt6VUChTJ/LRnsKv5TFtTVYKb+tAQnO9O1yPJyz4BGI75MueOtJKt0474e+nCbtp/Y+pfH2R9+CajrZssGij07xzUHwU4t3A31f0MAqvReCyJJJVJFE194zeQ74eWLy7y7tLA+xu6Cf9fbtFtha4iAe/k7wB0xN4kc0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752431; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=SrIcnpp/w+DHaoay9HDWACvDwM+GzamWuJI7Isd9jZA=; b=MKEpl2heEN5zsDvdJpzcI9zmk9WUlT2R1auIiIGRJgrv8RrUUBSoWme4Dqw5MliqVeQvbczw0J6jeIeXFkcQvHymBWxzw+eWPYOk4dYP8C7Dz/RHEE5VBmZXHMzmOpormL0v5cFDqQLAxwLvmVzDlMiF4aNk8zgywuSLAzSWC00= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1591752431841866.1575306850083; Tue, 9 Jun 2020 18:27:11 -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-493-k7LbjrOQM6mCXyHEGrXbgA-1; Tue, 09 Jun 2020 21:27:08 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6833B1005510; Wed, 10 Jun 2020 01:27:01 +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 459E710190A7; Wed, 10 Jun 2020 01:27:01 +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 12DDAB34B3; Wed, 10 Jun 2020 01:27:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1QvCR027365 for ; Tue, 9 Jun 2020 21:26:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0563C2026E1C; Wed, 10 Jun 2020 01:26:57 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F34732026D5D for ; Wed, 10 Jun 2020 01:26:54 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (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 2EC1780CDB3 for ; Wed, 10 Jun 2020 01:26:54 +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-260-ghmUwR4iONW2cxgc2jcxGQ-1; Tue, 09 Jun 2020 21:26:51 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S13; Wed, 10 Jun 2020 09:21:35 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752430; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=SrIcnpp/w+DHaoay9HDWACvDwM+GzamWuJI7Isd9jZA=; b=UaRM45ORlFhIbTKkbqKTheE3JzGHoGAe85uEIHRUBSL6S+D/VS2kPGUNprSLNWCQjqO04k JvBFMywwhfyXNfOb2T4B018MtbcLd7sHwQ7AFyNyAD7VPOYslIE1p8pYttYm6izGoWhOTo uEKijP2/lqE9A9zhfKBsryOGO2TeaWo= X-MC-Unique: k7LbjrOQM6mCXyHEGrXbgA-1 X-MC-Unique: ghmUwR4iONW2cxgc2jcxGQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 11/21] conf: Generate virNetworkDNSSrvDefFormatBuf Date: Wed, 10 Jun 2020 09:20:39 +0800 Message-Id: <20200610012049.10774-12-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S13 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRpE_MDUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbicQA-T1lZvNe9ugAAst X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.84 on 10.5.11.22 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 18 ++---------------- src/conf/network_conf.h | 4 ++-- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index bfdc10b..e8e7922 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2275,22 +2275,8 @@ virNetworkDNSDefFormat(virBufferPtr buf, =20 for (i =3D 0; i < def->nsrvs; i++) { if (def->srvs[i].service && def->srvs[i].protocol) { - virBufferEscapeString(buf, "srvs[i].service); - virBufferEscapeString(buf, "protocol=3D'%s'", def->srvs[i].pro= tocol); - - if (def->srvs[i].domain) - virBufferEscapeString(buf, " domain=3D'%s'", def->srvs[i].= domain); - if (def->srvs[i].target) - virBufferEscapeString(buf, " target=3D'%s'", def->srvs[i].= target); - if (def->srvs[i].port) - virBufferAsprintf(buf, " port=3D'%d'", def->srvs[i].port); - if (def->srvs[i].priority) - virBufferAsprintf(buf, " priority=3D'%d'", def->srvs[i].pr= iority); - if (def->srvs[i].weight) - virBufferAsprintf(buf, " weight=3D'%d'", def->srvs[i].weig= ht); - - virBufferAddLit(buf, "/>\n"); + if (virNetworkDNSSrvDefFormatBuf(buf, "srv", &def->srvs[i], NU= LL) < 0) + return -1; } } =20 diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 3a4d829..c867f27 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -137,10 +137,10 @@ struct _virNetworkDNSTxtDef { /* genparse:conciseho= ok, genformat */ =20 typedef struct _virNetworkDNSSrvDef virNetworkDNSSrvDef; typedef virNetworkDNSSrvDef *virNetworkDNSSrvDefPtr; -struct _virNetworkDNSSrvDef { /* genparse:withhook */ - char *domain; /* xmlattr */ +struct _virNetworkDNSSrvDef { /* genparse:withhook, genformat */ char *service; /* xmlattr */ char *protocol; /* xmlattr */ + char *domain; /* xmlattr */ char *target; /* xmlattr */ unsigned int port; /* xmlattr */ unsigned int priority; /* xmlattr */ --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752429; cv=none; d=zohomail.com; s=zohoarc; b=oH7h7WD8C2M4nwkCaep6n8WCSLOyuyTHsPCZlo20h9ImCuj2mT+PPJ79dycucifruM8NixcyBrRxH35xF0W07Ee2m2lAHDddRyBiWqL9+dKJ0cjt5F1rBYfiGShjMV0XVGC1Ff0gHESFMh1zHAxl+R1WH7wU4ijWzF7xV9bpdjA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752429; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=2Nid3Sq6aDpdGHsB+J90epwEDzoi0V5Uiz2tZhwd1sw=; b=GOjRsOOPEsNjeINezVk9sRq4cxuXrs5rtcKEes2ofhpeNixnTWbF+5y3Qq+mx/ylMyvDNGy1LR7zP5fsZXCIcA6aWq45Ncia/PVMTjjXvdobq7pjrMWwRTPS9RXWABJG3Cz1B8ucN855olq13jXVwJc9if4QnDZdFZELfoys3+E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1591752429948590.0537830940045; Tue, 9 Jun 2020 18:27:09 -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-387-gfaWNtxJPOmAVlMetf9hAQ-1; Tue, 09 Jun 2020 21:27:07 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6C958800053; Wed, 10 Jun 2020 01:26:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4F6247A068; Wed, 10 Jun 2020 01:26:56 +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 201C11805309; Wed, 10 Jun 2020 01:26:56 +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 05A1QtKd027342 for ; Tue, 9 Jun 2020 21:26:55 -0400 Received: by smtp.corp.redhat.com (Postfix) id EC6EB2166BA3; Wed, 10 Jun 2020 01:26:54 +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 E82192166BA2 for ; Wed, 10 Jun 2020 01:26:54 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (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 CE4DF811E7A for ; Wed, 10 Jun 2020 01:26:54 +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-502-fKYqUJwcM-CRXK9IJnPr5Q-1; Tue, 09 Jun 2020 21:26:51 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S14; Wed, 10 Jun 2020 09:21:37 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752428; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=2Nid3Sq6aDpdGHsB+J90epwEDzoi0V5Uiz2tZhwd1sw=; b=NGR8x/BY03t19Xk+kqr3j/kmx4ZyVSOuJU3BrQaUAqXkH6TYnZ721m7As+bmbhjjmP2421 I5+R1uqKJdS3N94wl49c5db5/fXlCSGLn1BAo4ll3Us/AaIIws/OS7thFPopDMf9kTCivX 7JcliSUvKhqMhF9yiSft2By+DGGb48A= X-MC-Unique: gfaWNtxJPOmAVlMetf9hAQ-1 X-MC-Unique: fKYqUJwcM-CRXK9IJnPr5Q-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 12/21] util: Add parsexml/formatbuf helper functions for virSocketAddr Date: Wed, 10 Jun 2020 09:20:40 +0800 Message-Id: <20200610012049.10774-13-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S14 X-Coremail-Antispam: 1Uf129KBjvJXoWxAw43Gr13Cr4DJF1UXw13urg_yoWrJrWkpF 15t3W5XrWktws3Zw4Iqr4Y9r1SqF18XayUXa47uw10kFs8X3W3t3ZFqFy3Gr1rJFWjyF48 Xrn8CrWkC3WUAaUanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pRrb15UUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiTgE-T1dqAY1R9AAAsr X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.15 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Implement the parsexml/formatbuf functions for virSocketAddr. Signed-off-by: Shi Lei --- src/util/virsocketaddr.c | 38 ++++++++++++++++++++++++++++++++++++++ src/util/virsocketaddr.h | 22 ++++++++++++++++++---- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c index a858a69..fd29678 100644 --- a/src/util/virsocketaddr.c +++ b/src/util/virsocketaddr.c @@ -157,6 +157,14 @@ int virSocketAddrParse(virSocketAddrPtr addr, const ch= ar *val, int family) return len; } =20 +int virSocketAddrParseXML(const char *val, + virSocketAddrPtr addr, + const char *instname G_GNUC_UNUSED, + void *opaque G_GNUC_UNUSED) +{ + return virSocketAddrParse(addr, val, AF_UNSPEC); +} + /** * virSocketAddrParseAny: * @addr: where to store the return value, optional. @@ -1316,3 +1324,33 @@ virSocketAddrFree(virSocketAddrPtr addr) { VIR_FREE(addr); } + +void +virSocketAddrClear(virSocketAddrPtr addr) +{ + memset(addr, 0, sizeof(virSocketAddr)); +} + +int +virSocketAddrFormatBuf(virBufferPtr buf, + const char *fmt, + const virSocketAddr *addr, + void *opaque G_GNUC_UNUSED) +{ + g_autofree char *str =3D NULL; + if (!VIR_SOCKET_ADDR_VALID(addr)) + return 0; + + str =3D virSocketAddrFormatFull(addr, false, NULL); + if (!str) + return -1; + + virBufferAsprintf(buf, fmt, str); + return 0; +} + +bool +virSocketAddrCheck(const virSocketAddr *addr, void *opaque G_GNUC_UNUSED) +{ + return VIR_SOCKET_ADDR_VALID(addr); +} diff --git a/src/util/virsocketaddr.h b/src/util/virsocketaddr.h index d06e751..7ef4f35 100644 --- a/src/util/virsocketaddr.h +++ b/src/util/virsocketaddr.h @@ -18,11 +18,14 @@ =20 #pragma once =20 +#include "virbuffer.h" #include "virsocket.h" =20 #define VIR_LOOPBACK_IPV4_ADDR "127.0.0.1" =20 -typedef struct { +typedef struct _virSocketAddr virSocketAddr; +typedef virSocketAddr *virSocketAddrPtr; +struct _virSocketAddr { union { struct sockaddr sa; struct sockaddr_storage stor; @@ -33,7 +36,7 @@ typedef struct { #endif } data; socklen_t len; -} virSocketAddr; +}; =20 #define VIR_SOCKET_ADDR_VALID(s) \ ((s)->data.sa.sa_family !=3D AF_UNSPEC) @@ -50,8 +53,6 @@ typedef struct { #define VIR_SOCKET_ADDR_IPV4_ARPA "in-addr.arpa" #define VIR_SOCKET_ADDR_IPV6_ARPA "ip6.arpa" =20 -typedef virSocketAddr *virSocketAddrPtr; - typedef struct _virSocketAddrRange virSocketAddrRange; typedef virSocketAddrRange *virSocketAddrRangePtr; struct _virSocketAddrRange { @@ -70,6 +71,11 @@ int virSocketAddrParse(virSocketAddrPtr addr, const char *val, int family); =20 +int virSocketAddrParseXML(const char *val, + virSocketAddrPtr addr, + const char *instname, + void *opaque); + int virSocketAddrParseAny(virSocketAddrPtr addr, const char *val, int family, @@ -93,6 +99,11 @@ char *virSocketAddrFormatFull(const virSocketAddr *addr, bool withService, const char *separator); =20 +int virSocketAddrFormatBuf(virBufferPtr buf, + const char *fmt, + const virSocketAddr *addr, + void *opaque); + char *virSocketAddrGetPath(virSocketAddrPtr addr); =20 int virSocketAddrSetPort(virSocketAddrPtr addr, int port); @@ -145,5 +156,8 @@ int virSocketAddrPTRDomain(const virSocketAddr *addr, ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3); =20 void virSocketAddrFree(virSocketAddrPtr addr); +void virSocketAddrClear(virSocketAddrPtr addr); =20 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSocketAddr, virSocketAddrFree); + +bool virSocketAddrCheck(const virSocketAddr *addr, void *opaque); --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752484; cv=none; d=zohomail.com; s=zohoarc; b=QzU3cjGTQDOHJRsdnTmU7xjG0P3vZstqqkMxrW1TK0WckXaEzP3yn+nxpjSImPEJuowJYUIvPcQ/aCbT5eA6LH0xompTlLMPrlJTbMDEWFY7CRPSRT1J+6F4wvPNN50rd4+DbCWfMzrglzxy1NW+uf/HdXE5Z9iNpEGfX9GYxSk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752484; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=yac/PEbum13zrlAg0jK6Vdwwv5qTBm+1zKELO/0DiJw=; b=QBwGWitRP/i8MX/9t6Bm21wxasOLLrtNLUcLgyE2pb72wsrMceEduxRHmpdiEGWw+pw9u1xk5qx01e9b0kIHDpKMKd9eDcDUkLuJm+uI4LA+pDhQEBT3iFicMiLbr+36aU2pUZWAnzz3jU5cr4ef4pS4nGsb/6XBqd0SzwlFo6Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1591752484451165.6872713592851; Tue, 9 Jun 2020 18:28:04 -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-421-Os-nJwxiM9evl8POAuYUEg-1; Tue, 09 Jun 2020 21:27:10 -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 9EA22835B57; Wed, 10 Jun 2020 01:27:03 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 80835806BD; Wed, 10 Jun 2020 01:27:03 +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 507941805312; Wed, 10 Jun 2020 01:27:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1QvwW027372 for ; Tue, 9 Jun 2020 21:26:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id 996C78054B; Wed, 10 Jun 2020 01:26:57 +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 92589D1EB4 for ; Wed, 10 Jun 2020 01:26:55 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.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 98A98811E7A for ; Wed, 10 Jun 2020 01:26:55 +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-359-b8RpJXqKMnmrHBGxO07jKw-1; Tue, 09 Jun 2020 21:26:52 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S15; Wed, 10 Jun 2020 09:21:39 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752483; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=yac/PEbum13zrlAg0jK6Vdwwv5qTBm+1zKELO/0DiJw=; b=UqbGV2TbRmHiMgujElmsi2GB2RDrFuip2OiQlXvETVGbrWXSBv86cUg4MX4KoglzhI5llM 3OUDPyojNHhVseLoeR0GbePSCTsLknHR1HW2m7QRtV1OHy+Q0QhJLzDftlDI+HbXrU9PIR xisbdlMp4/ZhZCvwGNgNfYSXKRU3piw= X-MC-Unique: Os-nJwxiM9evl8POAuYUEg-1 X-MC-Unique: b8RpJXqKMnmrHBGxO07jKw-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 13/21] conf: Extract error-checking code from virNetworkDNSHostDefParseXML Date: Wed, 10 Jun 2020 09:20:41 +0800 Message-Id: <20200610012049.10774-14-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S15 X-Coremail-Antispam: 1Uf129KBjvJXoWxWFy7KFW5Aw13uF18AFWxtFb_yoW5Gw43pF 4fJa98tr4kWr1ak397KF18Kw13Xrykt345Kryfuw1UZFW7Xw18Grs7XFy5WasxGry5Xr43 AF4ayws5Gr4UA3JanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zEeHqfUUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiigQ-T1tVg+kAwgAAsY X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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 X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 64 ++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e8e7922..7a3dcd4 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -692,29 +692,62 @@ virNetworkDHCPDefParseXML(const char *networkName, =20 =20 static int -virNetworkDNSHostDefParseXML(const char *networkName, - xmlNodePtr node, - virNetworkDNSHostDefPtr def, - bool partialOkay) +virNetworkDNSHostDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, + virNetworkDNSHostDefPtr def, + const char *networkName, + void *opaque, + char *ip, + int nHostnameNodes G_GNUC_UNUSED) { - xmlNodePtr cur; - char *ip; + bool partialOkay =3D false; =20 - if (!(ip =3D virXMLPropString(node, "ip")) && !partialOkay) { + if (opaque) + partialOkay =3D *((bool *) opaque); + + if (!ip && !partialOkay) { virReportError(VIR_ERR_XML_DETAIL, _("Missing IP address in network '%s' DNS HOST reco= rd"), networkName); goto error; } =20 + if (def->nnames =3D=3D 0 && !partialOkay) { + virReportError(VIR_ERR_XML_DETAIL, + _("Missing hostname in network '%s' DNS HOST record= "), + networkName); + goto error; + } + + if (!VIR_SOCKET_ADDR_VALID(&def->ip) && def->nnames =3D=3D 0) { + virReportError(VIR_ERR_XML_DETAIL, + _("Missing ip and hostname in network '%s' DNS HOST= record"), + networkName); + goto error; + } + + return 0; + + error: + return -1; +} + + +static int +virNetworkDNSHostDefParseXML(const char *networkName, + xmlNodePtr node, + virNetworkDNSHostDefPtr def, + bool partialOkay) +{ + xmlNodePtr cur; + g_autofree char *ip =3D NULL; + + ip =3D virXMLPropString(node, "ip"); if (ip && (virSocketAddrParse(&def->ip, ip, AF_UNSPEC) < 0)) { virReportError(VIR_ERR_XML_DETAIL, _("Invalid IP address in network '%s' DNS HOST reco= rd"), networkName); - VIR_FREE(ip); goto error; } - VIR_FREE(ip); =20 cur =3D node->children; while (cur !=3D NULL) { @@ -737,19 +770,10 @@ virNetworkDNSHostDefParseXML(const char *networkName, } cur =3D cur->next; } - if (def->nnames =3D=3D 0 && !partialOkay) { - virReportError(VIR_ERR_XML_DETAIL, - _("Missing hostname in network '%s' DNS HOST record= "), - networkName); - goto error; - } =20 - if (!VIR_SOCKET_ADDR_VALID(&def->ip) && def->nnames =3D=3D 0) { - virReportError(VIR_ERR_XML_DETAIL, - _("Missing ip and hostname in network '%s' DNS HOST= record"), - networkName); + if (virNetworkDNSHostDefParseXMLHook(node, def, networkName, &partialO= kay, + ip, def->nnames) < 0) goto error; - } =20 return 0; =20 --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1591752429; cv=none; d=zohomail.com; s=zohoarc; b=N1TXQqxPAEto5t3GrBVhmyEbZlVpnouAYJZJ2/S4pRhtvaLX4+Bv5vX6LJLjtEyGpyNEGAj0tpQ2qihlnJfYwICIO9xi4QvEalqfzaqBuGakCsI0BLtg9bN7N3+Qv3ys7of7Hbs8UU0bzJEwHs41NP8LxoMi4XJ6fxILh2MsgtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752429; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=3jzqT1Y+MurOGDmmlte4dGMOpVEl067roTWHYcOWyIg=; b=XD+oEg1P2rEUB7cJYS4Ey6lO+Y+7MxA/BllYRcU7ohj9cV0JJP7lSDTk7muIX4RmbyZnlIziy/+/0Le1z4GQcBTaCmKM5kIbVusU10gSVtY3T1yohKcXhbAQNn4vS/nBF3RbnkNn81wUJg2y6r/SDGP97OvAtRL8TjZ+PRbv+Xc= 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 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 1591752429780924.1700154528146; Tue, 9 Jun 2020 18:27:09 -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-139-mLOKcnbWNrO18ChadS41rw-1; Tue, 09 Jun 2020 21:27:06 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 84D661054FA1; Wed, 10 Jun 2020 01:26:59 +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 63C5218A56; Wed, 10 Jun 2020 01:26:59 +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 393DBB34AE; Wed, 10 Jun 2020 01:26:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1Qvsl027373 for ; Tue, 9 Jun 2020 21:26:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id 96EFE9D77; Wed, 10 Jun 2020 01:26:57 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9193B8054B for ; Wed, 10 Jun 2020 01:26:54 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (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 D29F180CDB5 for ; Wed, 10 Jun 2020 01:26:54 +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-22-iaNWdsmsOfalDVHDoSUJWw-1; Tue, 09 Jun 2020 21:26:51 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S16; Wed, 10 Jun 2020 09:21:42 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752428; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=3jzqT1Y+MurOGDmmlte4dGMOpVEl067roTWHYcOWyIg=; b=f1Ps4N/ie1G9I5yGg8iuD2zlatJMD8G6tlH9kYbpBINalQy95wLMW7DOFZAeYskiVlFPE6 fu47UsTd+k541DKEif+TR9QOgvkmqlzzkESNx3DV1HoCrJcEk9Fj+XFj6y1Z2yCgkQkFME hHARGl/No3cUsNIk/9hRRpfw9LkfJnA= X-MC-Unique: mLOKcnbWNrO18ChadS41rw-1 X-MC-Unique: iaNWdsmsOfalDVHDoSUJWw-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 14/21] conf: Replace virNetworkDNSHostDefParseXML(hardcoded) with namesake(generated) Date: Wed, 10 Jun 2020 09:20:42 +0800 Message-Id: <20200610012049.10774-15-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S16 X-Coremail-Antispam: 1Uf129KBjvJXoWxCry8Jw43Cryrur4xurykKrg_yoWrAF4fpF sxXanrAw48Wa1fKrW2yrnakrnxurykJw1Ykryfuw4fA3yUXr1xGws7uF1xWa98GryYyr13 CF4Yvws8GrW7XF7anT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pRrb15UUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiUAY-T1f4p9wAkQAAsj X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.12 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 72 ++++------------------------------------- src/conf/network_conf.h | 6 ++-- 2 files changed, 10 insertions(+), 68 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 7a3dcd4..29ef3cf 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -174,15 +174,6 @@ virNetworkIPDefClear(virNetworkIPDefPtr def) } =20 =20 -static void -virNetworkDNSHostDefClear(virNetworkDNSHostDefPtr def) -{ - while (def->nnames) - VIR_FREE(def->names[--def->nnames]); - VIR_FREE(def->names); -} - - static void virNetworkDNSForwarderClear(virNetworkDNSForwarderPtr def) { @@ -691,12 +682,12 @@ virNetworkDHCPDefParseXML(const char *networkName, } =20 =20 -static int +int virNetworkDNSHostDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, virNetworkDNSHostDefPtr def, const char *networkName, void *opaque, - char *ip, + const char *ip, int nHostnameNodes G_GNUC_UNUSED) { bool partialOkay =3D false; @@ -732,57 +723,6 @@ virNetworkDNSHostDefParseXMLHook(xmlNodePtr node G_GNU= C_UNUSED, } =20 =20 -static int -virNetworkDNSHostDefParseXML(const char *networkName, - xmlNodePtr node, - virNetworkDNSHostDefPtr def, - bool partialOkay) -{ - xmlNodePtr cur; - g_autofree char *ip =3D NULL; - - ip =3D virXMLPropString(node, "ip"); - if (ip && (virSocketAddrParse(&def->ip, ip, AF_UNSPEC) < 0)) { - virReportError(VIR_ERR_XML_DETAIL, - _("Invalid IP address in network '%s' DNS HOST reco= rd"), - networkName); - goto error; - } - - cur =3D node->children; - while (cur !=3D NULL) { - if (cur->type =3D=3D XML_ELEMENT_NODE && - virXMLNodeNameEqual(cur, "hostname")) { - if (cur->children !=3D NULL) { - char *name =3D (char *) xmlNodeGetContent(cur); - - if (!name) { - virReportError(VIR_ERR_XML_DETAIL, - _("Missing hostname in network '%s' D= NS HOST record"), - networkName); - goto error; - } - if (VIR_APPEND_ELEMENT(def->names, def->nnames, name) < = 0) { - VIR_FREE(name); - goto error; - } - } - } - cur =3D cur->next; - } - - if (virNetworkDNSHostDefParseXMLHook(node, def, networkName, &partialO= kay, - ip, def->nnames) < 0) - goto error; - - return 0; - - error: - virNetworkDNSHostDefClear(def); - return -1; -} - - /* This includes all characters used in the names of current * /etc/services and /etc/protocols files (on Fedora 20), except ".", * which we can't allow because it would conflict with the use of "." @@ -1038,8 +978,8 @@ virNetworkDNSDefParseXML(const char *networkName, goto cleanup; =20 for (i =3D 0; i < nhosts; i++) { - if (virNetworkDNSHostDefParseXML(networkName, hostNodes[i], - &def->hosts[def->nhosts], fal= se) < 0) { + if (virNetworkDNSHostDefParseXML(hostNodes[i], &def->hosts[def= ->nhosts], + networkName, NULL) < 0) { goto cleanup; } def->nhosts++; @@ -3498,6 +3438,7 @@ virNetworkDefUpdateDNSHost(virNetworkDefPtr def, bool isAdd =3D (command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST || command =3D=3D VIR_NETWORK_UPDATE_COMMAND_ADD_LAST); int foundCt =3D 0; + bool notAdd; =20 memset(&host, 0, sizeof(host)); =20 @@ -3511,7 +3452,8 @@ virNetworkDefUpdateDNSHost(virNetworkDefPtr def, if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0) goto cleanup; =20 - if (virNetworkDNSHostDefParseXML(def->name, ctxt->node, &host, !isAdd)= < 0) + notAdd =3D !isAdd; + if (virNetworkDNSHostDefParseXML(ctxt->node, &host, def->name, ¬Add= ) < 0) goto cleanup; =20 for (i =3D 0; i < dns->nhosts; i++) { diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index c867f27..b715dc3 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -149,10 +149,10 @@ struct _virNetworkDNSSrvDef { /* genparse:withhook,= genformat */ =20 typedef struct _virNetworkDNSHostDef virNetworkDNSHostDef; typedef virNetworkDNSHostDef *virNetworkDNSHostDefPtr; -struct _virNetworkDNSHostDef { - virSocketAddr ip; +struct _virNetworkDNSHostDef { /* genparse:withhook */ + virSocketAddr ip; /* xmlattr */ size_t nnames; - char **names; + char **names; /* xmlelem:hostname, array */ }; =20 =20 --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1591752434; cv=none; d=zohomail.com; s=zohoarc; b=Tj2S6WhFzzGR3mJg1c/MHS7gfbLMfBe6y6+uMDzhpvVKC/1s1LSYdzoF2kpVFqbXP+MNFmuXgCe1taLkws4M0Nv4PLwFfPjyg7hvGi/aZd47S+CgvayKUFGCRKHxScClhiaBvqtuQb/PpWoDk1MzQ4nAyp1bNTPmVVi/cKEKa1k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752434; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=UvwZ/YvmHA7zAQb9napTgPhWvs5nvjzoifTZpLSGr2M=; b=UrYlQQvcA4L/UGPjWiLG6STubjzaZznxdgMsjyRF5dvntEHc6e1PoTyxfq7UHRN78itVu8yf20xzqS1woKRkw1FB8l4uY9+I9hd0Ym6CDwmvdkp8Hpl5O4q6Nqeq4Blmk4ebDaDET9FU9peoV4A7TjbtW/H9gQ3Tls4KKca/MoM= 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 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 1591752434005252.85328369575916; Tue, 9 Jun 2020 18:27:14 -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-421-j_dWKU-jOxO5Ut7bpWa_DQ-1; Tue, 09 Jun 2020 21:27:10 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0EB19EC1B4; Wed, 10 Jun 2020 01:27:03 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DED15101E672; Wed, 10 Jun 2020 01:27:02 +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 AEA26180530F; Wed, 10 Jun 2020 01:27:02 +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 05A1Qwsm027389 for ; Tue, 9 Jun 2020 21:26:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id BEB452166BA3; Wed, 10 Jun 2020 01:26:58 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BAC262166BA2 for ; Wed, 10 Jun 2020 01:26:58 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (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 A5C0A80CDB5 for ; Wed, 10 Jun 2020 01:26:58 +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-284-kQ_zy75UPU6197frJrpGkQ-1; Tue, 09 Jun 2020 21:26:55 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S17; Wed, 10 Jun 2020 09:21:44 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752432; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=UvwZ/YvmHA7zAQb9napTgPhWvs5nvjzoifTZpLSGr2M=; b=Bap+UZEUwdVrqL7cHsfFEhU6OCWXMSzAe2GwFkgdvpSSs/XDkeQTXJIQ7vu4jztuhDr1qr 6adNSP/SM3DAq8gyJwMtvvUIXwoIO9Q1DF2uxqPQW0/8r5T06KrFTPquPe7HwgEMqZcsYH AwsmMN+oW4R1Zqr32rU3ABDUlFPJzPg= X-MC-Unique: j_dWKU-jOxO5Ut7bpWa_DQ-1 X-MC-Unique: kQ_zy75UPU6197frJrpGkQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 15/21] conf: Generate virNetworkDNSHostDefFormatBuf Date: Wed, 10 Jun 2020 09:20:43 +0800 Message-Id: <20200610012049.10774-16-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S17 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRBnQUUUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiQwg-T1bdG+83qAAAsb X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.84 on 10.5.11.22 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 15 +++------------ src/conf/network_conf.h | 2 +- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 29ef3cf..1fea580 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2176,7 +2176,7 @@ static int virNetworkDNSDefFormat(virBufferPtr buf, const virNetworkDNSDef *def) { - size_t i, j; + size_t i; =20 if (!(def->enable || def->forwardPlainNames || def->nfwds || def->nhos= ts || def->nsrvs || def->ntxts)) @@ -2246,17 +2246,8 @@ virNetworkDNSDefFormat(virBufferPtr buf, =20 if (def->nhosts) { for (i =3D 0; i < def->nhosts; i++) { - char *ip =3D virSocketAddrFormat(&def->hosts[i].ip); - - virBufferAsprintf(buf, "\n", ip); - virBufferAdjustIndent(buf, 2); - for (j =3D 0; j < def->hosts[i].nnames; j++) - virBufferEscapeString(buf, "%s\n", - def->hosts[i].names[j]); - - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); - VIR_FREE(ip); + if (virNetworkDNSHostDefFormatBuf(buf, "host", &def->hosts[i],= NULL) < 0) + return -1; } } virBufferAdjustIndent(buf, -2); diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index b715dc3..a5a4939 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -149,7 +149,7 @@ struct _virNetworkDNSSrvDef { /* genparse:withhook, g= enformat */ =20 typedef struct _virNetworkDNSHostDef virNetworkDNSHostDef; typedef virNetworkDNSHostDef *virNetworkDNSHostDefPtr; -struct _virNetworkDNSHostDef { /* genparse:withhook */ +struct _virNetworkDNSHostDef { /* genparse:withhook, genformat */ virSocketAddr ip; /* xmlattr */ size_t nnames; char **names; /* xmlelem:hostname, array */ --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) client-ip=205.139.110.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 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752436; cv=none; d=zohomail.com; s=zohoarc; b=h8nSuP8nyg8Y339oSVgdWViCQRchp2tPE4kXvqQPYpEdvzcSvgHAvGN7W/WjejUTU3klEa18W+xuywE6+JLAmyTtNUA0AszaYOxMEDLZvxNLbLx1PhhPMIsB9UPEz5DaURE7gsrBRwl8QLxw7KpY5ZBVaND5a1sHGQFLwdDx1DA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752436; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=1+2M6IlwMfgNlHwweNeSBiqoLDEEyHKvLBjk6GRhEnA=; b=gJF+dwh3euyC0eH8AP3iO+DV40tQTdFpWn49X8V2MciAZamu2i1ivA0unrXsv+d+IekJaikc5RgxulHPoh2lFpnQqJm9LqFu1c183sf0VMcQsyrvSHEAHgxa0GwtlXfo0uZnaqydTRSJHyeWGmUkKay0y0wReWcKx0SCj7zVMd8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by mx.zohomail.com with SMTPS id 1591752436759702.7991201848599; Tue, 9 Jun 2020 18:27:16 -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-162-QIzfks-lMyqgedEm9Y_UFQ-1; Tue, 09 Jun 2020 21:27:13 -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 0675E8015CB; Wed, 10 Jun 2020 01:27:07 +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 DBDD17F4FF; Wed, 10 Jun 2020 01:27:06 +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 AEAC9B34A9; Wed, 10 Jun 2020 01:27:05 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1Qv64027371 for ; Tue, 9 Jun 2020 21:26:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id 96F4080552; Wed, 10 Jun 2020 01:26:57 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 91E32B578C for ; Wed, 10 Jun 2020 01:26:57 +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 3916B856FFF for ; Wed, 10 Jun 2020 01:26:57 +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-431-i387mwc5Obyz9kBAeRzGzg-1; Tue, 09 Jun 2020 21:26:54 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S18; Wed, 10 Jun 2020 09:21:46 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752435; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=1+2M6IlwMfgNlHwweNeSBiqoLDEEyHKvLBjk6GRhEnA=; b=VN/YvRXGVeCtzpyoahUO5kHKObXMBseAm77BAJcA1rQICdQCsQmqHlOBKwkkxiI6UQYG85 Ug3+xWs2CU27pt1fuM288oSPzn4LH0p/C5qzZGhzNyKSSkVtEjjFUQvSBhoYyJyQodnsNz cfPOaXyjjoiFqBScdKxiKU6l8Db2WT0= X-MC-Unique: QIzfks-lMyqgedEm9Y_UFQ-1 X-MC-Unique: i387mwc5Obyz9kBAeRzGzg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 16/21] conf: Extract virNetworkDNSForwarderParseXML from virNetworkDNSParseXML Date: Wed, 10 Jun 2020 09:20:44 +0800 Message-Id: <20200610012049.10774-17-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S18 X-Coremail-Antispam: 1Uf129KBjvJXoWxCFykCF4DKry5XFy5uw13CFg_yoW5Jw4DpF s8tF98Kw4rWF1Sk3y2vw1rCr15WFykJay5K34fZw1qk3y3WryUCr4S9r1I9a4UWrWrtr43 AFWavrs8Gr4UAF7anT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pRrb15UUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiQwg-T1bdG+83qAABsa X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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 X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 74 +++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 1fea580..e1790bc 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -888,6 +888,57 @@ virNetworkDNSTxtDefParseXMLHook(xmlNodePtr node G_GNUC= _UNUSED, } =20 =20 +static int +virNetworkDNSForwarderParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, + virNetworkDNSForwarderPtr def, + const char *instname G_GNUC_UNUSED, + void *opaque G_GNUC_UNUSED, + const char *addr, + const char *domain G_GNUC_UNUSED) +{ + if (!(addr || def->domain)) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Invalid forwarder element, must contain " + "at least one of addr or domain")); + return -1; + } + + return 0; +} + + +static int +virNetworkDNSForwarderParseXML(xmlNodePtr node, + virNetworkDNSForwarderPtr def, + const char *networkName, + void *opaque) +{ + char *addr =3D virXMLPropString(node, "addr"); + + if (addr && virSocketAddrParse(&def->addr, + addr, AF_UNSPEC) < 0) { + virReportError(VIR_ERR_XML_ERROR, + _("Invalid forwarder IP address '%s' " + "in network '%s'"), + addr, networkName); + VIR_FREE(addr); + goto cleanup; + } + def->domain =3D virXMLPropString(node, "domain"); + + if (virNetworkDNSForwarderParseXMLHook(node, def, networkName, opaque, + addr, def->domain) < 0) + goto cleanup; + + VIR_FREE(addr); + + return 0; + + cleanup: + return -1; +} + + static int virNetworkDNSDefParseXML(const char *networkName, xmlNodePtr node, @@ -943,25 +994,12 @@ virNetworkDNSDefParseXML(const char *networkName, goto cleanup; =20 for (i =3D 0; i < nfwds; i++) { - char *addr =3D virXMLPropString(fwdNodes[i], "addr"); - - if (addr && virSocketAddrParse(&def->forwarders[i].addr, - addr, AF_UNSPEC) < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("Invalid forwarder IP address '%s' " - "in network '%s'"), - addr, networkName); - VIR_FREE(addr); + if (virNetworkDNSForwarderParseXML(fwdNodes[i], + &def->forwarders[i], + networkName, + NULL) < 0) goto cleanup; - } - def->forwarders[i].domain =3D virXMLPropString(fwdNodes[i], "d= omain"); - if (!(addr || def->forwarders[i].domain)) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("Invalid forwarder element, must contain " - "at least one of addr or domain")); - goto cleanup; - } - VIR_FREE(addr); + def->nfwds++; } } --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1591752442; cv=none; d=zohomail.com; s=zohoarc; b=cNGguBpnTXZ25VqS+vtLCcroRvcblDS4Ftxwzx+bkC1C54e9BA8HLioBWkj6JCVai8tPHZZYOvgpWsX7Wz3oMHGbp6eURSXCMvtUrBiPtkXgzpDvublejGK1qfmkdp+9ibpG58onzrjHCX6ULf+H/n0Mup0HG+k1BKGps1VbClg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752442; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=vwRfLpFulL+FlUVMBylZN1bRNu4HKrtcMctr/vZdHmY=; b=hDg3ri9xrKmv6Qqv5Xboq13ox/CBSDmSnZwPBqadumDcaeHCTfQjkTEDBafKi4QW3Vnxc796KKjloYWp+2UibnMkYV5IHHMWZfUA0KX26UsMEtkgLestqxHqJtShSYU0ViYRnaXCYOoPxtrmO4KCuYt4keKnmsfbvijmX0s4lgI= 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 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 1591752442270192.26202569656186; Tue, 9 Jun 2020 18:27:22 -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-257-xQ9zb3eFO5a9876_7B6RsA-1; Tue, 09 Jun 2020 21:27:19 -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 B0F54835B42; Wed, 10 Jun 2020 01:27:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 97E9A7A8D3; Wed, 10 Jun 2020 01:27:13 +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 6AB4A1804759; Wed, 10 Jun 2020 01:27:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1RAFG027517 for ; Tue, 9 Jun 2020 21:27:10 -0400 Received: by smtp.corp.redhat.com (Postfix) id 052A72026E1C; Wed, 10 Jun 2020 01:27:10 +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 016BE2026D5D for ; Wed, 10 Jun 2020 01:27:09 +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 DA9E0800655 for ; Wed, 10 Jun 2020 01:27:09 +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-487-0In1EWkDMMqSYrWFQOjXtg-1; Tue, 09 Jun 2020 21:27:06 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S19; Wed, 10 Jun 2020 09:21:47 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752441; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=vwRfLpFulL+FlUVMBylZN1bRNu4HKrtcMctr/vZdHmY=; b=NUjZ2m9yx2ZInXBchNY8tNwT8N29tMmU1NOXMfhD2DCTcCIVh0PTkEl/ViXmaJcc/4jBf+ ZM5Ymcwol7buC9qFxmX3Ez6Y04vckP5hRoTEo58GNmtORLCsfVERjUBWMBLbFA7LhikiMs eRCEUZjuweXLxX32fP+BFfGVSYI5T0c= X-MC-Unique: xQ9zb3eFO5a9876_7B6RsA-1 X-MC-Unique: 0In1EWkDMMqSYrWFQOjXtg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 17/21] conf: Replace virNetworkDNSForwarderParseXML(hardcoded) with namesake(generated) Date: Wed, 10 Jun 2020 09:20:45 +0800 Message-Id: <20200610012049.10774-18-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S19 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRWUDXUUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbigww-T1sfnRLYVAAAs4 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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 X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 41 +---------------------------------------- src/conf/network_conf.h | 6 +++--- 2 files changed, 4 insertions(+), 43 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e1790bc..8610fbc 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -174,13 +174,6 @@ virNetworkIPDefClear(virNetworkIPDefPtr def) } =20 =20 -static void -virNetworkDNSForwarderClear(virNetworkDNSForwarderPtr def) -{ - VIR_FREE(def->domain); -} - - static void virNetworkDNSDefClear(virNetworkDNSDefPtr def) { @@ -888,7 +881,7 @@ virNetworkDNSTxtDefParseXMLHook(xmlNodePtr node G_GNUC_= UNUSED, } =20 =20 -static int +int virNetworkDNSForwarderParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, virNetworkDNSForwarderPtr def, const char *instname G_GNUC_UNUSED, @@ -907,38 +900,6 @@ virNetworkDNSForwarderParseXMLHook(xmlNodePtr node G_G= NUC_UNUSED, } =20 =20 -static int -virNetworkDNSForwarderParseXML(xmlNodePtr node, - virNetworkDNSForwarderPtr def, - const char *networkName, - void *opaque) -{ - char *addr =3D virXMLPropString(node, "addr"); - - if (addr && virSocketAddrParse(&def->addr, - addr, AF_UNSPEC) < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("Invalid forwarder IP address '%s' " - "in network '%s'"), - addr, networkName); - VIR_FREE(addr); - goto cleanup; - } - def->domain =3D virXMLPropString(node, "domain"); - - if (virNetworkDNSForwarderParseXMLHook(node, def, networkName, opaque, - addr, def->domain) < 0) - goto cleanup; - - VIR_FREE(addr); - - return 0; - - cleanup: - return -1; -} - - static int virNetworkDNSDefParseXML(const char *networkName, xmlNodePtr node, diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index a5a4939..f14eef2 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -158,9 +158,9 @@ struct _virNetworkDNSHostDef { /* genparse:withhook, g= enformat */ =20 typedef struct _virNetworkDNSForwarder virNetworkDNSForwarder; typedef virNetworkDNSForwarder *virNetworkDNSForwarderPtr; -struct _virNetworkDNSForwarder { - virSocketAddr addr; - char *domain; +struct _virNetworkDNSForwarder { /* genparse:withhook */ + virSocketAddr addr; /* xmlattr */ + char *domain; /* xmlattr */ }; =20 typedef struct _virNetworkDNSDef virNetworkDNSDef; --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752444; cv=none; d=zohomail.com; s=zohoarc; b=GeJ78w0rPWc7a/hOSLt82dxL9jTlabuwcTSQW5BrADJFs+GnZ9pHh03yJ3zJrAWUQyQ5oA26DTZ3rD2FyXMTIgthrj3fUTIJGA1QIaiLnSNrR7fuoVwRNOq+f/TOCCukgFsYHhyASD6jClOPzHuS8BZ7cQZYo67GsKbsizqgYc0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752444; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=orKlLOYbtoj8KHQ4LAOrzX6FQk6DYMZkgMjeZ+ocfOE=; b=Vjop+ytmr8K6R1DXIhqUjesmHvjdyDbiJQNnOwfQn7e5Iwbq+i7rzGcdqeUDLCaYp7RUEbdIpR8uyA3qoKOsX4QpL39Ft6IKZgPenWAU00+4+bfxlIvVgxyDiBefj6NCzuvDKWBJ5ERxbDMtYlr4LwNeEY2RL0wJOq8KbFBlb74= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1591752444118264.49955120169545; Tue, 9 Jun 2020 18:27:24 -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-95--mkRPgkpPGKEOJwwaL2lgA-1; Tue, 09 Jun 2020 21:27:17 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5872B1883600; Wed, 10 Jun 2020 01:27:12 +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 37B0A9F4B; Wed, 10 Jun 2020 01:27:12 +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 CC1CDB34BC; Wed, 10 Jun 2020 01:27:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1RAd2027514 for ; Tue, 9 Jun 2020 21:27:10 -0400 Received: by smtp.corp.redhat.com (Postfix) id DD65B2026FFE; Wed, 10 Jun 2020 01:27:09 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D945C2026D5D for ; Wed, 10 Jun 2020 01:27:09 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.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 B78BA80522B for ; Wed, 10 Jun 2020 01:27:09 +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-19-m-f5r00OODGDooOpoflk2g-1; Tue, 09 Jun 2020 21:27:06 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S20; Wed, 10 Jun 2020 09:21:49 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752442; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=orKlLOYbtoj8KHQ4LAOrzX6FQk6DYMZkgMjeZ+ocfOE=; b=UaQaDqTfZkI4TV/O7hwL1LBFl7FJEOn974aXgCM77CaTscCeWCJuHjArbUStvWpVnIK1MP xkTIUwC2QLB5Z5Eys5t9Ca898F9EiuU3FzX2jTigvasUUItTGp127JGncJA9GHlAKQfueq Iy+mgfrZBMiPfFWfyKshNq1LB4yOB18= X-MC-Unique: -mkRPgkpPGKEOJwwaL2lgA-1 X-MC-Unique: m-f5r00OODGDooOpoflk2g-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 18/21] conf: Generate virNetworkDNSForwarderFormatBuf Date: Wed, 10 Jun 2020 09:20:46 +0800 Message-Id: <20200610012049.10774-19-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S20 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRpE_MDUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiWQ0-T1f4pmFcRgAAsW X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.12 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 21 ++++----------------- src/conf/network_conf.h | 4 ++-- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 8610fbc..3b93772 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -886,8 +886,8 @@ virNetworkDNSForwarderParseXMLHook(xmlNodePtr node G_GN= UC_UNUSED, virNetworkDNSForwarderPtr def, const char *instname G_GNUC_UNUSED, void *opaque G_GNUC_UNUSED, - const char *addr, - const char *domain G_GNUC_UNUSED) + const char *domain G_GNUC_UNUSED, + const char *addr) { if (!(addr || def->domain)) { virReportError(VIR_ERR_XML_ERROR, "%s", @@ -2213,22 +2213,9 @@ virNetworkDNSDefFormat(virBufferPtr buf, virBufferAdjustIndent(buf, 2); =20 for (i =3D 0; i < def->nfwds; i++) { - - virBufferAddLit(buf, "forwarders[i].domain) { - virBufferEscapeString(buf, " domain=3D'%s'", - def->forwarders[i].domain); - } - if (VIR_SOCKET_ADDR_VALID(&def->forwarders[i].addr)) { - char *addr =3D virSocketAddrFormat(&def->forwarders[i].addr); - - if (!addr) + if (virNetworkDNSForwarderFormatBuf(buf, "forwarder", + &def->forwarders[i], NULL) < 0) return -1; - - virBufferAsprintf(buf, " addr=3D'%s'", addr); - VIR_FREE(addr); - } - virBufferAddLit(buf, "/>\n"); } =20 for (i =3D 0; i < def->ntxts; i++) { diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index f14eef2..1313c3e 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -158,9 +158,9 @@ struct _virNetworkDNSHostDef { /* genparse:withhook, g= enformat */ =20 typedef struct _virNetworkDNSForwarder virNetworkDNSForwarder; typedef virNetworkDNSForwarder *virNetworkDNSForwarderPtr; -struct _virNetworkDNSForwarder { /* genparse:withhook */ - virSocketAddr addr; /* xmlattr */ +struct _virNetworkDNSForwarder { /* genparse:withhook, genformat */ char *domain; /* xmlattr */ + virSocketAddr addr; /* xmlattr */ }; =20 typedef struct _virNetworkDNSDef virNetworkDNSDef; --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; 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 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752445; cv=none; d=zohomail.com; s=zohoarc; b=hx+BHh3igp7UKKXu4DBJSf3RraeNk+R2lIGX1HZOxwpCpejHV6NepcH07kRSwwNF8uXD9Oz3r0zMqA3g2mpkQ61pJHdLExeWRCqjbdCDv3pUqD8pgQLYhxksEBSdrRPtTEgd0ySGcbjrBlPhAhKGDbG/HeesyzZ0HcGUwQYEKL0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752445; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=jls0k5AiCxJmybpv7fs0wGHnGT3xm00zD9oNhSAvn20=; b=OW80nJJUaFEva6YLokaD9JBBTCesPsYpdj7hqOyEnqb8g43DOl3EzQ82AcgElflc42kV0m2ujLWk4gdM5wjx8r/5yJ2uXbjBgB2aVVNe6FG/mQCn+6Sj1KcmNSxMM0W+m3wtliMXy0KoyfxLPsX6X2R/ZQRyW6Xca7odaGuL85k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1591752445055691.634282985026; Tue, 9 Jun 2020 18:27:25 -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-18-kacDMneNPvS7rKjdIsbqHw-1; Tue, 09 Jun 2020 21:27:21 -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 105CB805731; Wed, 10 Jun 2020 01:27:16 +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 E61EC5D9F5; Wed, 10 Jun 2020 01:27:15 +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 BA52810480D; Wed, 10 Jun 2020 01:27:15 +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 05A1RC2k027566 for ; Tue, 9 Jun 2020 21:27:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id 741A62166BA3; Wed, 10 Jun 2020 01:27:12 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6FECB2166BA2 for ; Wed, 10 Jun 2020 01:27:09 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (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 8C681805221 for ; Wed, 10 Jun 2020 01:27:09 +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-450-ioOcIFecOlmjozimNHEOHg-1; Tue, 09 Jun 2020 21:27:06 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S21; Wed, 10 Jun 2020 09:21:51 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752443; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=jls0k5AiCxJmybpv7fs0wGHnGT3xm00zD9oNhSAvn20=; b=dNARREgESwtCoa9Mby8P2nDLD1m8dwLf2h2pnPoQGCl+5rjsdzyfEMIdfyiZvYZgTgkL7e 4GRALM9P9wEhSp+JONnO2sCQCAyZRkCkk67FxrV0qyq9beL5CLdYceKQoNcyAOGbU2WX7e RPlQf9T7t3vYis9xTpOz//0QIDQ4498= X-MC-Unique: kacDMneNPvS7rKjdIsbqHw-1 X-MC-Unique: ioOcIFecOlmjozimNHEOHg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 19/21] conf: Extract error-checking code from virNetworkDNSDefParseXML Date: Wed, 10 Jun 2020 09:20:47 +0800 Message-Id: <20200610012049.10774-20-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S21 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU5529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4R2Q6pUUUUU X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiDwk-T1nfQFcYiwAAs0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.14 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 3b93772..4c0751f 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -900,6 +900,30 @@ virNetworkDNSForwarderParseXMLHook(xmlNodePtr node G_G= NUC_UNUSED, } =20 =20 +static int +virNetworkDNSDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, + virNetworkDNSDefPtr def, + const char *networkName, + void *opaque G_GNUC_UNUSED, + const char *enable G_GNUC_UNUSED, + const char *forwardPlainNames G_GNUC_UNUSED, + int ntxts, + int nhosts, + int nsrvs, + int nfwds) +{ + if (def->enable =3D=3D VIR_TRISTATE_BOOL_NO && + (nfwds || nhosts || nsrvs || ntxts)) { + virReportError(VIR_ERR_XML_ERROR, + _("Extra data in disabled network '%s'"), + networkName); + return -1; + } + + return 0; +} + + static int virNetworkDNSDefParseXML(const char *networkName, xmlNodePtr node, @@ -1025,13 +1049,10 @@ virNetworkDNSDefParseXML(const char *networkName, } } =20 - if (def->enable =3D=3D VIR_TRISTATE_BOOL_NO && - (nfwds || nhosts || nsrvs || ntxts)) { - virReportError(VIR_ERR_XML_ERROR, - _("Extra data in disabled network '%s'"), - networkName); + if (virNetworkDNSDefParseXMLHook(node, def, networkName, NULL, + enable, forwardPlainNames, + ntxts, nhosts, nsrvs, nfwds) < 0) goto cleanup; - } =20 ret =3D 0; cleanup: --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1591752441; cv=none; d=zohomail.com; s=zohoarc; b=PMwp0TXL/ny5m3S0acXYOcCVt/nFUSGs1A2p/ny4QOwHTZyGYIBuboS9Khtekj1OAgoAuGGaQri4cF+lVjzggzZYFVNaFUR2NVZJJVGrLzklcQkk1R3rUB/O/AY/T0yf7Rdf5kS85o1z1Nb7RzMDEP7+KQVVlA3VJFj7Wmm9PeE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752441; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=TxAMgBCVW8NiySyECfsUQ6tgoeESIC9jea54PRd1eaQ=; b=imP4RDCQtak0CuA/wDjHqOTTMT3CNG9oJdHUjoM9WJx/NW2b/ntY11xTna1OtvT8tj1to+Naog+YEydkTFlrLSdyjvpzy6KHVBcJelTbsnJQ2m+TW+MxLnEs4UlhzC8qQh1QSnJX/k0lNPmBPDWdiCkbY2weMleF65ZhO7mE8x0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1591752441276496.8299384734803; Tue, 9 Jun 2020 18:27:21 -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-456-bCUtt-a5OWm6AgOTO26Rew-1; Tue, 09 Jun 2020 21:27:16 -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 6FFF6464; Wed, 10 Jun 2020 01:27:11 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 501947F4E5; Wed, 10 Jun 2020 01:27:11 +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 22C71180531F; Wed, 10 Jun 2020 01:27:11 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1R9Gu027508 for ; Tue, 9 Jun 2020 21:27:09 -0400 Received: by smtp.corp.redhat.com (Postfix) id 911D02026E1C; Wed, 10 Jun 2020 01:27:09 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8CC472026D5D for ; Wed, 10 Jun 2020 01:27:09 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (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 7335A8007A4 for ; Wed, 10 Jun 2020 01:27:09 +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-76-9meTNfVFNYe76wo2awidVA-1; Tue, 09 Jun 2020 21:27:06 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S22; Wed, 10 Jun 2020 09:21:53 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752439; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=TxAMgBCVW8NiySyECfsUQ6tgoeESIC9jea54PRd1eaQ=; b=gGnLCCUbwcLbI6BlkBXbKuPP17gqGWErIpyDVnlKfDnADFck1Ym6YRjn/1749B2n0qwcUQ PXmyFtclMB5BkXRpx+9SSBY3yZgQx71q/JOl1i/4pFVrkwTOVK2PrU0Ex4aaa5vSTVxEWP osjWzLm8JDBbN2qHG7lkROQskNqKRsc= X-MC-Unique: bCUtt-a5OWm6AgOTO26Rew-1 X-MC-Unique: 9meTNfVFNYe76wo2awidVA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 20/21] conf: Replace virNetworkDNSDefParseXML(hardcoded) with namesake(generated) Date: Wed, 10 Jun 2020 09:20:48 +0800 Message-Id: <20200610012049.10774-21-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S22 X-Coremail-Antispam: 1Uf129KBjvJXoW3Ary3ZFWUJF4kXF4rXry5Arb_yoW3CFy5pF n5X3Z0krWrWFnagrWIvw4Fkrs8uFykJFW5Kr97u3srZw1UGw1fCr1xuryxZFs8WrWYvr43 A3Wagrs8Gw4UGF7anT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0p_q2NtUUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiWhE-T1f4pkbTgAAAsn X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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 X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 178 +----------------------------------- src/conf/network_conf.h | 16 ++-- src/network/bridge_driver.c | 2 +- 3 files changed, 14 insertions(+), 182 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 4c0751f..db2b75f 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -174,32 +174,6 @@ virNetworkIPDefClear(virNetworkIPDefPtr def) } =20 =20 -static void -virNetworkDNSDefClear(virNetworkDNSDefPtr def) -{ - if (def->forwarders) { - while (def->nfwds) - virNetworkDNSForwarderClear(&def->forwarders[--def->nfwds]); - VIR_FREE(def->forwarders); - } - if (def->txts) { - while (def->ntxts) - virNetworkDNSTxtDefClear(&def->txts[--def->ntxts]); - VIR_FREE(def->txts); - } - if (def->hosts) { - while (def->nhosts) - virNetworkDNSHostDefClear(&def->hosts[--def->nhosts]); - VIR_FREE(def->hosts); - } - if (def->srvs) { - while (def->nsrvs) - virNetworkDNSSrvDefClear(&def->srvs[--def->nsrvs]); - VIR_FREE(def->srvs); - } -} - - static void virNetworkForwardDefClear(virNetworkForwardDefPtr def) { @@ -900,7 +874,7 @@ virNetworkDNSForwarderParseXMLHook(xmlNodePtr node G_GN= UC_UNUSED, } =20 =20 -static int +int virNetworkDNSDefParseXMLHook(xmlNodePtr node G_GNUC_UNUSED, virNetworkDNSDefPtr def, const char *networkName, @@ -924,148 +898,6 @@ virNetworkDNSDefParseXMLHook(xmlNodePtr node G_GNUC_U= NUSED, } =20 =20 -static int -virNetworkDNSDefParseXML(const char *networkName, - xmlNodePtr node, - xmlXPathContextPtr ctxt, - virNetworkDNSDefPtr def) -{ - xmlNodePtr *hostNodes =3D NULL; - xmlNodePtr *srvNodes =3D NULL; - xmlNodePtr *txtNodes =3D NULL; - xmlNodePtr *fwdNodes =3D NULL; - char *forwardPlainNames =3D NULL; - char *enable =3D NULL; - int nhosts, nsrvs, ntxts, nfwds; - size_t i; - int ret =3D -1; - VIR_XPATH_NODE_AUTORESTORE(ctxt); - - ctxt->node =3D node; - - enable =3D virXPathString("string(./@enable)", ctxt); - if (enable) { - def->enable =3D virTristateBoolTypeFromString(enable); - if (def->enable <=3D 0) { - virReportError(VIR_ERR_XML_ERROR, - _("Invalid dns enable setting '%s' " - "in network '%s'"), - enable, networkName); - goto cleanup; - } - } - - forwardPlainNames =3D virXPathString("string(./@forwardPlainNames)", c= txt); - if (forwardPlainNames) { - def->forwardPlainNames =3D virTristateBoolTypeFromString(forwardPl= ainNames); - if (def->forwardPlainNames <=3D 0) { - virReportError(VIR_ERR_XML_ERROR, - _("Invalid dns forwardPlainNames setting '%s' " - "in network '%s'"), - forwardPlainNames, networkName); - goto cleanup; - } - } - - nfwds =3D virXPathNodeSet("./forwarder", ctxt, &fwdNodes); - if (nfwds < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("invalid element found in of ne= twork %s"), - networkName); - goto cleanup; - } - if (nfwds > 0) { - if (VIR_ALLOC_N(def->forwarders, nfwds) < 0) - goto cleanup; - - for (i =3D 0; i < nfwds; i++) { - if (virNetworkDNSForwarderParseXML(fwdNodes[i], - &def->forwarders[i], - networkName, - NULL) < 0) - goto cleanup; - - def->nfwds++; - } - } - - nhosts =3D virXPathNodeSet("./host", ctxt, &hostNodes); - if (nhosts < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("invalid element found in of network= %s"), - networkName); - goto cleanup; - } - if (nhosts > 0) { - if (VIR_ALLOC_N(def->hosts, nhosts) < 0) - goto cleanup; - - for (i =3D 0; i < nhosts; i++) { - if (virNetworkDNSHostDefParseXML(hostNodes[i], &def->hosts[def= ->nhosts], - networkName, NULL) < 0) { - goto cleanup; - } - def->nhosts++; - } - } - - nsrvs =3D virXPathNodeSet("./srv", ctxt, &srvNodes); - if (nsrvs < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("invalid element found in of network = %s"), - networkName); - goto cleanup; - } - if (nsrvs > 0) { - if (VIR_ALLOC_N(def->srvs, nsrvs) < 0) - goto cleanup; - - for (i =3D 0; i < nsrvs; i++) { - if (virNetworkDNSSrvDefParseXML(srvNodes[i], &def->srvs[def->n= srvs], - networkName, NULL) < 0) { - goto cleanup; - } - def->nsrvs++; - } - } - - ntxts =3D virXPathNodeSet("./txt", ctxt, &txtNodes); - if (ntxts < 0) { - virReportError(VIR_ERR_XML_ERROR, - _("invalid element found in of network = %s"), - networkName); - goto cleanup; - } - if (ntxts > 0) { - if (VIR_ALLOC_N(def->txts, ntxts) < 0) - goto cleanup; - - for (i =3D 0; i < ntxts; i++) { - if (virNetworkDNSTxtDefParseXML(txtNodes[i], &def->txts[def->n= txts], - networkName, NULL) < 0) - goto cleanup; - - def->ntxts++; - } - } - - if (virNetworkDNSDefParseXMLHook(node, def, networkName, NULL, - enable, forwardPlainNames, - ntxts, nhosts, nsrvs, nfwds) < 0) - goto cleanup; - - ret =3D 0; - cleanup: - VIR_FREE(enable); - VIR_FREE(forwardPlainNames); - VIR_FREE(fwdNodes); - VIR_FREE(hostNodes); - VIR_FREE(srvNodes); - VIR_FREE(txtNodes); - return ret; -} - - static int virNetworkIPDefParseXML(const char *networkName, xmlNodePtr node, @@ -1852,7 +1684,7 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt, =20 dnsNode =3D virXPathNode("./dns", ctxt); if (dnsNode !=3D NULL && - virNetworkDNSDefParseXML(def->name, dnsNode, ctxt, &def->dns) < 0)= { ++ virNetworkDNSDefParseXML(dnsNode, &def->dns, def->name, NULL) < 0= ) { goto error; } =20 @@ -2198,7 +2030,7 @@ virNetworkDNSDefFormat(virBufferPtr buf, { size_t i; =20 - if (!(def->enable || def->forwardPlainNames || def->nfwds || def->nhos= ts || + if (!(def->enable || def->forwardPlainNames || def->nforwarders || def= ->nhosts || def->nsrvs || def->ntxts)) return 0; =20 @@ -2225,7 +2057,7 @@ virNetworkDNSDefFormat(virBufferPtr buf, } virBufferAsprintf(buf, " forwardPlainNames=3D'%s'", fwd); } - if (!(def->nfwds || def->nhosts || def->nsrvs || def->ntxts)) { + if (!(def->nforwarders || def->nhosts || def->nsrvs || def->ntxts)) { virBufferAddLit(buf, "/>\n"); return 0; } @@ -2233,7 +2065,7 @@ virNetworkDNSDefFormat(virBufferPtr buf, virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); =20 - for (i =3D 0; i < def->nfwds; i++) { + for (i =3D 0; i < def->nforwarders; i++) { if (virNetworkDNSForwarderFormatBuf(buf, "forwarder", &def->forwarders[i], NULL) < 0) return -1; diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 1313c3e..462d97d 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -165,17 +165,17 @@ struct _virNetworkDNSForwarder { /* genparse:withh= ook, genformat */ =20 typedef struct _virNetworkDNSDef virNetworkDNSDef; typedef virNetworkDNSDef *virNetworkDNSDefPtr; -struct _virNetworkDNSDef { - int enable; /* enum virTristateBool */ - int forwardPlainNames; /* enum virTristateBool */ +struct _virNetworkDNSDef { /* genparse:withhook */ + virTristateBool enable; /* xmlattr */ + virTristateBool forwardPlainNames; /* xmlattr */ size_t ntxts; - virNetworkDNSTxtDefPtr txts; + virNetworkDNSTxtDefPtr txts; /* xmlelem, array */ size_t nhosts; - virNetworkDNSHostDefPtr hosts; + virNetworkDNSHostDefPtr hosts; /* xmlelem, array */ size_t nsrvs; - virNetworkDNSSrvDefPtr srvs; - size_t nfwds; - virNetworkDNSForwarderPtr forwarders; + virNetworkDNSSrvDefPtr srvs; /* xmlelem, array */ + size_t nforwarders; + virNetworkDNSForwarderPtr forwarders; /* xmlelem, array */ }; =20 typedef struct _virNetworkIPDef virNetworkIPDef; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 47d5d95..6e09174 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -1139,7 +1139,7 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, */ bool addNoResolv =3D false; =20 - for (i =3D 0; i < def->dns.nfwds; i++) { + for (i =3D 0; i < def->dns.nforwarders; i++) { virNetworkDNSForwarderPtr fwd =3D &def->dns.forwarders[i]; =20 virBufferAddLit(&configbuf, "server=3D"); --=20 2.17.1 From nobody Sun May 5 22:24:17 2024 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 ARC-Seal: i=1; a=rsa-sha256; t=1591752448; cv=none; d=zohomail.com; s=zohoarc; b=lV9BiRyFfCe4kNYiCNfWbxhYeZeIbQI3ihYT5t6pyYYBcUFNY6J7hhPzusg69zKXNllp0xu9Usnt5zg6I8GtsQNfonSwVcFLlpTp2/oYK3MvsmwVz1aBDNVFu+ldpBmDBK1SRxI3s0pkiCqpQdeFYoDbCuZRnOgT1Pd/79pGVCs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591752448; h=Content-Type:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=NUyG3JG1ojbAClrn/01eRDSuh0G/J5iwU5OWvhcxsMY=; b=S1FWQkO2t4AwrdSWL81yHf4Z50hgBEg3fVs3YBcZiTZ+bA5+UzBEfhCkYgBmzzOsKBf6z2Fyy7c7v4bZAjIrQGjtQUUlo+0C5DgkJAWzBzqxbuzc2NRbuf4FXgp9nHg8JYSRiqMwJFlDOpO419+em3yWD0JUfyVLdQ3QT2s9XX8= 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 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 1591752448505265.3577163066627; Tue, 9 Jun 2020 18:27:28 -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-291-nrPy07zoMyeVzdslSN8bsw-1; Tue, 09 Jun 2020 21:27:23 -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 E5AB61054F93; Wed, 10 Jun 2020 01:27:17 +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 C56795D9F5; Wed, 10 Jun 2020 01:27:17 +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 83578104811; Wed, 10 Jun 2020 01:27:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 05A1RFnW027581 for ; Tue, 9 Jun 2020 21:27:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id B89EB2026E1C; Wed, 10 Jun 2020 01:27:15 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B4C072026D5D for ; Wed, 10 Jun 2020 01:27:13 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.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 0D9CC185A78B for ; Wed, 10 Jun 2020 01:27:13 +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-408-3bFVNl0JO4-3kdvtKV8JtQ-1; Tue, 09 Jun 2020 21:27:09 -0400 Received: from localhost.localdomain (unknown [58.56.27.130]) by smtp4 (Coremail) with SMTP id JedpCgCnxdh_NeBeVKS4Bw--.7295S23; Wed, 10 Jun 2020 09:21:57 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591752447; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=NUyG3JG1ojbAClrn/01eRDSuh0G/J5iwU5OWvhcxsMY=; b=aJWhutwsFLPJYNC3OP8srypTp/jr1+qK0EO3057iwnlG8AM0STvicXy1clcLNJtCi7qpfd /cfTPn5zjS/mDL+1hONJavQAGm48gAzUIC0F7G5+t+6fEKd9M+QWxAQsd+MOsEmjvv3+rJ FY6Bdm7WKhxWr0yEPQHUI/0azfSC13U= X-MC-Unique: nrPy07zoMyeVzdslSN8bsw-1 X-MC-Unique: 3bFVNl0JO4-3kdvtKV8JtQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 21/21] conf: Generate virNetworkDNSDefFormatBuf Date: Wed, 10 Jun 2020 09:20:49 +0800 Message-Id: <20200610012049.10774-22-shi_lei@massclouds.com> In-Reply-To: <20200610012049.10774-1-shi_lei@massclouds.com> References: <20200610012049.10774-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgCnxdh_NeBeVKS4Bw--.7295S23 X-Coremail-Antispam: 1Uf129KBjvJXoWxAFW7CFy8Gw4UtF1fJF1xGrg_yoWrAr43pF nxtF1DAF4rWFnYqry2yw4rKr98CFykJa15GrZ7W347Z3yUKrySkryfCry0vF4rWrWYkrW5 AF1Ygrs8J3yUGFUanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0piFoGJUUUUU= X-Originating-IP: [58.56.27.130] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiGRU-T1nkgmIU2QAAss X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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.14 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- src/conf/network_conf.c | 77 ++--------------------------------------- src/conf/network_conf.h | 10 +++--- 2 files changed, 8 insertions(+), 79 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index db2b75f..604e589 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -881,10 +881,10 @@ virNetworkDNSDefParseXMLHook(xmlNodePtr node G_GNUC_U= NUSED, void *opaque G_GNUC_UNUSED, const char *enable G_GNUC_UNUSED, const char *forwardPlainNames G_GNUC_UNUSED, + int nfwds, int ntxts, - int nhosts, int nsrvs, - int nfwds) + int nhosts) { if (def->enable =3D=3D VIR_TRISTATE_BOOL_NO && (nfwds || nhosts || nsrvs || ntxts)) { @@ -2024,77 +2024,6 @@ virNetworkDefParseNode(xmlDocPtr xml, } =20 =20 -static int -virNetworkDNSDefFormat(virBufferPtr buf, - const virNetworkDNSDef *def) -{ - size_t i; - - if (!(def->enable || def->forwardPlainNames || def->nforwarders || def= ->nhosts || - def->nsrvs || def->ntxts)) - return 0; - - virBufferAddLit(buf, "enable) { - const char *fwd =3D virTristateBoolTypeToString(def->enable); - - if (!fwd) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown enable type %d in network"), - def->enable); - return -1; - } - virBufferAsprintf(buf, " enable=3D'%s'", fwd); - } - if (def->forwardPlainNames) { - const char *fwd =3D virTristateBoolTypeToString(def->forwardPlainN= ames); - - if (!fwd) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unknown forwardPlainNames type %d in network= "), - def->forwardPlainNames); - return -1; - } - virBufferAsprintf(buf, " forwardPlainNames=3D'%s'", fwd); - } - if (!(def->nforwarders || def->nhosts || def->nsrvs || def->ntxts)) { - virBufferAddLit(buf, "/>\n"); - return 0; - } - - virBufferAddLit(buf, ">\n"); - virBufferAdjustIndent(buf, 2); - - for (i =3D 0; i < def->nforwarders; i++) { - if (virNetworkDNSForwarderFormatBuf(buf, "forwarder", - &def->forwarders[i], NULL) < 0) - return -1; - } - - for (i =3D 0; i < def->ntxts; i++) { - if (virNetworkDNSTxtDefFormatBuf(buf, "txt", &def->txts[i], NULL) = < 0) - return -1; - } - - for (i =3D 0; i < def->nsrvs; i++) { - if (def->srvs[i].service && def->srvs[i].protocol) { - if (virNetworkDNSSrvDefFormatBuf(buf, "srv", &def->srvs[i], NU= LL) < 0) - return -1; - } - } - - if (def->nhosts) { - for (i =3D 0; i < def->nhosts; i++) { - if (virNetworkDNSHostDefFormatBuf(buf, "host", &def->hosts[i],= NULL) < 0) - return -1; - } - } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); - return 0; -} - - static int virNetworkIPDefFormat(virBufferPtr buf, const virNetworkIPDef *def) @@ -2502,7 +2431,7 @@ virNetworkDefFormatBuf(virBufferPtr buf, virBufferAddLit(buf, "/>\n"); } =20 - if (virNetworkDNSDefFormat(buf, &def->dns) < 0) + if (virNetworkDNSDefFormatBuf(buf, "dns", &def->dns, NULL) < 0) return -1; =20 if (virNetDevVlanFormat(&def->vlan, buf) < 0) diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 462d97d..cfbd7c9 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -165,17 +165,17 @@ struct _virNetworkDNSForwarder { /* genparse:withh= ook, genformat */ =20 typedef struct _virNetworkDNSDef virNetworkDNSDef; typedef virNetworkDNSDef *virNetworkDNSDefPtr; -struct _virNetworkDNSDef { /* genparse:withhook */ +struct _virNetworkDNSDef { /* genparse:withhook, genformat */ virTristateBool enable; /* xmlattr */ virTristateBool forwardPlainNames; /* xmlattr */ + size_t nforwarders; + virNetworkDNSForwarderPtr forwarders; /* xmlelem, array */ size_t ntxts; virNetworkDNSTxtDefPtr txts; /* xmlelem, array */ - size_t nhosts; - virNetworkDNSHostDefPtr hosts; /* xmlelem, array */ size_t nsrvs; virNetworkDNSSrvDefPtr srvs; /* xmlelem, array */ - size_t nforwarders; - virNetworkDNSForwarderPtr forwarders; /* xmlelem, array */ + size_t nhosts; + virNetworkDNSHostDefPtr hosts; /* xmlelem, array */ }; =20 typedef struct _virNetworkIPDef virNetworkIPDef; --=20 2.17.1