From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120384; cv=none; d=zohomail.com; s=zohoarc; b=lSiL0QLYYPA1v9NKW95cG4Ljrn812B5qCZvjTDOMA/0Ozldh0cIJuWAnEOPhYW+tvkh3HhuFT77v7k1Vs4w2S+oxA2pkP6SLygUYkUW/Ddgh6ws7n3u0gnM5XB0V7CzGqlM/qnUHXjZ3GHMYmR7Rc69hADkL99VGbKNKXvoBXcs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120384; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=OQ7VbuK7vWUgk6h0DCq02slXW+vG6et5YR1/tV14eM8=; b=WWHma15tzdpM8hgv8KxTOg/BVl86+CIyou+ey7vESePzyNGEB1Pyp2S+3s+JwbcOJ/hjTnJJeY9e4XtHy+JgkjWetPa5nXoyODSOp5SxPy6kaNko47HnToi44ZOPsotjt8XJp9kraCbZNS5ZlyKtLdofllHObkX8AYzihpoLrjM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120384809637.2087736418637; Wed, 25 Mar 2020 00:13: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-32-MZGz2CnEOVC4QdZLsVUElA-1; Wed, 25 Mar 2020 03:13:00 -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 23F4FDB60; Wed, 25 Mar 2020 07:12:55 +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 E79975C241; Wed, 25 Mar 2020 07:12:54 +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 8FCBF18089CE; Wed, 25 Mar 2020 07:12:54 +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 02P7CR5B023831 for ; Wed, 25 Mar 2020 03:12:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2866C2166B2A; Wed, 25 Mar 2020 07:12:27 +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 20FB32166B2F for ; Wed, 25 Mar 2020 07:12:27 +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 E05548007DF for ; Wed, 25 Mar 2020 07:12: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-11-EFQFNvr1PjewjvCC3r0n7g-1; Wed, 25 Mar 2020 03:12:19 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S3; Wed, 25 Mar 2020 15:12:14 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120383; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=OQ7VbuK7vWUgk6h0DCq02slXW+vG6et5YR1/tV14eM8=; b=AGoPdJ59A7VaW72BR+xpQZBL+Vr/P3EbTbAfutrz1uVKcftFapaQrdGdnoNskffbnHdYiP wA0JWzL8KNrhsWROPNN2oGmD+SJDExGlgZJnc6nFhZcS4bXycEefMNsgoX6gcsFzjvYiIy Qx2vS48AvvWaae675DdmxKR/7tT/+z8= X-MC-Unique: MZGz2CnEOVC4QdZLsVUElA-1 X-MC-Unique: EFQFNvr1PjewjvCC3r0n7g-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 01/29] rng2c: Add tool RNG2C to translate relax-ng into c-language-code. Date: Wed, 25 Mar 2020 15:11:41 +0800 Message-Id: <20200325071209.20841-2-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S3 X-Coremail-Antispam: 1Uf129KBjvAXoWfKFW8Gw15Ar1fWFyUKF47twb_yoWxZrWUGo WxKF1Ut3WfurWakrn5Ka47Wrs8ur95Grs7Ja93GryY93Z8ZrW5uw18uF4UX398Zr4kAF95 ZryIq3s7CF4DA3Wfn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4RGg4SUUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiSA7xT1dqAL5PVAAAsg X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CR5B023831 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" RNG2C has three subcommands: 'list'/'show' for previewing directives and generated codes; 'generate' for Makefile to generate and output codes. Signed-off-by: Shi Lei --- po/POTFILES.in | 1 + rng2c/directive.py | 1693 ++++++++++++++++++++++++++++++++++++++++++++ rng2c/generator.py | 504 +++++++++++++ rng2c/go | 8 + rng2c/schema.json | 113 +++ rng2c/utils.py | 163 +++++ 6 files changed, 2482 insertions(+) create mode 100644 rng2c/directive.py create mode 100755 rng2c/generator.py create mode 100755 rng2c/go create mode 100644 rng2c/schema.json create mode 100644 rng2c/utils.py diff --git a/po/POTFILES.in b/po/POTFILES.in index 6103d4c..2358b01 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@/rng2c/directive.py @SRCDIR@/src/access/viraccessdriverpolkit.c @SRCDIR@/src/access/viraccessmanager.c @SRCDIR@/src/admin/admin_server.c diff --git a/rng2c/directive.py b/rng2c/directive.py new file mode 100644 index 0000000..ab52488 --- /dev/null +++ b/rng2c/directive.py @@ -0,0 +1,1693 @@ +# +# 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 +# . +# +# References: +# https://www.w3.org/TR/xmlschema-2/#decimal +# https://json-schema.org/understanding-json-schema +# + +import sys +import json +from collections import OrderedDict +from utils import singleton, assertOnlyOne, deepupdate +from utils import dedup, counterName +from utils import BlockAssembler, sha1ID +from utils import Terms, singleline, indent, render, renderByDict + +g_schema =3D None + +JSON_TYPE_MAP =3D { + 'null': (['NoneType'], None), + 'string': (['str', 'unicode'], ''), + 'array': (['list'], []), + 'object': (['dict'], {}), + 'boolean': (['bool'], False), + 'integer': (['int'], 0), +} + + +def initDirectiveSchema(path): + def _resolveRef(schema, definitions): + if '$ref' in schema: + link =3D schema.pop('$ref') + link =3D link[len('#/definitions/'):] + definition =3D _resolveRef(definitions[link], definitions) + schema.update(definition) + + for key in schema: + if isinstance(schema[key], dict): + _resolveRef(schema[key], definitions) + + return schema + + global g_schema + if not g_schema: + with open(path) as f: + schema =3D json.load(f) + g_schema =3D _resolveRef(schema, schema['definitions']) + + return g_schema + + +def _createDirective(kvs, schema, innerkeys): + def _createDefault(schema): + if 'const' in schema: + return schema['const'] + assert 'type' in schema, schema + return JSON_TYPE_MAP[schema['type']][1] + + ret =3D {} + for key in schema: + if key in kvs: + value =3D kvs[key] + else: + value =3D _createDefault(schema[key]) + ret[key] =3D value.copy() if isinstance(value, dict) else value + + for key in innerkeys: + if key in kvs: + value =3D kvs[key] + ret[key] =3D value.copy() if isinstance(value, dict) else value + + return ret + + +def createMember(typeid, kvs): + assert 'id' in kvs, kvs + kvs['meta'] =3D 'Member' + kvs['name'] =3D kvs['id'] + kvs['_typeid'] =3D typeid + + global g_schema + schema =3D g_schema['definitions']['member']['properties'] + inner =3D ['_typeid', 'meta'] + return _createDirective(kvs, schema, inner) + + +def createTypeLocation(kvs): + ids =3D BlockAssembler() + ids.append(kvs['_env']['rng']) + ids.append(kvs['_env']['define'] + '.define') + if kvs['_nodepath']: + nodepath =3D [n[0] + n[1] for n in kvs['_nodepath']] + anchor =3D kvs.get('_anchor', -1) + if anchor >=3D 0: + nodepath[anchor] =3D '[%s]' % nodepath[anchor] + ids.extend(nodepath) + return '/' + ids.output('/') + + +def createFullname(kvs): + if not kvs['_nodepath']: + ret =3D kvs['_env']['define'] + else: + ret =3D ''.join([Terms.upperInitial(n[0]) for n in kvs['_nodepath'= ]]) + if not ret.startswith('vir'): + ret =3D 'vir' + Terms.upperInitial(ret) + return ret + + +def createType(meta, kvs, children=3DNone): + kvs['meta'] =3D meta + if 'location' not in kvs: + kvs['location'] =3D createTypeLocation(kvs) + + if meta in BUILTIN_TYPES: + if 'name' in kvs and kvs['meta'] =3D=3D 'String': + kvs['gap'] =3D ' ' # Fix gap for hardcoded 'String' + elif meta in ['Struct']: + if 'name' not in kvs: + kvs['name'] =3D createFullname(kvs) + 'Def' + + for kind in ['structure', 'clearfunc', 'parsefunc', 'formatfunc']: + if kind not in kvs: + kvs[kind] =3D {} + + for member in kvs.pop('members', {}): + assert verifyMember(member), "Invalid member: %s" % member + if 'type' in member: + typeid =3D TypeTable().getByLocation(member['type'])['id'] + member['_typeid'] =3D typeid + + if 'id' not in member: + member['hint'] =3D 'new' + member['id'] =3D member['name'] + member['_env'] =3D kvs['_env'] + assert member['_typeid'] + children.append(createMember(member['_typeid'], member)) + continue + + child =3D findMember(member['id'], children) + if child: + deepupdate(child, member) + mtype =3D TypeTable().get(child['_typeid']) + if not child['hint']: + if mtype['unpack']: + child['hint'] =3D 'unpack' + elif mtype['pack']: + child['hint'] =3D 'pack' + + kvs['members'] =3D children + elif meta in ['Enum']: + if not kvs.get('name', None): + fullname =3D createFullname(kvs) + if not fullname.endswith('Type'): + fullname +=3D 'Type' + kvs['name'] =3D fullname + + if 'structure' not in kvs: + if 'structure' not in kvs: + kvs['structure'] =3D {} + + if not kvs.get('values', None): + kvs['values'] =3D children + elif meta in ['Constant']: + pass + else: + assert False, "Unsupported meta '%s'." % meta + + global g_schema + schema =3D g_schema['properties'] + inner =3D ['_anchor', '_nodepath', '_env'] + return _createDirective(kvs, schema, inner) + + +def _verifyDirective(kvs, schema): + def _verifyType(obj, schema): + if 'const' in schema: + return obj =3D=3D schema['const'] + + target =3D schema['type'] + if isinstance(target, list): + for t in target: + if type(obj).__name__ in JSON_TYPE_MAP[t][0]: + return True + return False + + return type(obj).__name__ in JSON_TYPE_MAP[target][0] + + for key, value in kvs.items(): + if key.startswith('_'): + continue + if key not in schema: + print("fatal: undefined directive '%s'" % key) + return False + if not _verifyType(value, schema[key]): + print("fatal: directive '%s:%s' type error" % (key, value)) + return False + if isinstance(value, dict): + if not _verifyDirective(value, schema[key]['properties']): + return False + + return True + + +def verifyMember(kvs): + global g_schema + schema =3D g_schema['definitions']['member']['properties'] + return _verifyDirective(kvs, schema) + + +def verifyType(kvs): + global g_schema + return _verifyDirective(kvs, g_schema['properties']) + + +BUILTIN_TYPES =3D { + 'PVoid': {'ctype': 'void *', 'gap': ''}, + 'String': {'ctype': 'char *', 'gap': ''}, + 'Bool': {'ctype': 'bool'}, + 'Bool.yes_no': {'ctype': 'bool', 'values': ['yes', 'no']}, + 'Bool.on_off': {'ctype': 'bool', 'values': ['yes', 'no']}, + 'Chars': { + 'ctype': 'char', 'conv': 'virStrcpyStatic(def->${name}, ${name}Str= )' + }, + 'UChars': { + 'ctype': 'unsigned char', + 'conv': 'virStrcpyStatic((char *)def->${name}, ${mdvar})' + }, + 'Int': { + 'ctype': 'int', 'fmt': '%d', + 'conv': 'virStrToLong_i(${mdvar}, NULL, 0, &def->${name})' + }, + 'UInt': { + 'ctype': 'unsigned int', 'fmt': '%u', + 'conv': 'virStrToLong_uip(${mdvar}, NULL, 0, &def->${name})' + }, + 'ULongLegacy': { + 'ctype': 'unsigned long', 'fmt': '%lu', + 'conv': 'virStrToLong_ulp(${mdvar}, NULL, 0, &def->${name})' + }, + 'ULong': { + 'ctype': 'unsigned long long', 'fmt': '%llu', + 'conv': 'virStrToLong_ullp(${mdvar}, NULL, 0, &def->${name})' + }, + 'U8': { + 'ctype': 'uint8_t', 'fmt': '%u', + 'conv': 'virStrToLong_u8p(${mdvar}, NULL, 0, &def->${name})' + }, + 'U32': { + 'ctype': 'uint32_t', 'fmt': '%u', + 'conv': 'virStrToLong_uip(${mdvar}, NULL, 0, &def->${name})' + }, + 'ConstString': {'ctype': 'const char *', 'gap': ''}, + 'Constant': {'ctype': 'bool'}, +} +BUILTIN_TYPES['Integer'] =3D BUILTIN_TYPES['Int'] +BUILTIN_TYPES['UnsignedInt'] =3D BUILTIN_TYPES['UInt'] +BUILTIN_TYPES['PositiveInteger'] =3D BUILTIN_TYPES['UInt'] +BUILTIN_TYPES['UnsignedLong'] =3D BUILTIN_TYPES['ULong'] + + +def isBuiltin(meta): + return meta in BUILTIN_TYPES + + +class NodeList(list): + def __init__(self, first=3DNone): + if first: + self.append(first) + + def _getUniform(self, node): + return 'Builtin' if isBuiltin(node['meta']) else node['meta'] + + def uniform(self): + return self._getUniform(self[0]) if len(self) else None + + def append(self, node): + if len(self): + assert self.uniform() =3D=3D self._getUniform(node) + + if self.uniform() =3D=3D 'Member': + for cur in self: + if cur['id'] =3D=3D node['id'] and \ + cur.get('more') =3D=3D node.get('more'): + if cur['name'] =3D=3D node['name']: + cur['opt'] =3D cur['opt'] or node['opt'] + return + elif self.uniform() =3D=3D 'Builtin': + cur =3D assertOnlyOne(self) + if node['id'] =3D=3D cur['id']: + return + + # String is always swallowed by other builtin-types. + if cur['meta'] =3D=3D 'String' and node['meta'] !=3D 'String': + TypeTable().pop(cur['id']) + self[0] =3D node + else: + TypeTable().pop(node['id']) + return + + super(NodeList, self).append(node) + + def extend(self, nodes): + if nodes: + for node in nodes: + self.append(node) + + +@singleton +class TypeTable(OrderedDict): + def __init__(self): + OrderedDict.__init__(self) + for meta, kvs in BUILTIN_TYPES.items(): + tid =3D sha1ID(meta) + kvs['id'] =3D tid + kvs['location'] =3D meta + self[tid] =3D createType(meta, kvs) + + def _merge(self, tid, newkvs): + kvs =3D self[tid] + if kvs['meta'] =3D=3D 'Constant' and newkvs['meta'] =3D=3D 'Consta= nt': + kvs['meta'] =3D 'Enum' # Reset meta explicitly + assert 'values' in kvs, kvs + values =3D kvs.pop('values') + values.extend(newkvs['values']) + self[tid] =3D createType('Enum', kvs, values) + elif kvs['meta'] =3D=3D 'Enum' and newkvs['meta'] =3D=3D 'Constant= ': + kvs['values'].extend(newkvs['values']) + elif kvs['meta'] =3D=3D 'Struct' and newkvs['meta'] =3D=3D 'Struct= ': + kvs['members'].extend(newkvs['members']) + else: + assert isBuiltin(kvs['meta']) and isBuiltin(newkvs['meta']), \ + '%s:%s, %s' % (kvs['meta'], newkvs['meta'], tid) + + def register(self, meta, kvs, children=3DNone): + kvs =3D createType(meta, kvs, children) + tid =3D sha1ID(kvs['location']) + kvs['id'] =3D tid + + if tid in self: + self._merge(tid, kvs) + else: + # Verify uniqueness of leftmost 8 digits of 'id'. + assert not self._getByPartialID(tid[:8]) + self[tid] =3D kvs + + return tid + + def getByLocation(self, location): + for _, atype in self.items(): + if atype.get('location', None) =3D=3D location: + return atype + print("fatal: bad type location '%s'." % location) + return None + + def _getByPartialID(self, pid): + ret =3D [] + for key, atype in self.items(): + if key.startswith(pid): + ret.append(atype) + return ret + + def getByPartialID(self, pid): + ret =3D self._getByPartialID(pid) + if not ret: + print("fatal: bad type id '%s'." % pid) + return None + elif len(ret) !=3D 1: + ids =3D ', '.join([item['id'][:8] for item in ret]) + print("notice: several candidates[%s] for id '%s'." % (ids, pi= d)) + return None + + return ret[0] + + +T_STRUCT_STRUCTURE =3D ''' +typedef struct _${fullname} ${fullname}; +typedef ${fullname} *${fullname}Ptr; +struct _${fullname} { + ${members} +}; +''' + +T_ENUM_STRUCTURE_DECL =3D ''' +typedef enum { + ${caps_shortname}_${default} =3D 0, + ${values} + ${caps_shortname}_LAST, +} ${fullname}; + +VIR_ENUM_DECL(${shortname}); +''' + +T_ENUM_STRUCTURE_IMPL =3D ''' +VIR_ENUM_IMPL(${shortname}, +${indentation}${caps_shortname}_LAST, +${indentation}${array}, +); +''' + +T_MEMBER_DECL =3D ''' +${type_decl}${gap}${asterisk}${name}${suffix};${comment} +''' + +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; +} +''' + + +def pointer(atype): + if isBuiltin(atype['meta']) and not atype.get('name', None): + return BUILTIN_TYPES.get(atype['meta'])['ctype'] + '*' + return atype['name'] + 'Ptr' + + +def proto(atype, pointer): + if isBuiltin(atype['meta']) and not atype.get('name', None): + return BUILTIN_TYPES.get(atype['meta'])['ctype'] + elif atype['meta'] =3D=3D 'Struct' and pointer: + return atype['name'] + 'Ptr' + return atype['name'] + + +def gapOf(atype): + if isBuiltin(atype['meta']) and not atype.get('name', None): + return BUILTIN_TYPES.get(atype['meta']).get('gap', ' ') + return ' ' + + +def declareMember(member): + mtype =3D TypeTable().get(member['_typeid']) + + # + # Helper functions + # + def _declare(type_decl, asterisk, gap, name): + asterisk =3D '*' if asterisk else '' + if mtype['meta'] in ['Chars', 'UChars']: + suffix =3D '[%s]' % mtype['structure']['array.size'] + else: + suffix =3D '' + if member['declare.comment']: + comment =3D ' /* %s */' % member['declare.comment'] + else: + comment =3D '' + return render(T_MEMBER_DECL, type_decl=3Dtype_decl, + gap=3Dgap, asterisk=3Dasterisk, + name=3Dname, suffix=3Dsuffix, comment=3Dcomment) + + # + # Main routine + # + code =3D '' + if member['more']: + code +=3D 'size_t %s;\n' % counterName(member['name']) + code +=3D _declare(pointer(mtype), member['pointer'], gapOf(mtype), + Terms.pluralize(member['name'])) + else: + code +=3D _declare(proto(mtype, member.get('pointer', False)), + False, gapOf(mtype), member['name']) + if member['specified']: + code +=3D '\nbool %s_specified;' % member['name'] + + return code + + +def flattenMembers(members): + ret =3D NodeList() + for member in members: + mtype =3D TypeTable().get(member['_typeid']) + if mtype['meta'] =3D=3D 'Struct' and mtype['unpack']: + ret.extend(flattenMembers(mtype['members'])) + else: + ret.append(member) + + return ret + + +def makeStructure(writer, atype): + def _makeMembers(): + blocks =3D BlockAssembler() + for member in flattenMembers(atype['members']): + blocks.append(declareMember(member)) + + if atype.get('namespace', False): + blocks.append('void *namespaceData;') + blocks.append('virXMLNamespace ns;') + + return blocks.output() + + if atype.get('unpack', False): + writer.write(atype, 'structure', '.h', _makeMembers()) + return + + if atype['meta'] =3D=3D 'Struct': + members =3D indent(_makeMembers(), 1) + decl =3D render(T_STRUCT_STRUCTURE, + fullname=3Datype['name'], members=3Dmembers) + + writer.write(atype, 'structure', '.h', decl) + elif atype['meta'] =3D=3D 'Enum': + assert atype['name'], atype + shortname =3D atype['name'][:-4] + caps_shortname =3D Terms.allcaps(shortname) + default =3D atype['structure'].get('enum.default', 'none') + atype['values'].insert(0, default) + + atype['_values_map'] =3D OrderedDict() + for value in atype['values']: + caps_value =3D Terms.allcaps(value).replace('.', '') + item =3D '%s_%s' % (caps_shortname, caps_value) + atype['_values_map'][value] =3D item + + values =3D ',\n'.join(list(atype['_values_map'].values())[1:]) + '= ,' + decl =3D render(T_ENUM_STRUCTURE_DECL, + shortname=3Dshortname, + caps_shortname=3DTerms.allcaps(shortname), + fullname=3Datype['name'], + default=3DTerms.allcaps(default), + values=3Dindent(values, 1)) + writer.write(atype, 'structure', '.h', decl) + + array =3D ', '.join(['"%s"' % v for v in atype['values']]) + impl =3D render(T_ENUM_STRUCTURE_IMPL, + shortname=3Dshortname, + caps_shortname=3DTerms.allcaps(shortname), + indentation=3Dalign('VIR_ENUM_IMPL'), + default=3Ddefault, array=3Darray) + writer.write(atype, 'structure', '.c', impl) + + +T_CLEAR_FUNC_IMPL =3D ''' +void +${funcname}(${typename}Ptr def) +{ + if (!def) + return; + + ${body} +} +''' + +T_CLEAR_FUNC_DECL =3D ''' +void +${funcname}(${typename}Ptr def); +''' + + +def clearMember(member): + mtype =3D TypeTable().get(member['_typeid']) + if member['more']: + name =3D 'def->%s[i]' % Terms.pluralize(member['name']) + else: + name =3D 'def->%s' % member['name'] + + funcname =3D mtype['clearfunc'].get('name', None) + if not funcname and mtype['name']: + funcname =3D mtype['name'] + 'Clear' + + code =3D '' + if funcname and mtype['meta'] !=3D 'Enum': + amp =3D '' if member['pointer'] else '&' + code =3D '%s(%s%s);' % (funcname, amp, name) + if member['pointer']: + code +=3D '\nVIR_FREE(%s);' % name + elif mtype['meta'] =3D=3D 'String': + code =3D 'VIR_FREE(%s);' % name + elif mtype['meta'] in ['Chars', 'UChars']: + code =3D 'memset(%s, 0, sizeof(%s));' % (name, name) + elif not member['more']: + code =3D '%s =3D 0;' % name + + if member['more']: + if code: + name =3D Terms.pluralize(member['name']) + counter =3D counterName(member['name']) + if singleline(code): + code =3D render(T_LOOP_SINGLE, counter=3Dcounter, body=3Dc= ode) + else: + code =3D render(T_LOOP_MULTI, + counter=3Dcounter, body=3Dindent(code, 2)) + code +=3D '\nVIR_FREE(def->%s);\ndef->%s =3D 0;' % (name, coun= ter) + else: + if member['specified']: + code +=3D '\n%s_specified =3D false;' % name + + return code + + +T_CLEAR_NAMESPACE =3D ''' +if (def->namespaceData && def->ns.free) + (def->ns.free)(def->namespaceData); +''' + + +def makeClearFunc(writer, atype): + clearfunc =3D atype['clearfunc'] + + if atype['unpack']: + return + + blocks =3D BlockAssembler() + for member in flattenMembers(atype['members']): + blocks.append(clearMember(member)) + + funcname =3D clearfunc.get('name', None) + if not funcname: + funcname =3D atype['name'] + 'Clear' + + if atype.get('namespace', False): + blocks.append(T_CLEAR_NAMESPACE.strip()) + + impl =3D render(T_CLEAR_FUNC_IMPL, funcname=3Dfuncname, typename=3Daty= pe['name'], + body=3Dindent(blocks.output('\n\n'), 1)) + + decl =3D render(T_CLEAR_FUNC_DECL, funcname=3Dfuncname, typename=3Daty= pe['name']) + + writer.write(atype, 'clearfunc', '.h', decl) + writer.write(atype, 'clearfunc', '.c', impl) + + +# +# Templates for parsing member block +# +T_SET_DEFAULT_VALUE =3D 'def->${name} =3D ${default};' +T_READ_XML_BY_XPATH =3D '${mdvar} =3D ${xfuncname}(${xpath}, ctxt);' +T_READ_ATTR_BY_PROP =3D '${mdvar} =3D virXMLPropString(curnode, "${oname}"= );' +T_READ_ELEM_BY_PROP =3D '${mdvar} =3D virXMLChildNode(curnode, "${oname}")= ;' + +T_READ_NODES =3D '${number} =3D virXMLChildNodeSet(curnode, "${oname}", &n= odes);' +T_READ_NODES_CTXT =3D '${number} =3D virXPathNodeSet("./${oname}", ctxt, &= nodes);' + +T_PARSE_MEMBER_MORE =3D ''' +if (${number} > 0) { + size_t i; + xmlNodePtr node; + + if (VIR_ALLOC_N(def->${name}, ${number}) < 0) + goto error; + + for (i =3D 0; i < ${number}; i++) { + node =3D nodes[i]; + ${item} + } + def->${counter} =3D ${number}; + VIR_FREE(nodes); +} else if (${number} < 0) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Invalid ${oname} element found.")); + goto error; +}${report_missing} +''' + +T_GENERATE_ON_MISSING =3D ''' +if (${funcname}(def->${name}) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("cannot generate a random uuid for ${name}")); + goto error; +} +''' + +T_REPORT_INVALID_WITH_INSTANCE =3D ''' + virReportError(VIR_ERR_XML_ERROR, + _("Invalid '${oname}' setting '%s' in '%s'"), + ${mdvar}, instanceName); +''' + +T_REPORT_INVALID_WITHOUT_INSTANCE =3D ''' + virReportError(VIR_ERR_XML_ERROR, + _("Invalid '${oname}' setting '%s'"), + ${mdvar}); +''' + +T_CHECK_INVALID_ERROR =3D ''' +if (${tmpl}) { + ${report_err} + goto error; +} +''' + +T_REPORT_MISSING_WITH_INSTANCE =3D ''' + virReportError(VIR_ERR_XML_ERROR, + _("Missing '${oname}' setting in '%s'"), + instanceName); +''' + +T_REPORT_MISSING_WITHOUT_INSTANCE =3D ''' + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Missing '${oname}' setting")); +''' + +T_MISSING_ERROR =3D ''' +{ + ${report_err} + 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}${args}) < 0) + goto error; +''' + +T_POST_PARSE_MEMBER =3D ''' +if (${funcname}Post(name, ${amp}def->${name}, NULL) < 0) + goto error; +''' + + +def makeActualArgs(formal_args, actual_args): + def _findValue(name): + if actual_args: + for arg in actual_args: + if arg['name'] =3D=3D name: + return arg['value'] + return None + + if not formal_args: + return [] + + args =3D [] + for arg in formal_args: + value =3D _findValue(arg['name']) + if value: + args.append(value) + elif arg.get('pointer'): + args.append(arg['name']) + else: + assert arg.get('type'), arg + argtype =3D TypeTable().getByLocation(arg['type']) + if argtype['meta'].startswith('Bool'): + args.append('false') + else: + args.append('0') + + return args + + +def parseMember(member, atype, tmpvars, pack=3DNone): + if member['parse.disable']: + return None + + mtype =3D TypeTable().get(member['_typeid']) + + if mtype['pack'] or mtype['union']: + block =3D BlockAssembler() + for child in mtype['members']: + block.append(parseMember(child, atype, tmpvars, member)) + return block.output('\n\n') + + # + # Helper functions + # + def _makeXPath(): + if member['tag'] =3D=3D 'attribute': + return '"string(./@%s)"' % member['id'] + + if mtype['meta'] =3D=3D 'Struct': + return '"./%s"' % member['id'] + return '"string(./%s[1])"' % member['id'] + + def _reportInvalid(mdvar): + if atype['parsefunc'] and atype['parsefunc'].get('args.instname'): + return render(T_REPORT_INVALID_WITH_INSTANCE, + oname=3Dmember['id'], mdvar=3Dmdvar) + return render(T_REPORT_INVALID_WITHOUT_INSTANCE, + oname=3Dmember['id'], mdvar=3Dmdvar) + + def _reportMissing(): + if atype['parsefunc'] and atype['parsefunc'].get('args.instname'): + return render(T_REPORT_MISSING_WITH_INSTANCE, + oname=3Dmember['id']) + return render(T_REPORT_MISSING_WITHOUT_INSTANCE, + oname=3Dmember['id']) + + def _setDefaultValue(name): + if not member['parse.default']: + return None + return render(T_SET_DEFAULT_VALUE, + name=3Dname, default=3Dmember['parse.default']) + + def _readXMLByXPath(mdvar, xleaf): + tag =3D member['tag'] + if not tag: + return 'node =3D ctxt->node;' + + if tag =3D=3D 'attribute': + return render(T_READ_ATTR_BY_PROP, + mdvar=3Dmdvar, oname=3Dmember['id']) + + if tag =3D=3D 'element' and mtype['meta'] =3D=3D 'Struct': + if mtype['parsefunc'].get('args.noctxt', False): + return render(T_READ_ELEM_BY_PROP, + mdvar=3Dmdvar, oname=3Dmember['id']) + + if mtype['meta'] in ['Struct']: + xfuncname =3D 'virXPathNode' + else: + xfuncname =3D 'virXPathString' + return render(T_READ_XML_BY_XPATH, + mdvar=3Dmdvar, xfuncname=3Dxfuncname, xpath=3Dxleaf) + + def _assignValue(name, mdvar): + refname =3D 'def->' + name + if mtype['unpack'] and not pack: + refname =3D 'def' + + if mtype['meta'] in ['Struct']: + funcname =3D mtype['parsefunc'].get('name', None) + if not funcname: + funcname =3D mtype['name'] + 'ParseXML' + + tmpl =3D '' + if member['pointer']: + tmpl +=3D T_ALLOC_MEMORY + tmpl +=3D T_STRUCT_ASSIGNMENT_TEMPLATE + if member.get('parse.post', False): + tmpl +=3D T_POST_PARSE_MEMBER + + args =3D [] + if not mtype['parsefunc'].get('args.noctxt'): + args.append('ctxt') + if mtype['parsefunc'].get('args.instname'): + if member['parse.instname']: + args.append(member['parse.instname']) + else: + args.append('instanceName') + if mtype['parsefunc'].get('args.parent'): + args.append('def') + + args.extend(makeActualArgs(mtype['parsefunc'].get('args'), + member['parse.args'])) + args =3D ', '.join(args) + if args: + args =3D ', ' + args + + if refname =3D=3D 'def' or member['pointer']: + amp =3D '' + else: + amp =3D '&' + + tmpl =3D render(tmpl, funcname=3Dfuncname, args=3Dargs, + alignment=3Dalign('if (' + funcname), + amp=3Damp, mdvar=3Dmdvar) + elif mtype['meta'] =3D=3D 'Enum': + tmpl =3D '(def->${name} =3D %sFromString(%s)) <=3D 0' \ + % (mtype['name'], mdvar) + elif mtype['meta'] =3D=3D 'Constant' and mtype['values'][0] =3D=3D= 'yes' \ + or mtype['meta'] =3D=3D 'Bool.yes_no': + tmpl =3D 'virStringParseYesNo(${mdvar}, &def->${name}) < 0' + elif mtype['meta'] =3D=3D 'Constant' and mtype['values'][0] =3D=3D= 'on' \ + or mtype['meta'] =3D=3D 'Bool.on_off': + tmpl =3D 'virStringParseOnOff(${mdvar}, &def->${name}) < 0' + elif mtype['meta'] =3D=3D 'Constant' or mtype['meta'] =3D=3D 'Bool= ': + tmpl =3D 'virStrToBool(${mdvar}, "%s", &def->${name}) < 0' \ + % mtype['values'][0] + elif mtype['name'] or mtype['parsefunc'].get('name'): + funcname =3D mtype['parsefunc'].get('name', None) + if not funcname: + funcname =3D mtype['name'] + 'ParseXML' + if mtype['meta'] in ['UChars', 'Chars']: + aof =3D '' + else: + aof =3D '&' + tmpl =3D '%s(${mdvar}, %sdef->${name}) < 0' % (funcname, aof) + elif mtype['meta'] =3D=3D 'String': + tmpl =3D 'def->${name} =3D g_strdup(${mdvar});' + else: + tmpl =3D None + builtin =3D BUILTIN_TYPES.get(mtype['meta'], None) + if builtin: + tmpl =3D builtin.get('conv', None) + if tmpl: + tmpl +=3D ' < 0' + + if not tmpl: + return None + + if mdvar.endswith('Str') and \ + (mtype['meta'] !=3D 'String' or mtype['name']): + tmpl =3D render(T_CHECK_INVALID_ERROR, + tmpl=3Dtmpl, report_err=3D_reportInvalid(mdvar)) + + ret =3D render(tmpl, refname=3Drefname, name=3Dname, + oname=3Dmember['id'], mdvar=3Dmdvar) + + if member['specified'] and not member['more']: + ret +=3D '\ndef->%s_specified =3D true;' % name + return ret + + def _assignValueOnCondition(name, mdvar): + block =3D _assignValue(name, mdvar) + if not block: + return None + + ret =3D None + if member['opt']: + if singleline(block): + ret =3D render(T_IF_CONDITION_SINGLE, condition=3Dmdvar, + body=3Dblock) + else: + ret =3D render(T_IF_CONDITION_MULTI, condition=3Dmdvar, + body=3Dindent(block, 1)) + else: + ret =3D render(T_CHECK_MISSING_ERROR, + mdvar=3Dmdvar, report_err=3D_reportMissing()) + if block: + ret +=3D '\n\n' + block + return ret + + # + # Main routine + # + if not member['tag'] or member['id'] =3D=3D '_Any_': + return None + + # For sequence-type member + if member['more']: + assert member['tag'] =3D=3D 'element' + node_num =3D 'n%sNodes' % Terms.upperInitial(member['id']) + tmpvars.append(node_num) + tmpvars.append('nodes') + + if pack: + seqname =3D Terms.pluralize(pack['name']) + counter =3D counterName(pack['name']) + else: + seqname =3D Terms.pluralize(member['name']) + counter =3D counterName(member['name']) + + name =3D seqname + '[i]' + report_missing =3D '' + if not member['opt']: + report_missing =3D ' else ' + render(T_MISSING_ERROR, + report_err=3D_reportMissing= ()) + + if mtype['meta'] !=3D 'Struct': + item =3D 'def->%s =3D virXMLNodeContentString(node);' % name + else: + item =3D _assignValue(name, 'node') + + if atype['parsefunc'] and atype['parsefunc'].get('args.noctxt'): + tmpl =3D T_READ_NODES + else: + tmpl =3D T_READ_NODES_CTXT + tmpl +=3D T_PARSE_MEMBER_MORE + return render(tmpl, name=3Dseqname, counter=3Dcounter, + number=3Dnode_num, item=3Dindent(item, 2), + report_missing=3Dreport_missing, oname=3Dmember['id'= ]) + + # For ordinary member + if pack: + arrow =3D '->' if pack['pointer'] else '.' + name =3D pack['name'] + arrow + member['name'] + else: + name =3D member['name'] + + blocks =3D BlockAssembler() + mdvar =3D member['name'] + mdvar +=3D 'Node' if mtype['meta'] in ['Struct'] else 'Str' + tmpvars.append(mdvar) + xpath =3D _makeXPath() + + blocks.append(_setDefaultValue(name)) + blocks.append(_readXMLByXPath(mdvar, xpath)) + blocks.append(_assignValueOnCondition(name, mdvar)) + return blocks.output() + + +def align(funcname): + return ' ' * (len(funcname) + 1) + + +T_PARSE_FUNC_DECL =3D ''' +int +${funcname}(${formal_args}); +''' + +T_PARSE_FUNC_IMPL =3D ''' +int +${funcname}(${formal_args}) +{ + ${declare_vars} + + ${body} + + ${end} + + error: + ${cleanup_vars} + ${typename}Clear(def); + return -1; +} +''' + +T_PARSE_FUNC_POST_INVOKE =3D ''' +if (${funcname}Post(${actual_args}) < 0) + goto error; +''' + +T_FUNC_EXTRA_ARGS =3D ''' +${alignment}${ctype}${gap}${name} +''' + + +def _handleTmpVars(tmpvars, noctxt): + 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) + + if not noctxt: + heads.append('xmlNodePtr save =3D ctxt->node;') + heads.append('ctxt->node =3D curnode;') + tails.insert(0, 'ctxt->node =3D save;') + return '\n'.join(heads), '\n'.join(tails) + + +def findMember(mid, members): + members =3D list(filter(lambda m: m['id'] =3D=3D mid, members)) + if not members: + return None + return assertOnlyOne(members) + + +def makeParseFunc(writer, atype): + if atype['pack'] or atype['union']: + return + + parsefunc =3D atype['parsefunc'] + funcname =3D parsefunc.get('name', None) + if not funcname: + funcname =3D atype['name'] + 'ParseXML' + + alignment =3D align(funcname) + + if atype['unpack']: + if not atype.get('_parent'): + print("fatal: unpack is set on direct child(%s) of ." + % atype['location']) + sys.exit(-1) + typename =3D atype['_parent']['name'] + else: + typename =3D atype['name'] + + formal_args =3D ['xmlNodePtr curnode', typename + 'Ptr def'] + actual_args =3D ['curnode', 'def'] + + if not parsefunc.get('args.noctxt', False): + formal_args.append('xmlXPathContextPtr ctxt') + actual_args.append('ctxt') + + if parsefunc.get('args.instname'): + formal_args.append('const char *instanceName') + actual_args.append('instanceName') + + if parsefunc.get('args.parent'): + assert atype.get('_parent') + formal_args.append('%sPtr parentdef' % atype['_parent']['name']) + actual_args.append('parentdef') + + if atype.get('namespace'): + formal_args.append('virNetworkXMLOptionPtr xmlopt') + actual_args.append('xmlopt') + + formal_args.extend(createFormalArgs(parsefunc.get('args'), alignment)) + actual_args.extend([arg['name'] for arg in parsefunc.get('args', [])]) + + kwargs =3D {'funcname': funcname, 'typename': typename, + 'formal_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 parsefunc.get('post', False): + if not parsefunc.get('post.notmpvars', False): + 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, + actual_args=3Dactual_args) + blocks.append(post) + + if not parsefunc.get('post.notmpvars', False): + 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 + '= Post', + formal_args=3Dconnector.join(formal_args)) + + writer.write(atype, 'parsefunc', '.h', decl) + + if atype['namespace']: + blocks.append(T_NAMESPACE_PARSE.strip()) + + kwargs['body'] =3D indent(blocks.output('\n\n'), 1) + + declare_vars, cleanup_vars =3D _handleTmpVars(tmpvars, + parsefunc.get('args.noctxt= ')) + kwargs['declare_vars'] =3D indent(declare_vars, 1) + kwargs['cleanup_vars'] =3D indent(cleanup_vars, 1) + + end =3D '' + if not parsefunc.get('args.noctxt', False): + end =3D 'ctxt->node =3D save;\n' + end +=3D 'return 0;' + + kwargs['end'] =3D indent(end, 1) + + impl =3D renderByDict(T_PARSE_FUNC_IMPL, kwargs) + writer.write(atype, 'parsefunc', '.c', impl) + + +T_FORMAT_FUNC_DECL =3D ''' +int +${funcname}(${formal_args}); +''' + +T_FORMAT_FUNC_IMPL =3D ''' +int +${funcname}(${formal_args}) +{ + if (!def) + return 0; + + ${format_members} + + return 0; +} +''' + +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_CONDITION_SINGLE =3D ''' +if (${condition}) + ${body} +''' + +T_IF_CONDITION_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 ${oname} type %d"), + ${var}); + return -1; +} +virBufferAsprintf(buf, "${layout}", str); +''' + +T_FORMAT_PRECHECK_DECLARE =3D ''' +bool +${funcname}(${formal_args}); +''' + + +def createFormalArgs(args, alignment): + if not args: + return [] + + lines =3D [] + for arg in args: + gap =3D ' ' + ctype =3D arg.get('ctype', None) + if not ctype: + argtype =3D TypeTable().getByLocation(arg['type']) + if isBuiltin(argtype['meta']): + ctype =3D BUILTIN_TYPES.get(argtype['meta'])['ctype'] + gap =3D gapOf(argtype) + else: + assert argtype['meta'] in ['Struct'] + ctype =3D argtype['name'] + + name =3D arg['name'] + if arg.get('pointer', False): + name =3D '*' + name + + line =3D render(T_FUNC_EXTRA_ARGS, alignment=3Dalignment, + ctype=3Dctype, name=3Dname, gap=3Dgap) + lines.append(line) + + return lines + + +def formatMember(member, require, ret_checks, ret_decls, atype, pack=3DNon= e): + if member['format.disable']: + return None + + mtype =3D TypeTable().get(member['_typeid']) + + if mtype['pack'] or mtype['union']: + checks =3D [] + block =3D BlockAssembler() + for child in mtype['members']: + block.append(formatMember(child, require, checks, ret_decls, + atype, member)) + checks =3D dedup(checks) + ret_checks.append(' || '.join(checks)) + return block.output('\n\n') + + # + # Helper functions. + # + def _checkForMember(m, var): + t =3D TypeTable().get(m['_typeid']) + + ret =3D None + if m['pointer']: + ret =3D var + elif m['specified']: + ret =3D var + '_specified' + if ret.startswith('&'): + ret =3D ret[1:] + elif t['meta'] in ['Chars', 'UChars']: + ret =3D var + '[0]' + elif t['meta'] =3D=3D 'Enum': + ret =3D var + elif isBuiltin(t['meta']): + ret =3D var + if t['name']: + ret =3D '%sCheck(%s)' % (t['name'], var) + + return ret + + def _makeVar(): + if mtype['unpack'] and not pack: + return 'def' + + curname =3D member['name'] + if member['more']: + curname =3D Terms.pluralize(member['name']) + '[i]' + + if pack: + packname =3D pack['name'] + if pack['more']: + packname =3D Terms.pluralize(pack['name']) + '[i]' + if pack['hint'] =3D=3D 'union': + var =3D packname + else: + arrow =3D '->' if pack['pointer'] else '.' + var =3D packname + arrow + curname + else: + var =3D curname + var =3D 'def->' + var + + if mtype['meta'] =3D=3D 'Struct': + if not member['pointer']: + var =3D '&' + var + elif mtype['meta'] !=3D 'Enum' and mtype['name']: + var =3D '&' + var + + return var + + def _checkOnCondition(var): + if member['format.nocheck']: + return None + + if member.get('format.precheck'): + alist =3D [a['name'] for a in atype['formatfunc'].get('args', = [])] + args =3D ', '.join(alist) + if args: + args =3D ', ' + args + + precheck =3D member['format.precheck'] + checks =3D render('${funcname}(${var}, def${args})', + funcname=3Dprecheck, var=3Dvar, args=3Dargs) + + ret_decls.append(_makePrecheckDeclare(precheck, var)) + return checks + + if mtype['unpack']: + return mtype.get('check_all_members', None) + + if member['more']: + return None + + checks =3D _checkForMember(member, var) + return checks + + def _handleMore(code): + code =3D indent(code, 2) + if pack: + counter =3D counterName(pack['name']) + else: + counter =3D counterName(member['name']) + ret_checks.append('def->' + counter) + if singleline(code): + return render(T_LOOP_SINGLE, counter=3Dcounter, body=3Dcode) + + return render(T_LOOP_MULTI, counter=3Dcounter, body=3Dcode) + + def _makePrecheckDeclare(funcname, var): + assert funcname + if mtype['unpack']: + typename =3D mtype['_parent']['name'] + else: + typename =3D proto(mtype, False) + + if atype['unpack']: + parentname =3D atype['_parent']['name'] + else: + parentname =3D proto(atype, False) + + asterisk =3D '*' if mtype['unpack'] or var.startswith('&') else '' + args =3D ['const %s %sdef' % (typename, asterisk)] + args.append('const %s *parent' % parentname) + args.extend(createFormalArgs(atype['formatfunc'].get('args'), + align(funcname))) + fargs =3D (',\n%s' % align(funcname)).join(args) + return render(T_FORMAT_PRECHECK_DECLARE, + funcname=3Dfuncname, formal_args=3Dfargs) + + def _format(layout, var): + tmpl =3D '${funcname}(buf, "${layout}", ${var}${args})' + + args =3D [] + funcname =3D 'virBufferAsprintf' + has_return =3D False + if mtype['meta'] =3D=3D 'Struct': + if mtype['formatfunc'].get('name', None): + funcname =3D mtype['formatfunc']['name'] + else: + funcname =3D mtype['name'] + 'FormatBuf' + + args.extend(makeActualArgs(mtype['formatfunc'].get('args'), + member['format.args'])) + has_return =3D True + elif mtype['meta'] =3D=3D 'Enum': + tmpl =3D render(T_FORMAT_MEMBER_OF_ENUM, + fullname=3Dmtype['name'], + oname=3Dmember['id']) + elif mtype['name'] or mtype['formatfunc'].get('name', None): + if mtype['formatfunc'].get('name', None): + funcname =3D mtype['formatfunc']['name'] + else: + funcname =3D mtype['name'] + 'FormatBuf' + has_return =3D True + elif mtype['meta'] in ['String', 'Chars', 'UChars']: + funcname =3D 'virBufferEscapeString' + elif mtype['meta'] =3D=3D 'Bool.yes_no': + var =3D '%s ? "yes" : "no"' % var + elif mtype['meta'] =3D=3D 'Bool.on_off': + var =3D '%s ? "on" : "off"' % var + elif mtype['meta'] =3D=3D 'Bool': + pass + elif mtype['meta'] =3D=3D 'Constant': + tmpl =3D 'virBufferAddLit(buf, "${layout}")' + layout =3D " %s=3D'%s'" % (member['id'], mtype['values'][0]) + + args =3D ', '.join(args) + if args: + args =3D ', ' + args + + code =3D render(tmpl, funcname=3Dfuncname, layout=3Dlayout, + var=3Dvar, args=3Dargs) + if has_return: + code +=3D ' < 0' + code =3D render(T_IF_CONDITION_SINGLE, + condition=3Dcode, body=3D'return -1;') + elif mtype['meta'] not in ['Enum']: + code +=3D ';' + + return code + + def _handleAttr(tagname, var): + if member['tag'] !=3D 'attribute': + return None + + fmt =3D '%s' + if member['format.fmt']: + fmt =3D member['format.fmt'] + elif isBuiltin(mtype['meta']): + fmt =3D BUILTIN_TYPES[mtype['meta']].get('fmt', '%s') + + layout =3D " %s=3D'%s'" % (tagname, fmt) + return _format(layout, var) + + def _handleElem(tagname, var): + if member['tag'] =3D=3D 'attribute': + 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 + # + assert require in ['attribute', 'element'] + if not member.get('tag', None): + return None + + var =3D _makeVar() + + ret =3D None + tagname =3D member['id'] + 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_CONDITION_SINGLE, + condition=3Dchecks, body=3Dret) + else: + ret =3D render(T_IF_CONDITION_MULTI, + condition=3Dchecks, body=3Dret) + + if member['more']: + 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): + formatfunc =3D atype['formatfunc'] + + # + # Helper functions. + # + def _reorder(children, order): + if not order: + return children + + ret =3D NodeList() + for mid in order: + ret.append(findMember(mid, children)) + + if len(order) < len(children): + for child in children: + if child['id'] not in order: + ret.append(child) + + return ret + + def _formatMembers(prechecks): + attrs =3D [] + elems =3D [] + check_attrs =3D [] + check_elems =3D [] + members =3D _reorder(atype['members'], formatfunc.get('order', Non= e)) + + for member in members: + attr =3D formatMember(member, 'attribute', + check_attrs, prechecks, atype) + if attr: + attrs.append(attr) + + elem =3D formatMember(member, 'element', + check_elems, prechecks, atype) + 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_all_members'] =3D checks + ret.append(render(T_IF_CONDITION_SINGLE, + condition=3D'!(%s)' % checks, + body=3D'return 0;')) + + ret.append('virBufferAsprintf(buf, "<%s", name);') + + if atype['namespace']: + ret.append(T_NAMESPACE_FORMAT_BEGIN.strip()) + + ret.extend(attrs) + + if elems: + if not formatfunc.get('shorthand.ignore'): + 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 atype['namespace']: + 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. + # + if atype['pack'] or atype['union']: + return + + if formatfunc.get('name', None): + funcname =3D formatfunc['name'] + else: + funcname =3D atype['name'] + 'FormatBuf' + + if atype['unpack']: + typename =3D atype['_parent']['name'] + else: + typename =3D atype['name'] + + alignment =3D align(funcname) + + args =3D [{'name': 'buf', 'ctype': 'virBufferPtr'}, + {'name': 'name', 'ctype': 'const char', 'pointer': True}, + {'name': 'def', 'ctype': 'const ' + typename, 'pointer': True}] + + args.extend(formatfunc.get('args', [])) + + formal_args =3D createFormalArgs(args, alignment) + formal_args =3D (',\n%s' % alignment).join(formal_args) + + kwargs =3D {'funcname': funcname, 'formal_args': formal_args} + + prechecks =3D [] + format_members =3D _formatMembers(prechecks) + + decl =3D renderByDict(T_FORMAT_FUNC_DECL, kwargs) + if prechecks: + prechecks =3D dedup(prechecks) + decl +=3D '\n\n' + '\n\n'.join(prechecks) + writer.write(atype, 'formatfunc', '.h', decl) + + kwargs['format_members'] =3D indent(format_members, 1) + + impl =3D renderByDict(T_FORMAT_FUNC_IMPL, kwargs) + writer.write(atype, 'formatfunc', '.c', impl) + + +T_DIRECTIVE_JSON =3D ''' + +''' + + +def dumpJson(atype): + def _dumpJson(obj, compact=3DFalse): + lines =3D BlockAssembler() + for key, value in obj.items(): + if key.startswith('_') or key in ['tag', 'output']: + continue + if not value: + continue + if key =3D=3D 'name' and value =3D=3D obj['id']: + continue + if key =3D=3D 'meta' and value =3D=3D 'Member': + mtype =3D TypeTable().get(obj['_typeid']) + desc =3D '%s:%s' % (mtype['meta'], mtype['id'][:8]) + lines.append('"type": "%s"' % desc) + continue + if key =3D=3D 'members': + block =3D BlockAssembler() + for member in value: + block.append(' ' + _dumpJson(member, True)) + lines.append('"members": [\n%s\n]' % block.output(',\n')) + continue + if key in ['_env']: + value =3D _dumpJson(value, True) + else: + value =3D json.dumps(value) + lines.append('"%s": %s' % (key, value)) + + if compact: + return '{' + lines.output(', ') + '}' + return lines.output(',\n') + + return _dumpJson(atype) + + +def showDirective(atype): + print('\n###### Directive ######\n') + items =3D indent(dumpJson(atype), 1, 2) + print(render(T_DIRECTIVE_JSON, items=3Ditems)) diff --git a/rng2c/generator.py b/rng2c/generator.py new file mode 100755 index 0000000..d3ab64d --- /dev/null +++ b/rng2c/generator.py @@ -0,0 +1,504 @@ +#!/usr/bin/env python +# +# 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 +# . +# +# References: +# http://relaxng.org/spec-20011203.html +# https://www.w3.org/TR/xmlschema-2/#decimal +# + +import os +import sys +import json +import argparse +from copy import deepcopy +from datetime import datetime +from xml.dom import minidom + +from utils import assertOnlyOne, assertObj, Terms, deepupdate +from directive import TypeTable, NodeList, createMember +from directive import initDirectiveSchema, makeStructure +from directive import makeClearFunc, makeParseFunc, makeFormatFunc +from directive import verifyType, showDirective, isBuiltin, BUILTIN_TYPES + +g_rngs =3D [] +g_defines =3D {} +g_touches =3D [] + +VIRT_DIRECTIVE_HEAD =3D 'VIRT:DIRECTIVE' + +TOOL_DESC =3D ''' +Generate c-language code based on relax-ng files. + +Subcommand:\n + list: List all types discovered by this tool. Display three fields + SHORTID/MEAT/LOCATION for each type, SHORTID is the type's + sha1-id, only reserve the leftmost 8 digits; META is the + type's meta, includes 'Struct', 'Enum', 'String', 'UInt', + 'Bool', etc.; LOCATION indicates where the type derives from.\n + show: Show the target type's directives and its code for preview. + Specify target type by its SHORTID or LOCATION. 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, 's' for structure; 'c' for clearfunc; 'p' for parsefunc; + 'f' for formatfunc.\n + The option '-k' is only valid for show and generate. +''' + + +def _getText(xnode): + return assertOnlyOne(xnode.childNodes).data + + +def _resetParentNames(kvs, name): + kvs['id'] =3D name + kvs['_nodepath'].append((name, '.' + kvs['tag'])) + + +def collectJson(target, line, parent): + kvs =3D json.loads(line) + if 'PRESERVE' in kvs: + key =3D kvs.pop('PRESERVE') + kvs['_anchor'] =3D len(parent.get('_nodepath', [])) + target.setdefault('_preserve_table', {}) + target['_preserve_table'][key] =3D kvs + target['_preserve'] =3D key + elif 'APPLY' in kvs: + key =3D kvs.pop('APPLY') + kvs =3D parent['_preserve_table'][key] + target.update(deepcopy(kvs)) + else: + target.update(kvs) + + +def _makekvs(xnode, directives, parentkvs): + name =3D xnode.getAttribute('name') + kvs =3D {'id': name, 'tag': xnode.tagName, + '_env': {}, '_nodepath': [], '_preserve_table': {}} + kvs['_env'].update(parentkvs['_env']) + kvs['_preserve_table'].update(parentkvs.get('_preserve_table', {})) + kvs['_nodepath'].extend(parentkvs.get('_nodepath', [])) + if xnode.tagName =3D=3D 'choice': + kvs['_nodepath'].append(('', 'choice')) + elif xnode.tagName =3D=3D 'data': + kvs['_nodepath'].append((xnode.getAttribute('type'), '.data')) + elif name: + kvs['_nodepath'].append((name, '.' + xnode.tagName)) + return deepupdate(kvs, directives) + + +def _traverse(xchildren, parentkvs): + directive =3D {} + nodes =3D NodeList() + for xchild in xchildren: + if xchild.nodeType is xchild.COMMENT_NODE: + line =3D xchild.data.strip() + if line.startswith(VIRT_DIRECTIVE_HEAD): + collectJson(directive, line[len(VIRT_DIRECTIVE_HEAD):], + parentkvs) + elif xchild.nodeType is xchild.ELEMENT_NODE: + if xchild.getAttribute('ns'): + continue + if not verifyType(directive): + sys.exit(-1) + childkvs =3D _makekvs(xchild, directive, parentkvs) + directive =3D {} + opFunc =3D globals().get('op%s' % Terms.camelize(xchild.tagNam= e)) + assert opFunc, "Unsupported tag '%s'" % xchild.tagName + nodes.extend(opFunc(childkvs, parentkvs, xchild)) + return nodes + + +def opGrammar(kvs, parentkvs, _): + global g_touches + global g_rngs + g_rngs.append(kvs['_env']['rng']) + path =3D kvs['_env']['topdir'] + '/docs/schemas/' + kvs['_env']['rng'] + doc =3D minidom.parse(path) + grammar =3D doc.getElementsByTagName('grammar')[0] + _traverse(grammar.childNodes, kvs) + if 'start.xnode' in kvs: + for touch in g_touches: + opRef({'id': touch}, {}, None) + g_touches =3D [] + _traverse(kvs['start.xnode'].childNodes, kvs['start.kvs']) + return None + + +def opStart(kvs, parentkvs, xnode): + parentkvs['start.xnode'] =3D xnode + parentkvs['start.kvs'] =3D kvs + return None + + +def opInclude(kvs, parentkvs, xnode): + global g_rngs + rng =3D xnode.getAttribute('href') + if rng not in g_rngs: + kvs['_env']['rng'] =3D rng + opGrammar(kvs, {}, None) + return None + + +def opDefine(kvs, parentkvs, xnode): + global g_defines + global g_touches + name =3D assertObj(kvs['id']) + if kvs.pop('TOUCH', False): + g_touches.append(name) + + kvs['_env']['define'] =3D name + kvs['_xnode'] =3D xnode + kvs['_nodepath'] =3D [] + g_defines[name] =3D kvs + return None + + +def opRef(kvs, parentkvs, _): + global g_defines + ref =3D kvs['id'] + assert ref in g_defines, "Can't find '%s'." % ref + if not kvs.get('_preserve') and isinstance(g_defines[ref], NodeList): + nodes =3D g_defines[ref] + if nodes.uniform() =3D=3D 'Member': + nodes =3D deepcopy(nodes) + return nodes + + xnode =3D g_defines[ref].pop('_xnode') + if kvs.get('_preserve'): + kvs['_nodepath'].pop() + kvs =3D deepupdate(g_defines[ref], kvs) + else: + deepupdate(kvs, g_defines[ref]) + + # Preset it to avoid recursion + save =3D g_defines[ref] + g_defines[ref] =3D NodeList() + nodes =3D _traverse(xnode.childNodes, kvs) + if kvs.get('pack', False): + # Pack all members into a pseudo Struct. + assert nodes.uniform() is 'Member', kvs + typeid =3D TypeTable().register('Struct', kvs, nodes) + nodes =3D NodeList(createMember(typeid, kvs)) + + # Rewrite it with NodeList to indicate *PARSED*. + if kvs.get('_preserve'): + g_defines[ref] =3D save + else: + g_defines[ref] =3D nodes + + if nodes.uniform() =3D=3D 'Member': + nodes =3D deepcopy(nodes) + return nodes + + +def opElement(kvs, parentkvs, xnode): + typeid =3D TypeTable().getByLocation('String')['id'] + nodes =3D _traverse(xnode.childNodes, kvs) + if nodes: + if nodes.uniform() =3D=3D 'Member': + typeid =3D TypeTable().register('Struct', kvs, nodes) + else: + assert nodes.uniform() =3D=3D 'Builtin', nodes.uniform() + typeid =3D assertOnlyOne(nodes)['id'] + return NodeList(createMember(typeid, kvs)) + + +def opOptional(kvs, parentkvs, xnode): + nodes =3D _traverse(xnode.childNodes, kvs) + assert not nodes or nodes.uniform() =3D=3D 'Member' + for node in nodes: + node['opt'] =3D True + return nodes + + +def opAttribute(kvs, parentkvs, xnode): + typeid =3D TypeTable().getByLocation('String')['id'] + nodes =3D _traverse(xnode.childNodes, kvs) + if nodes: + node =3D assertOnlyOne(nodes) + if node['meta'] =3D=3D 'Value': + kvs['values'] =3D [node['value']] + meta =3D kvs.get('meta') + if not meta: + meta =3D 'Constant' + typeid =3D TypeTable().register(meta, kvs) + else: + assert nodes.uniform() in ['Builtin', 'Enum'] + typeid =3D node['id'] + + return NodeList(createMember(typeid, kvs)) + + +def opData(kvs, parentkvs, xnode): + if 'meta' in kvs: + meta =3D kvs['meta'] + else: + meta =3D Terms.camelize(xnode.getAttribute('type')) + + typeid =3D TypeTable().register(meta, kvs) + return NodeList(TypeTable().get(typeid)) + + +def opParam(kvs, parentkvs, xnode): + return None + + +def opChoice(kvs, parentkvs, xnode): + nodes =3D _traverse(xnode.childNodes, kvs) + if nodes.uniform() =3D=3D 'Value': + children =3D [child['value'] for child in nodes] + typeid =3D TypeTable().register('Enum', kvs, children) + return NodeList(TypeTable().get(typeid)) + + if kvs.get('union'): + # Pack all members into a pseudo Struct. + assert nodes.uniform() is 'Member', kvs + typeid =3D TypeTable().register('Struct', kvs, nodes) + kvs['id'] =3D kvs['union'] + kvs['hint'] =3D 'union' + nodes =3D NodeList(createMember(typeid, kvs)) + + return nodes + + +def opValue(kvs, parentkvs, xnode): + return NodeList({'meta': 'Value', 'value': _getText(xnode)}) + + +def opInterleave(kvs, parentkvs, xnode): + return _traverse(xnode.childNodes, kvs) + + +def opText(kvs, parentkvs, xnode): + return None + + +def opEmpty(kvs, parentkvs, xnode): + return None + + +def opZeroOrMore(kvs, parentkvs, xnode): + nodes =3D _traverse(xnode.childNodes, kvs) + for node in nodes: + node['more'] =3D True + node['opt'] =3D True + return nodes + + +def opOneOrMore(kvs, parentkvs, xnode): + nodes =3D _traverse(xnode.childNodes, kvs) + for node in nodes: + node['more'] =3D True + return nodes + + +def opGroup(kvs, parentkvs, xnode): + nodes =3D _traverse(xnode.childNodes, kvs) + assert nodes.uniform() =3D=3D 'Member' + for node in nodes: + node['opt'] =3D True + return nodes + + +def opAnyName(kvs, parentkvs, xnode): + _resetParentNames(parentkvs, '_Any_') + return None + + +def opName(kvs, parentkvs, xnode): + _resetParentNames(parentkvs, _getText(kvs['xnode'])) + return None + + +def mendParent(member, parent): + mtype =3D TypeTable().get(member['_typeid']) + assert mtype, member + if mtype['meta'] =3D=3D 'Struct': + if mtype['_env']['define'] !=3D parent['_env']['define']: + parent =3D None + + mtype['_parent'] =3D parent + nextp =3D parent if mtype['unpack'] else mtype + for child in mtype['members']: + mendParent(child, nextp) + + +class CodeWriter(object): + def __init__(self, args): + self._cmd =3D args.cmd + self._files =3D {} + self._filters =3D {} + self._filters['structure'] =3D args.kinds and 's' in args.kinds + 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 rng2c/generator.py */\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['id']: + if extname =3D=3D '.h': + info =3D Terms.upperInitial(kind) + if atype['unpack']: + parent =3D atype['_parent']['name'] + info +=3D ' (Unpack: expose to "%s".)' % parent + elif not atype[kind].get('output'): + info +=3D ' (Disabled: NO OUTPUT for "%s".)' % kind + print('\n###### %s ######' % info) + print('\n[.h]') + else: + print('\n[.c]') + print('\n' + content) + return + + assert self._cmd =3D=3D 'generate' + + if atype[kind].get('output'): + lfs =3D '\n' if extname =3D=3D '.h' else '\n\n' + path =3D atype['_env']['builddir'] + '/' + atype[kind]['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() + + +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=3D'list all types') + 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('###### RNG2C: start ... ######') + if not args.kinds: + print("[dry run]: no kinds specified for 'generate'") + + timestamp =3D datetime.now() + topdir =3D assertObj(os.environ.get('topdir', None)) + builddir =3D assertObj(os.environ.get('builddir', None)) + entries =3D assertObj(os.environ.get('entries', None)) + initDirectiveSchema(topdir + '/rng2c/schema.json') + + for entry in entries.split(): + env =3D {'_env': {'rng': entry, 'topdir': topdir, 'builddir': buil= ddir}} + opGrammar(env, {}, None) + + for atype in TypeTable().values(): + if atype['meta'] =3D=3D 'Struct' and not atype['unpack']: + for member in atype['members']: + mendParent(member, atype) + + if args.cmd =3D=3D 'list': + print('%s %-16s %s' % ('SHORT_ID', 'META', 'LOCATION')) + for atype in TypeTable().values(): + assert 'id' in atype, atype + print('%-8s %-16s %s' % (atype['id'][:8], atype['meta'], + atype['location'])) + sys.exit(0) + elif args.cmd =3D=3D 'show': + assert args.target, args + if '/' in args.target or isBuiltin(args.target): + atype =3D TypeTable().getByLocation(args.target) + elif len(args.target) =3D=3D 40: + atype =3D TypeTable().get(args.target) + else: + atype =3D TypeTable().getByPartialID(args.target) + if not atype: + sys.exit(0) + + args.target =3D atype['id'] + showDirective(atype) + if isBuiltin(atype['meta']): + print('\n###### Builtin details ######\n') + if atype.get('name', None): + ctype =3D atype['name'] + else: + ctype =3D BUILTIN_TYPES.get(atype['meta'])['ctype'] + print("ctype: %s\n" % ctype) + + writer =3D CodeWriter(args) + for atype in TypeTable().values(): + if atype['meta'] in ['Struct', 'Enum']: + makeStructure(writer, atype) + + for atype in TypeTable().values(): + if atype['meta'] =3D=3D 'Struct': + makeClearFunc(writer, atype) + + for atype in TypeTable().values(): + if atype['meta'] =3D=3D 'Struct': + makeParseFunc(writer, atype) + + for atype in TypeTable().values(): + if atype['meta'] =3D=3D 'Struct': + makeFormatFunc(writer, atype) + + writer.complete() + + if args.cmd =3D=3D 'generate': + elapse =3D (datetime.now() - timestamp).microseconds + print('\n###### RNG2C: elapse %d(us) ######\n' % elapse) + + sys.exit(0) diff --git a/rng2c/go b/rng2c/go new file mode 100755 index 0000000..0bf6b14 --- /dev/null +++ b/rng2c/go @@ -0,0 +1,8 @@ +# This is a command-line tool + +WORK_DIR=3D$(cd $(dirname $0); pwd) +export PYTHONDONTWRITEBYTECODE=3D1 +export topdir=3D"${WORK_DIR}/.." +export builddir=3D"${WORK_DIR}/../build" +export entries=3D"network.rng" +${WORK_DIR}/generator.py $@ diff --git a/rng2c/schema.json b/rng2c/schema.json new file mode 100644 index 0000000..5417989 --- /dev/null +++ b/rng2c/schema.json @@ -0,0 +1,113 @@ +{ + "definitions": { + "formal_arg": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "type": {"type": "string"}, + "pointer": {"type": "boolean"}, + "ctype": {"type": "string"} + } + }, + "function": { + "output": {"type": ["string", "null"]}, + "name": {"type": "string"}, + "args": { + "type": "array", + "items": {"$ref": "#/definitions/formal_arg"} + } + }, + "actual_arg": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "value": {"type": "string"} + } + }, + "member": { + "type": "object", + "properties": { + "id": {"type": "string"}, + "name": {"type": "string"}, + "opt": {"type": "boolean"}, + "more": {"type": "boolean"}, + "tag": {"type": "string"}, + "type": {"type": "string"}, + "pointer": {"type": "boolean"}, + "specified": {"type": "boolean"}, + "declare.comment": {"type": "string"}, + "parse.disable": {"type": "boolean"}, + "parse.args": { + "type": "array", + "items": {"$ref": "#/definitions/actual_arg"} + }, + "parse.instname": {"type": "string"}, + "parse.default": {"type": "string"}, + "format.disable": {"type": "boolean"}, + "format.nocheck": {"type": "boolean"}, + "format.precheck": {"type": "string"}, + "format.fmt": {"type": "string"}, + "format.args": { + "type": "array", + "items": {"$ref": "#/definitions/actual_arg"} + }, + "hint": {"type": "string"} + } + } + }, + + "type": "object", + "properties": { + "id": {"type": "string"}, + "location": {"type": "string"}, + "tag": {"type": "string"}, + "name": {"type": "string"}, + "meta": {"type": "string"}, + "unpack": {"type": "boolean"}, + "pack": {"type": "boolean"}, + "union": {"type": "string"}, + "structure": { + "type": "object", + "properties": { + "output": {"type": ["string", "null"]}, + "enum.default": {"type": "string"}, + "array.size": {"type": "string"} + } + }, + "clearfunc": { + "type": "object", + "properties": {"$ref": "#/definitions/function"} + }, + "parsefunc": { + "type": "object", + "properties": { + "$ref": "#/definitions/function", + "args.noctxt": {"type": "boolean"}, + "args.instname": {"type": "boolean"}, + "args.parent": {"type": "boolean"}, + "post": {"type": "boolean"}, + "post.notmpvars": {"type": "boolean"} + } + }, + "formatfunc": { + "type": "object", + "properties": { + "$ref": "#/definitions/function", + "shorthand.ignore": {"type": "boolean"}, + "order": {"type": "array", "items": {"type": "string"}} + } + }, + "namespace": {"type": "boolean"}, + "values": { + "type": "array", + "items": {"type": "string"} + }, + "members": { + "type": "array", + "items": {"$ref": "#/definitions/member"} + }, + "PRESERVE": {"type": "string"}, + "APPLY": {"type": "string"}, + "TOUCH": {"type": "boolean"} + } +} diff --git a/rng2c/utils.py b/rng2c/utils.py new file mode 100644 index 0000000..98d6f55 --- /dev/null +++ b/rng2c/utils.py @@ -0,0 +1,163 @@ +# +# 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 +import hashlib + + +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 {'address': 'addresses'} + caps =3D {'NET_DEV': 'NETDEV', 'MACTABLE': 'MAC_TABLE'} + + @classmethod + def _split(cls, word): + ret =3D [] + if not word: + return ret + head =3D 0 + for pos in range(1, len(word)): + if word[pos].isupper() and not word[pos - 1].isupper(): + ret.append(word[head:pos]) + head =3D pos + ret.append(word[head:]) + return ret + + @classmethod + def pluralize(cls, word): + ret =3D cls.plurals.get(word, None) + return ret if ret else word + 's' + + # 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:] + + @classmethod + def camelize(cls, word): + if not word: + return '' + parts =3D cls._split(word) + parts =3D map(cls.upperInitial, parts) + return ''.join(parts) + + @classmethod + def allcaps(cls, word): + if len(word) =3D=3D 0: + return word + parts =3D cls._split(word) + ret =3D '_'.join([part.upper() for part in parts]) + for key, value in cls.caps.items(): + ret =3D ret.replace('_%s_' % key, '_%s_' % value) + return ret + + +def assertOnlyOne(objs): + assert len(objs) =3D=3D 1 and objs[0], len(objs) + return objs[0] + + +def assertObj(obj, msg=3D''): + assert obj, msg + return obj + + +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() + + +def deepupdate(target, source): + assert isinstance(target, dict) + assert isinstance(source, dict) + for key, value in source.items(): + if key not in target: + target[key] =3D value + continue + + if isinstance(value, dict): + deepupdate(target[key], value) + else: + target[key] =3D value + + return target + + +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 sha1ID(unitext): + sha1 =3D hashlib.sha1() + sha1.update(unitext.encode()) + return sha1.hexdigest() + + +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): + name =3D Terms.pluralize(name) + if not name.islower(): + name =3D Terms.upperInitial(name) + return 'n' + name --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120443; cv=none; d=zohomail.com; s=zohoarc; b=D1H29EfUJET/NSoYMI102zAKKEeby48i28EWU93TNQOwWsx81SQsptrpSW/zjLiX8NeTrEjliVN8p1VUti3ZEm2JjXsWUxfb0boWnyJrKYBRIz9i07T5IBi+oPvJ84CkRomS3AyEmXbryKXMojdwgkSi1FJzCjunwQU95BNMjsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120443; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=FJyxsqCJ03EWVklNxIeP95KpEWW+l9vNO8xYJlmfgaY=; b=gOySECSpmmvFyey2/beesSM8Vz62onNn6CnJJ9nVxEXJ4cVFVXkSQVp+LeKZB5YNji5E65SsXQcl9i5682TPHeM0wRcbUQ5aejua7BW4Y4jdWIzPWbZWiOJOvuWGLHI4jxOvI2+MHJOpZvJfon0JpqjYjHMr8lJ2AGEPQ6yHa/U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120443971156.9380972606865; Wed, 25 Mar 2020 00:14: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-396-T1qBdc2SNheRrk4BUZaJcA-1; Wed, 25 Mar 2020 03:13:30 -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 03427107ACCA; Wed, 25 Mar 2020 07:13:25 +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 C5E9D5D9C5; Wed, 25 Mar 2020 07:13:24 +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 33BF18A025; Wed, 25 Mar 2020 07:13:24 +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 02P7CUcX023918 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7906B107530; Wed, 25 Mar 2020 07:12:30 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 71C69107524 for ; Wed, 25 Mar 2020 07:12:28 +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 1DACB101A55A for ; Wed, 25 Mar 2020 07:12:28 +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-332-ZLhr7c1uO8md7-C_d8nNeg-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S4; Wed, 25 Mar 2020 15:12:14 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120442; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=FJyxsqCJ03EWVklNxIeP95KpEWW+l9vNO8xYJlmfgaY=; b=icN6rN7sExePl8+jSwm9IULSNLDfvedy0q+5iWBKoY8gH8K48csfoaocNL62WtZy82I08G Yw5W+BQPeBP0s2dCD9AX+nXzU6fg6WslinnMz9vALDTqJWG/eFO8a6hMmCrAC4n24pZMT/ 135LG/Y9slz9kQND7Mcg7GnM93DYxHU= X-MC-Unique: T1qBdc2SNheRrk4BUZaJcA-1 X-MC-Unique: ZLhr7c1uO8md7-C_d8nNeg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 02/29] maint: Call RNG2C automatically when relax-ng files change Date: Wed, 25 Mar 2020 15:11:42 +0800 Message-Id: <20200325071209.20841-3-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S4 X-Coremail-Antispam: 1Uf129KBjvJXoWfGw1kZr4rWr45ZF18Xw45trb_yoWkGr4Dpw s5CF1rAa1kXrW5Kr1xKayDJF1jq3yjqas8WF1F9w1Utr4xZF98GrWxt3yY9F12gFW7Zw4I 9343KFyjgrWkAaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0z_Hq2nUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiRhPxT1bdHA4Y-AAAsW X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUcX023918 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Let makefiles call RNG2C for generating codes automatically. Signed-off-by: Shi Lei --- src/Makefile.am | 16 +++++++++++++++- src/access/Makefile.inc.am | 2 +- src/conf/Makefile.inc.am | 10 +++++++++- 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 | 11 ++++++++++- src/vbox/Makefile.inc.am | 2 +- tests/Makefile.am | 2 ++ tools/Makefile.am | 2 ++ 18 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 12dd6b8..dc2adb0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -23,7 +23,7 @@ AM_CPPFLAGS =3D -I$(top_srcdir) \ -I../include \ -I$(top_srcdir)/include \ -I$(srcdir)/util \ - -I./util \ + -I./util -I./conf \ -DIN_LIBVIRT \ -Dabs_top_builddir=3D"\"$(abs_top_builddir)\"" \ -Dabs_top_srcdir=3D"\"$(abs_top_srcdir)\"" \ @@ -87,6 +87,20 @@ sbin_PROGRAMS =3D bin_PROGRAMS =3D DRIVER_SOURCES =3D =20 +RNG2C_GENERATED_FILES_STAMP =3D .rng2c_generator.stamp +RNG_FILES =3D $(wildcard $(top_srcdir)/docs/schemas/*.rng) +RNG2C_SOURCE =3D $(wildcard $(top_srcdir)/rng2c/*.py) +RNG2C_ENTRIES =3D network.rng + +$(RNG2C_GENERATED_FILES_STAMP): $(RNG_FILES) $(RNG2C_SOURCE) + $(AM_V_GEN)topdir=3D$(top_srcdir) builddir=3D$(top_builddir) \ + entries=3D$(RNG2C_ENTRIES) \ + $(PYTHON) -B $(top_srcdir)/rng2c/generator.py generate -k scpf \ + && touch $@ + +MAINTAINERCLEANFILES +=3D $(RNG2C_GENERATED_FILES_STAMP) +CLEANFILES +=3D $(RNG2C_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..1fbde38 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,15 @@ CONF_SOURCES =3D \ $(DEVICE_CONF_SOURCES) \ $(NULL) =20 +$(CONF_GENERATED_SOURCES): $(RNG2C_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 39157c0..e12c73a 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 2fee607..2e4c107 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 bc05b01..5184908 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 0b28718..9e9d16d 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 9a68fd8..772bf17 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 51cd798..a54a498 100644 --- a/src/qemu/Makefile.inc.am +++ b/src/qemu/Makefile.inc.am @@ -99,6 +99,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 958bd18..e6eec31 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 63c8bc6..e5b608a 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 3655b8a..c792583 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 718b11a..ada1bb2 100644 --- a/src/util/Makefile.inc.am +++ b/src/util/Makefile.inc.am @@ -237,6 +237,10 @@ UTIL_SOURCES =3D \ $(NULL) =20 =20 +UTIL_GENERATED_SOURCES =3D \ + $(NULL) + + EXTRA_DIST +=3D \ $(srcdir)/keycodemapdb/data/keymaps.csv \ $(srcdir)/keycodemapdb/tools/keymap-gen \ @@ -251,8 +255,11 @@ KEYTABLES =3D \ $(KEYNAMES:%=3Dutil/virkeynametable_%.h) \ $(NULL) =20 -BUILT_SOURCES +=3D $(KEYTABLES) +UTIL_SOURCES +=3D $(KEYTABLES) $(UTIL_GENERATED_SOURCES) +BUILT_SOURCES +=3D $(KEYTABLES) $(UTIL_GENERATED_SOURCES) CLEANFILES +=3D $(KEYTABLES) +CLEANFILES +=3D $(KEYMANS) $(KEYPODS) $(UTIL_GENERATED_SOURCES) +MAINTAINERCLEANFILES +=3D $(KEYTABLES) $(UTIL_GENERATED_SOURCES) =20 UTIL_IO_HELPER_SOURCES =3D util/iohelper.c =20 @@ -298,6 +305,8 @@ libvirt_util_la_LIBADD =3D \ $(NULL) =20 =20 +$(UTIL_GENERATED_SOURCES): $(RNG2C_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 72a15c6..00ad02a 100644 --- a/src/vbox/Makefile.inc.am +++ b/src/vbox/Makefile.inc.am @@ -52,7 +52,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 ada5b8f..46d2523 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 Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120368; cv=none; d=zohomail.com; s=zohoarc; b=QHRpAHWaXhDkS9gLMrmLzHRYdY/+FPLtWL3eYQY+0NUK0jtsBlF/yFywHoenOZMI043G7cOmSn9GCtslgCJb22wgLF9DH5PDYrABTDHskrtcNbr72jWQAesEbZojUg/gOFLsGS5RPf615ruQqT66K+o+gU+lb1xe9O8l0pdzpkk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120368; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=zsJq8eL9htG3fEayY+K35Zqh6M5xGGl9da5dhbq3VFg=; b=VqEdVOTnJa7arMHPk4Bj5g2CNCNHFH1xt2CYI0Hf2+y+h+yvilnfP1R0d0sEf8kqJ6yHgf0eOzV9ck6J4EFq2KyqiU+zCwdFMY4Dvj1piTjMa+jx/WfxYfmm5Nnv4vAcOu10Cwjiv+NNmgsP9Uq0+7qMNyDIGVvf4dxOgkvYSkE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120368097159.6883062034151; Wed, 25 Mar 2020 00:12:48 -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-188-43QUeJiHOwKAqudkj6oReg-1; Wed, 25 Mar 2020 03:12:42 -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 D313C800D50; Wed, 25 Mar 2020 07:12:36 +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 A03AD5C1A2; Wed, 25 Mar 2020 07:12:36 +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 E3261944BF; Wed, 25 Mar 2020 07:12:35 +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 02P7CTkK023870 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9E1BC2037E45; Wed, 25 Mar 2020 07:12:29 +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 9AA8F2037E56 for ; Wed, 25 Mar 2020 07:12:28 +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 20B1A8F783A for ; Wed, 25 Mar 2020 07:12:28 +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-114-xGyCQ6wwMeiy8KUqG8Tdsg-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S5; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120366; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=zsJq8eL9htG3fEayY+K35Zqh6M5xGGl9da5dhbq3VFg=; b=hapAJr5hQZlfoa8OXXY30cTezrPH39hypwx2oaO86nAFY6Zy45FpDjNkVplEoxW8P0HgaJ Us+vqT+dLHsxma1CZGSlDayCsS6tB/4sCkpv7KcObs9UlWveQuYRBsY1Ghf/0S4udmIXGJ ZBfTJcv0wFTyHHQBTyt7fdoX7LCRxcE= X-MC-Unique: 43QUeJiHOwKAqudkj6oReg-1 X-MC-Unique: xGyCQ6wwMeiy8KUqG8Tdsg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 03/29] util: Add two helper functions virXMLChildNode and virXMLChildNodeSet Date: Wed, 25 Mar 2020 15:11:43 +0800 Message-Id: <20200325071209.20841-4-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S5 X-Coremail-Antispam: 1Uf129KBjvJXoWxCF4kGF1UJry7AF1kXFW7twb_yoW5Xr15pr ZxKr1Fvrn5J34fCwsagr1fWFs8Zr4SqrZ8Ww13Wry8Ar4fXrs5Gr4fZF12ga4UArWxWr1j qF4YgF1rWFW0yFJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0piv38rUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiUBTxT1f4pyYAsAAAsk X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CTkK023870 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When directive property 'args.noctxt" is set, there's no 'ctxt' argument for the parse function. So RNG2C uses virXMLChildNode, virXMLChildNodeSet and virXMLPropString to construct implementation of the parse function. 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 9ea7b99..bfaed58 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -502,6 +502,63 @@ virXMLCheckIllegalChars(const char *nodeName, } =20 =20 +/** + * 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; +} + + /** * virXMLPropString: * @node: XML dom node pointer 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 Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120397; cv=none; d=zohomail.com; s=zohoarc; b=CwhVVoG7SnOWE/Z5SOdKEeBoMT+W/YsvTT5Yd405qi7McswAUAjYLUyw4xrzsreEMNJXsHTqtFV5/8Vd6hfew4pADcEt8FyA84VxxZfBlxT5h6ciBF/FiafQKeml7rwC4TXOneANnWWEwMVvjL2pAeKD427WxHLdcG3rhRE/hcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120397; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=w0ns6VElSxMJhvH/lGeG60Vy21m0IcubxSkO7u+C1yk=; b=UmzIqXDkKMUxQlKGMNlg+BgfYFY56NRaocNWPm/5ZxMkGF/mLPaXJKKVCOfCItZsLoesLHIhn6zKG+WvjjaWEJ+XVc31fdW/p7nrTqwWIIjpaKsRC2vk6z+CAwG0qqWIIJLIPvx7ZSNql0YpsF8W+MabpOTxAGYUDc5egqVc0DI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120397022304.9151789841751; Wed, 25 Mar 2020 00:13:17 -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-273-LQyLpyKPPUGP3LbOrPhCEA-1; Wed, 25 Mar 2020 03:13:13 -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 BE6AD100726B; Wed, 25 Mar 2020 07:13:07 +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 8EADC60BF7; Wed, 25 Mar 2020 07:13:07 +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 48BA3180880D; Wed, 25 Mar 2020 07:13:07 +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 02P7CU9T023908 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5D01310F1C0E; Wed, 25 Mar 2020 07:12:30 +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 5795410F1CD7 for ; Wed, 25 Mar 2020 07:12:28 +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 E3A60800299 for ; Wed, 25 Mar 2020 07:12:27 +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-438-PRfei17eO_6b3BNLqyzNtg-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S6; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120395; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=w0ns6VElSxMJhvH/lGeG60Vy21m0IcubxSkO7u+C1yk=; b=CKI1uFL1M5qaObp1AKm8fN8alK2wQV+fWWe7KYLDLa97seaX2NcL/sLssKeGRc6hhXaBlw 5jGw+huRcjps+2GBeLT7tnPhFgy6F92VOdjwbMgdR4vd7oeeK2D3fbQBsRG/DwJHNGHXov aanqMl9jZZIk4kPeGSrFhyAIkGkAl3I= X-MC-Unique: LQyLpyKPPUGP3LbOrPhCEA-1 X-MC-Unique: PRfei17eO_6b3BNLqyzNtg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 04/29] util: Move VIR_ENUM_IMPL and VIR_ENUM_DECL from virenum.h to internal.h Date: Wed, 25 Mar 2020 15:11:44 +0800 Message-Id: <20200325071209.20841-5-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S6 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRGnmiUUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiTBTxT1dqAGQzxwAAsL X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CU9T023908 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Generated codes by RNG2C need to invoke VIR_ENUM_IMPL and VIR_ENUM_DECL. Move them from virenum.h to internal.h for convenience. This patch also prepares for next patch: replacing virTristateBool/virTristateSwitch(hardcoded) with namesakes. Signed-off-by: Shi Lei --- src/internal.h | 19 +++++++++++++++++++ src/util/virenum.h | 18 ------------------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/internal.h b/src/internal.h index e181218..27e56ac 100644 --- a/src/internal.h +++ b/src/internal.h @@ -502,3 +502,22 @@ enum { # define fprintf(fh, ...) g_fprintf(fh, __VA_ARGS__) =20 #endif /* VIR_NO_GLIB_STDIO */ + + +#define VIR_ENUM_IMPL(name, lastVal, ...) \ + static const char *const name ## TypeList[] =3D { __VA_ARGS__ }; \ + const char *name ## TypeToString(int type) { \ + return virEnumToString(name ## TypeList, \ + G_N_ELEMENTS(name ## TypeList), \ + type); \ + } \ + int name ## TypeFromString(const char *type) { \ + return virEnumFromString(name ## TypeList, \ + G_N_ELEMENTS(name ## TypeList), \ + type); \ + } \ + G_STATIC_ASSERT(G_N_ELEMENTS(name ## TypeList) =3D=3D lastVal) + +#define VIR_ENUM_DECL(name) \ + const char *name ## TypeToString(int type); \ + int name ## TypeFromString(const char*type) diff --git a/src/util/virenum.h b/src/util/virenum.h index d74af35..24a69bd 100644 --- a/src/util/virenum.h +++ b/src/util/virenum.h @@ -30,24 +30,6 @@ virEnumToString(const char * const *types, unsigned int ntypes, int type); =20 -#define VIR_ENUM_IMPL(name, lastVal, ...) \ - static const char *const name ## TypeList[] =3D { __VA_ARGS__ }; \ - const char *name ## TypeToString(int type) { \ - return virEnumToString(name ## TypeList, \ - G_N_ELEMENTS(name ## TypeList), \ - type); \ - } \ - int name ## TypeFromString(const char *type) { \ - return virEnumFromString(name ## TypeList, \ - G_N_ELEMENTS(name ## TypeList), \ - type); \ - } \ - G_STATIC_ASSERT(G_N_ELEMENTS(name ## TypeList) =3D=3D lastVal) - -#define VIR_ENUM_DECL(name) \ - const char *name ## TypeToString(int type); \ - int name ## TypeFromString(const char*type) - typedef enum { VIR_TRISTATE_BOOL_ABSENT =3D 0, VIR_TRISTATE_BOOL_YES, --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120413; cv=none; d=zohomail.com; s=zohoarc; b=Ko7jeXJ9kT4JvwBZ8h2lC2gqwzci8cIU5M6aTCnZbgiKG+xk+9ZPyrtpYkvPhc/ZnF6cLUJQN2CM2Boni5RuwfCXPRhXCJuI6Ka/ClRrxK6mjEFmCO7VXkepT15hE1PAD1S2LRBMLneGSW14WNI2t9nI/NzK5rC+dRhl7bcURp0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120413; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=fHRmNRS4U8/PwgfL7kY4njcKVIJ/P3lklxmJZelAbJ4=; b=CThaH2zW5saQ0fuqZcS/z+dL2C+73ORKf/UDKTSMojxmXKRmMjbfaUGX0GwCXbYosRk/LNzZ2Zq7V68pVU0PSWlsxnPhhuNVy+HshrgSklcKfZazq+u07D34S8zmo0CKOeRTcYkIZ/0kORQvn17l6XWnI+cTzw9VyMvxL3V6YkQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120413994669.4316503097828; Wed, 25 Mar 2020 00:13:33 -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-157-IQIyTLpWNxS-pQz7LzYFpw-1; Wed, 25 Mar 2020 03:13:31 -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 89810801E78; Wed, 25 Mar 2020 07:13:25 +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 5C71C9B934; Wed, 25 Mar 2020 07:13:25 +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 07C6618034EE; Wed, 25 Mar 2020 07:13:25 +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 02P7CUJ6023893 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id A01532037E59; Wed, 25 Mar 2020 07:12: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 9AA4D2037E4F for ; Wed, 25 Mar 2020 07:12:28 +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 C13F280029B for ; Wed, 25 Mar 2020 07:12:28 +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-435-VZM04qrnM76ixPcZiaAsLA-1; Wed, 25 Mar 2020 03:12:25 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S7; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120412; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=fHRmNRS4U8/PwgfL7kY4njcKVIJ/P3lklxmJZelAbJ4=; b=eF4T8WHDivlVFFay0vHtGZWOFpuGPkpNAVe4sapaFFXYDlZBnvx/+p2uSg3By3U0Ydt5pC ddzsHU6VHvaBGbVShol7w3Yi8TkUbAHoGQUIPBJvfeqY8vK3CCcDKvP49AdHGJ0+Skpwza jMaBzyyDZetlXv4KDNSKiobZxEYwIq0= X-MC-Unique: IQIyTLpWNxS-pQz7LzYFpw-1 X-MC-Unique: VZM04qrnM76ixPcZiaAsLA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 05/29] util: Replace virTristateBool|virTristateSwitch(hardcoded) with namesakes(generated) Date: Wed, 25 Mar 2020 15:11:45 +0800 Message-Id: <20200325071209.20841-6-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S7 X-Coremail-Antispam: 1Uf129KBjvJXoWxJF45WFWUAr4kGF15ArWxtFb_yoW5WrWrpw s5Ars7Cry3Xr1a9w4ftw4Fya1akw15tr15CF93WF1kWF4FqwnrXrZ7tFWkWrWjyFW5J39x Zw1UK348Jay0yw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pR8-BtUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiRxTxT1dqAIIyYQAAsB X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUJ6023893 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/basictypes.rng | 14 ++++++++++++++ src/util/Makefile.inc.am | 2 ++ src/util/virenum.c | 15 --------------- src/util/virenum.h | 21 +++------------------ 4 files changed, 19 insertions(+), 33 deletions(-) diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng index 8146527..e602715 100644 --- a/docs/schemas/basictypes.rng +++ b/docs/schemas/basictypes.rng @@ -571,6 +571,13 @@ =20 + yes no @@ -578,6 +585,13 @@ =20 + on off diff --git a/src/util/Makefile.inc.am b/src/util/Makefile.inc.am index ada1bb2..fcf0a0d 100644 --- a/src/util/Makefile.inc.am +++ b/src/util/Makefile.inc.am @@ -238,6 +238,8 @@ UTIL_SOURCES =3D \ =20 =20 UTIL_GENERATED_SOURCES =3D \ + util/virenum.generated.h \ + util/virenum.generated.c \ $(NULL) =20 =20 diff --git a/src/util/virenum.c b/src/util/virenum.c index 26093bd..8236924 100644 --- a/src/util/virenum.c +++ b/src/util/virenum.c @@ -22,21 +22,6 @@ =20 #define VIR_FROM_THIS VIR_FROM_NONE =20 -VIR_ENUM_IMPL(virTristateBool, - VIR_TRISTATE_BOOL_LAST, - "default", - "yes", - "no", -); - -VIR_ENUM_IMPL(virTristateSwitch, - VIR_TRISTATE_SWITCH_LAST, - "default", - "on", - "off", -); - - virTristateBool virTristateBoolFromBool(bool val) { diff --git a/src/util/virenum.h b/src/util/virenum.h index 24a69bd..add02ee 100644 --- a/src/util/virenum.h +++ b/src/util/virenum.h @@ -19,6 +19,7 @@ #pragma once =20 #include "internal.h" +#include "virenum.generated.h" =20 int virEnumFromString(const char * const *types, @@ -30,24 +31,8 @@ virEnumToString(const char * const *types, unsigned int ntypes, int type); =20 -typedef enum { - VIR_TRISTATE_BOOL_ABSENT =3D 0, - VIR_TRISTATE_BOOL_YES, - VIR_TRISTATE_BOOL_NO, - - VIR_TRISTATE_BOOL_LAST -} virTristateBool; - -typedef enum { - VIR_TRISTATE_SWITCH_ABSENT =3D 0, - VIR_TRISTATE_SWITCH_ON, - VIR_TRISTATE_SWITCH_OFF, - - VIR_TRISTATE_SWITCH_LAST -} virTristateSwitch; - -VIR_ENUM_DECL(virTristateBool); -VIR_ENUM_DECL(virTristateSwitch); +typedef virTristateBoolType virTristateBool; +typedef virTristateSwitchType virTristateSwitch; =20 virTristateBool virTristateBoolFromBool(bool val); virTristateSwitch virTristateSwitchFromBool(bool val); --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120392; cv=none; d=zohomail.com; s=zohoarc; b=XUYxyAxEbiFB2GDqNHJ/tJBg/6i1kftgJ+3DhKUHgZP1s24i6QmUOdS1msgJkkAadG7BtRMZ7F5pXELOHLuJUbzWYurD8nVLHB/nPDTLXD9lGo3tT779G+PkioT3YiFuXTAu0XVUt6JLCgrTdMlY71A5PfoWd5DrXNv7d/QdBNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120392; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=Of7xkQLoOY7+z5TwNlGCR+1TKTGOkGXqe07c8dh9sXY=; b=CZzGA+SBAC5rnWn3fNSE7yeWELThr+lOQUtv7CWz2ZH0K0HyqpA2VU6HCtmB9HVHCWmiaLiMzJdRY4kL1mcU8fZLdbn/1GXY4zNRsAwEuLBupL0gjp9Wl6OB9c6DWCf4wO8UNFBirWxGV8tkAAFaSndMiKR0ZjKf84PQh9AjRnM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120392431659.3406394255093; Wed, 25 Mar 2020 00:13: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-338-Qoc3_CzTMU65UDRIVKYYJQ-1; Wed, 25 Mar 2020 03:13:08 -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 CD59E1085929; Wed, 25 Mar 2020 07:13:00 +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 9DA2460BF7; Wed, 25 Mar 2020 07:13:00 +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 4EB8D18089D6; Wed, 25 Mar 2020 07:13:00 +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 02P7CU3j023920 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 79AF5100D62; Wed, 25 Mar 2020 07:12:30 +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 71CA3108BCC for ; Wed, 25 Mar 2020 07:12:29 +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 C868E8FF667 for ; Wed, 25 Mar 2020 07:12: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-435-kaxtAr9yN9eFcbBT5nvHzA-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S8; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120391; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Of7xkQLoOY7+z5TwNlGCR+1TKTGOkGXqe07c8dh9sXY=; b=af5J2X+cwYBwI89iFbeVMEBYb0J5xuFRXhbiQVAlGnHuxDTr9AHxh7fJdrNAVj6c9SVfPd pdrRXItplHAHmoiOIwmzYoRoO/wZleoSVa33CmbGaZctHFMs/kQY35RCMB0vAQ9pd/4qt0 f+eCUQb9JGN60MeKkGVUIMuVXGQO/iU= X-MC-Unique: Qoc3_CzTMU65UDRIVKYYJQ-1 X-MC-Unique: kaxtAr9yN9eFcbBT5nvHzA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 06/29] util: Add a helper function virStringParseOnOff Date: Wed, 25 Mar 2020 15:11:46 +0800 Message-Id: <20200325071209.20841-7-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S8 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRGnmiUUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiTxTxT1f4p2CcUAAAsB X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CU3j023920 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When RNG2C generates codes for builtin 'Bool.on_off', it includes virStringParseOnOff in those codes. Signed-off-by: Shi Lei --- src/util/virstring.c | 22 ++++++++++++++++++++++ src/util/virstring.h | 5 +++++ 2 files changed, 27 insertions(+) diff --git a/src/util/virstring.c b/src/util/virstring.c index e9e792f..2d0bb23 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -1404,3 +1404,25 @@ int virStringParseYesNo(const char *str, bool *resul= t) =20 return 0; } + + +/** + * virStringParseOnOff: + * @str: "on|off" to parse, must not be NULL. + * @result: pointer to the boolean result of @str conversion + * + * Parses a "on|off" string and converts it into a boolean. + * + * Returns 0 on success and -1 on error. + */ +int virStringParseOnOff(const char *str, bool *result) +{ + if (STREQ(str, "on")) + *result =3D true; + else if (STREQ(str, "off")) + *result =3D false; + else + return -1; + + return 0; +} diff --git a/src/util/virstring.h b/src/util/virstring.h index 360c683..c528e44 100644 --- a/src/util/virstring.h +++ b/src/util/virstring.h @@ -185,6 +185,11 @@ int virStringParsePort(const char *str, int virStringParseYesNo(const char *str, bool *result) G_GNUC_WARN_UNUSED_RESULT; + +int virStringParseOnOff(const char *str, + bool *result) + G_GNUC_WARN_UNUSED_RESULT; + /** * VIR_AUTOSTRINGLIST: * --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120408; cv=none; d=zohomail.com; s=zohoarc; b=jhck8b3NKqFeIDDI/iJk447VMwWhSliDPZPN8QBkja8/3gqwfjJG0XPtzs2b81gxt1/j9eL94Mt+6e5gMFBkjfUuo46tfm3OBB42kdKr0toKJZn41J8xgoRuOX2KoBnQHkI8ZueLzi4lrtcpjohbqrvy8p7sJ/NMU9Sbgwe9upQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120408; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=c21Q7y75RSNtbvWLoE/At/EqWFau/+bIi1tGjZ5RpGg=; b=IUyx8ELNn85HQR8G8wll2EUtWo8z2cCYcxN6iJPVCLfKy5vsebO1GbecaNRK7AW2F0tBQRz1goyEeSd0xPrnbuSnKAiwnUcnt0y4VRMrYAzGg7na9M9BOktMKNtUabRRuEE514+ScpIaXnSYH/uMop+dZSl7GY3dGBKojypm3K4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120408285556.9650896536174; Wed, 25 Mar 2020 00:13: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-303-qgZLf6B1NhCT5yc01Bm7WQ-1; Wed, 25 Mar 2020 03:13:24 -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 7E0D5DB62; Wed, 25 Mar 2020 07:13:17 +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 5086BA0A78; Wed, 25 Mar 2020 07:13: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 E62201803C40; Wed, 25 Mar 2020 07:13:16 +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 02P7CTVE023871 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id A01072037E56; Wed, 25 Mar 2020 07:12:29 +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 994952037E4D for ; Wed, 25 Mar 2020 07:12:27 +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 B2822185A78F for ; Wed, 25 Mar 2020 07:12:27 +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-AReMQG3POqC2KCAwB-j5pA-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S9; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120407; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=c21Q7y75RSNtbvWLoE/At/EqWFau/+bIi1tGjZ5RpGg=; b=JaS6x6E0rXh+9tqaxWVXnsGgZPWJLfNj8AiktJ+QcV/G2vl5ZinkCy62+uEvf0tYwCy5Ev O4Rpb7SkWMsGvnbZ+znBN8hHS47sPu5gfc79wSNPkbs/EHPOZCj/oGjKJtl77rufgy0pRb De/gB1FNUUnoPZeRkGO+FxELHStOjUU= X-MC-Unique: qgZLf6B1NhCT5yc01Bm7WQ-1 X-MC-Unique: AReMQG3POqC2KCAwB-j5pA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 07/29] util: Add some helper functions for virSocketAddr Date: Wed, 25 Mar 2020 15:11:47 +0800 Message-Id: <20200325071209.20841-8-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S9 X-Coremail-Antispam: 1Uf129KBjvJXoWxWw1UurWrtry8Wr1rtFWkZwb_yoWrJryxpF 1rtr15XrW8tws3Zw4Iqr4Y9r1SvF18XayUXa4Uuw10kws5J3W5t3Wqqry3Gr18JFWjyF48 Xrn8CrWkC3W8KaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0piv38rUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiTBTxT1dqAGQzyAAAsE X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CTVE023871 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add virSocketAddrParse, virSocketAddrFormat, virSocketAddrClear and virSocketAddrCheck. In generated codes by RNG2C, these functions are called for handling virSocketAddr. Signed-off-by: Shi Lei --- docs/schemas/basictypes.rng | 1 + src/util/virsocketaddr.c | 27 +++++++++++++++++++++++++++ src/util/virsocketaddr.h | 10 ++++++++++ 3 files changed, 38 insertions(+) diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng index e602715..a6c3fc8 100644 --- a/docs/schemas/basictypes.rng +++ b/docs/schemas/basictypes.rng @@ -222,6 +222,7 @@ =20 + (((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9]= [0-9])|([0-9]))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([1-9][0-9])|([0-= 9])) diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c index 4cad329..f502978 100644 --- a/src/util/virsocketaddr.c +++ b/src/util/virsocketaddr.c @@ -157,6 +157,11 @@ int virSocketAddrParse(virSocketAddrPtr addr, const ch= ar *val, int family) return len; } =20 +int virSocketAddrParseXML(const char *val, virSocketAddrPtr addr) +{ + return virSocketAddrParse(addr, val, AF_UNSPEC); +} + /** * virSocketAddrParseAny: * @addr: where to store the return value, optional. @@ -444,6 +449,22 @@ virSocketAddrFormat(const virSocketAddr *addr) return virSocketAddrFormatFull(addr, false, NULL); } =20 +int +virSocketAddrFormatBuf(virBufferPtr buf, + const char *fmt, + const virSocketAddr *addr) +{ + 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; +} =20 /* * virSocketAddrFormatFull: @@ -1319,3 +1340,9 @@ virSocketAddrFree(virSocketAddrPtr addr) { VIR_FREE(addr); } + +void +virSocketAddrClear(virSocketAddrPtr addr) +{ + memset(addr, 0, sizeof(virSocketAddr)); +} diff --git a/src/util/virsocketaddr.h b/src/util/virsocketaddr.h index d06e751..f255107 100644 --- a/src/util/virsocketaddr.h +++ b/src/util/virsocketaddr.h @@ -18,6 +18,7 @@ =20 #pragma once =20 +#include "virbuffer.h" #include "virsocket.h" =20 #define VIR_LOOPBACK_IPV4_ADDR "127.0.0.1" @@ -44,6 +45,8 @@ typedef struct { #define VIR_SOCKET_ADDR_FAMILY(s) \ ((s)->data.sa.sa_family) =20 +#define virSocketAddrCheck VIR_SOCKET_ADDR_VALID + #define VIR_SOCKET_ADDR_IPV4_ALL "0.0.0.0" #define VIR_SOCKET_ADDR_IPV6_ALL "::" =20 @@ -70,6 +73,8 @@ int virSocketAddrParse(virSocketAddrPtr addr, const char *val, int family); =20 +int virSocketAddrParseXML(const char *val, virSocketAddrPtr addr); + int virSocketAddrParseAny(virSocketAddrPtr addr, const char *val, int family, @@ -93,6 +98,10 @@ char *virSocketAddrFormatFull(const virSocketAddr *addr, bool withService, const char *separator); =20 +int virSocketAddrFormatBuf(virBufferPtr buf, + const char *fmt, + const virSocketAddr *addr); + char *virSocketAddrGetPath(virSocketAddrPtr addr); =20 int virSocketAddrSetPort(virSocketAddrPtr addr, int port); @@ -145,5 +154,6 @@ 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); --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120405; cv=none; d=zohomail.com; s=zohoarc; b=Sqt4VUOSQUm7zJNcY64wmVJhiCH8YYLHEcPOXCmVnOV4B8c2RtNtx1ycglS7XP+ggK/mfr/ePTj08lqf4cFWqS9ecDFDjwgNVtlE+IcrHYBNkzFVdgUMFdRrJzSckziIf0s9+/sqsZuFPPyoQfVZBhf2JQSzGcAX/DVLJ89wzJo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120405; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=uuI/9Av/7+3r/ZEsVbreeEvSEk1jWUB4R1XKgd1ZKtY=; b=ddn8EMm6cdIH/E0n7E6H32rdKJLsncde1F3wF2JvvcjpjrUzBUfYQJXZD+Cuxht3NBZAEaPuVmc51jHeg9Vk5ftPbwMdHtawQB+I93iO+wo1amVxrmWDQ1ASzYN2qpWGV4O5zkXGQ5Kfg4j+9+vgbJu04/33cq840rmOLWQ1DCg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120405821804.0636595304544; Wed, 25 Mar 2020 00:13: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-243-fohCpBtpOc-o-TMyXpNv5w-1; Wed, 25 Mar 2020 03:13:22 -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 070A81005513; Wed, 25 Mar 2020 07:13:16 +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 CC46C60C05; Wed, 25 Mar 2020 07:13: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 7075C1803C33; Wed, 25 Mar 2020 07:13:15 +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 02P7CU91023910 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6064210F1C06; Wed, 25 Mar 2020 07:12:30 +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 5843D10F1CD9 for ; Wed, 25 Mar 2020 07:12:28 +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 A821A8007AC for ; Wed, 25 Mar 2020 07:12:28 +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-439-IaVF86RLOm-_o6mRZ0honA-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S10; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120404; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=uuI/9Av/7+3r/ZEsVbreeEvSEk1jWUB4R1XKgd1ZKtY=; b=ifxFIkUIw+PndCeECE/xwiULvpqmZaqw8lHksWiNaHM1aHDg5VPYi4VHYARAx879p1csVK nekNIC3vVn+/Upm4dH8K2q8TWFCnZjcC6xFBGrmwzTrmer2p1bC/2ZKPMAC/Y3y9YdNMuL X8oGssbbhhfxXvKqBaUIh5SDW9gN6yg= X-MC-Unique: fohCpBtpOc-o-TMyXpNv5w-1 X-MC-Unique: IaVF86RLOm-_o6mRZ0honA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 08/29] util: Add a helper function virStrToLong_u8p Date: Wed, 25 Mar 2020 15:11:48 +0800 Message-Id: <20200325071209.20841-9-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S10 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRSdgtUUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiPhTxT1bdHEorqgAAsI X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CU91023910 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Meta 'U8' corresponds to 'uint8_t'. Add virStrToLong_u8p when parsing uint8_t. Signed-off-by: Shi Lei --- src/util/virstring.c | 15 +++++++++++++++ src/util/virstring.h | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/src/util/virstring.c b/src/util/virstring.c index 2d0bb23..83d13ff 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -460,6 +460,21 @@ virStrToLong_uip(char const *s, char **end_ptr, int ba= se, unsigned int *result) return 0; } =20 +/* Just like virStrToLong_uip, above, but produce an "uint8_t" value. + * This version rejects any negative signs. */ +int +virStrToLong_u8p(char const *s, char **end_ptr, int base, uint8_t *result) +{ + unsigned int val; + int ret; + ret =3D virStrToLong_uip(s, end_ptr, base, &val); + if (ret < 0 || val > 0xff) + return -1; + + *result =3D (uint8_t) val; + return 0; +} + /* Just like virStrToLong_i, above, but produce a "long" value. */ int virStrToLong_l(char const *s, char **end_ptr, int base, long *result) diff --git a/src/util/virstring.h b/src/util/virstring.h index c528e44..da73f86 100644 --- a/src/util/virstring.h +++ b/src/util/virstring.h @@ -77,6 +77,11 @@ int virStrToLong_uip(char const *s, int base, unsigned int *result) G_GNUC_WARN_UNUSED_RESULT; +int virStrToLong_u8p(char const *s, + char **end_ptr, + int base, + uint8_t *result) + G_GNUC_WARN_UNUSED_RESULT; int virStrToLong_l(char const *s, char **end_ptr, int base, --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120397; cv=none; d=zohomail.com; s=zohoarc; b=DSjplzTVN3Z/RY3eA5gk7lCIWymr7JWzbfHF+Pn5oWGolz0/3dnu8vEQqSh4z8bbfpx7D7/SUwNtP8RRg1ypqMHVSa8qPV3QVBE4bzTeVonXKSd8mHufTvQjDQEhxYLC6lVTskCDChLub914Ad9PG0gJVgOplCIH0Bsn2GYy7HU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120397; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=4pPDLhtHtqdnLJV9TkKxAu1Yzv/R4DbsL1IP5VflgoE=; b=Dr43VJgQ97/OCuIgFCU/gY4pgeD0XjmDc+63wrkmzBI8wM3nk82MYqDzJ8bx+HxHbSBdybOkO/a1nbkfXkbU5uOO0k05+ceOD9wGnp58K3Evwshe4P6Hr8D6AWYXOPgnPF3dY34CJJunV7Z+yb6QZLJII/BoNqEOaKF8esNk+sE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120397554809.885621585361; Wed, 25 Mar 2020 00:13:17 -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-38-_v54zqH8OrKTgbt1YyC7YA-1; Wed, 25 Mar 2020 03:13:14 -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 F2348DB83; Wed, 25 Mar 2020 07:13:08 +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 BE92E60BF7; Wed, 25 Mar 2020 07:13:08 +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 6EF6F8639F; Wed, 25 Mar 2020 07:13:08 +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 02P7CTCM023867 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9D6862037E43; Wed, 25 Mar 2020 07:12: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 967282026D67 for ; Wed, 25 Mar 2020 07:12:28 +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 5C74D8001EA for ; Wed, 25 Mar 2020 07:12:28 +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-182-h0_GIVfhPzaDJFaBowr7HQ-1; Wed, 25 Mar 2020 03:12:25 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S11; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120396; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=4pPDLhtHtqdnLJV9TkKxAu1Yzv/R4DbsL1IP5VflgoE=; b=Az3uiT/ui3NvqQDODQL2vU6+HntScVs98Vn7sPakjXhcG4nGIV1tg+NL27Fo74f0CzXHyz VbRYM7GX36ys3GNPwRSRjYypkt/cYkbqFr2nsbFUYZS2n8eVMd27njN0DI1XNIkE8MXfke bgDWx9B7WgDIRb5e3eRhoCgrUiVsVS4= X-MC-Unique: _v54zqH8OrKTgbt1YyC7YA-1 X-MC-Unique: h0_GIVfhPzaDJFaBowr7HQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 09/29] conf: Replace virNetworkDNSTxtDef(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:49 +0800 Message-Id: <20200325071209.20841-10-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S11 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRGnmiUUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiPxTxT1bdHDwiQwAAsf X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CTCM023867 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 3 +++ src/conf/network_conf.h | 8 +------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 6045322..4d23c8f 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -281,6 +281,9 @@ + diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index db7243e..4e6cf72 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -37,6 +37,7 @@ #include "virmacmap.h" #include "virenum.h" #include "virxml.h" +#include "network_conf.generated.h" =20 struct _virNetworkXMLOption { virObject parent; @@ -103,13 +104,6 @@ struct _virNetworkDHCPHostDef { virSocketAddr ip; }; =20 -typedef struct _virNetworkDNSTxtDef virNetworkDNSTxtDef; -typedef virNetworkDNSTxtDef *virNetworkDNSTxtDefPtr; -struct _virNetworkDNSTxtDef { - char *name; - char *value; -}; - typedef struct _virNetworkDNSSrvDef virNetworkDNSSrvDef; typedef virNetworkDNSSrvDef *virNetworkDNSSrvDefPtr; struct _virNetworkDNSSrvDef { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120394; cv=none; d=zohomail.com; s=zohoarc; b=hzQGoD8ldZWZS3BvA8ArkH+Mc7InSz3Ui2188qOTjp0oCQ6RlAa+x1WzXvCMiiH+I+LYzis8jGIsMzzFQA6D5JNfSIqoav5skdt+y8iGOVBH4vxtFge5pRgN9sOwjTTEw0vCbI2vLtOMswvPoQZpZqKew6Pga8lskJhLAiMmsXg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120394; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=1z9VVpXHAL5dnrlEdY086nuVGTJVDn0nPocI1x9dMDI=; b=kbXacVtdKLISYxSoyp/Pa5UFyMwRKFO2O1/k/g4JbxewXTYXuJIg4/nnETS9TNycDgIa5bl7sYTZQuTpxmgeCJjGSTf1wDqpHo4hh3TKjd1OStmKDil4Dau7Jng3eUwwvyoUwByGW4Tu/cL3yOufcev1Fa4eOVfIOKTUiepkKjg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120394701560.2893036603233; Wed, 25 Mar 2020 00:13: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-25-QR_e0p2JNgGYw9W1jL6YYg-1; Wed, 25 Mar 2020 03:13:10 -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 A3223DB64; Wed, 25 Mar 2020 07:13:04 +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 5E7C4953A5; Wed, 25 Mar 2020 07:13:04 +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 DA05486396; Wed, 25 Mar 2020 07:13:03 +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 02P7CS5S023837 for ; Wed, 25 Mar 2020 03:12:29 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2C61C2166B2F; Wed, 25 Mar 2020 07:12:28 +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 28C532166B2B for ; Wed, 25 Mar 2020 07:12:28 +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 142CF8007CB for ; Wed, 25 Mar 2020 07:12:28 +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-186-TNGnkljzMISy9y-nh-SXhA-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S12; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120393; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=1z9VVpXHAL5dnrlEdY086nuVGTJVDn0nPocI1x9dMDI=; b=Uw8ucdouq1XMG6y4sJBS/eC/N9d+b4U4y+hwtaMNJsdKluOYMLCOlecK/fuJ90RHNxJsD4 +bpReBgooA2rC4ZR/Nqs7DbnuGAwRwtjwLSmNAM8E5KaLSeppRxKfvrjKqj8TEeWl8ZNZy n+40ITlnXohT437Uf3bIjZYb4uaAybI= X-MC-Unique: QR_e0p2JNgGYw9W1jL6YYg-1 X-MC-Unique: TNGnkljzMISy9y-nh-SXhA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 10/29] conf: Replace virNetworkDNSSrvDef(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:50 +0800 Message-Id: <20200325071209.20841-11-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S12 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRWv30UUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiSBTxT1dqAL5PfQAAsT X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CS5S023837 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 3 +++ docs/schemas/networkcommon.rng | 2 +- src/conf/network_conf.h | 12 ------------ 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 4d23c8f..1747fc2 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -290,6 +290,9 @@ + diff --git a/docs/schemas/networkcommon.rng b/docs/schemas/networkcommon.rng index ad3f590..35bcbd8 100644 --- a/docs/schemas/networkcommon.rng +++ b/docs/schemas/networkcommon.rng @@ -193,7 +193,7 @@ =20 - + 0 65535 diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 4e6cf72..25a6991 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -104,18 +104,6 @@ struct _virNetworkDHCPHostDef { virSocketAddr ip; }; =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; -}; - typedef struct _virNetworkDNSHostDef virNetworkDNSHostDef; typedef virNetworkDNSHostDef *virNetworkDNSHostDefPtr; struct _virNetworkDNSHostDef { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120387; cv=none; d=zohomail.com; s=zohoarc; b=WUOIcwhjzrUUkgtlYRYzlaZqtO+m74+bgReRt0kQZvjllm0C+vOWsQze6gCQoA5C/f3bSlCwz9Tbm+YsNtTcZA1Du/APVOdydxmhzbIWzuqEfXYwZfxMSyT5nBN97c1nfJKT6gyXc5uGZkEDfiyL+Qxt2xhB7lco30JrAYWTL9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120387; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=gnbciHwUwFXgp3URszFKE1dNQNVCMIF6d3WGP3IAOvA=; b=AQMP9HrUxTy4vjnT/KmAsHc+b/CLH1A7L3sGKDuy4A/V3ykEhrZShyMXjdUuoplUykqZoOVpEK8EjlCaChb1Oi9sxYJv+/cVkHFXriMuNM2ffBVYhLABJi3hs3+ILD/Mz0YvvbXPlYjJB41VnGCHlz1PisBTNIYP98QzuPtVxVk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120387912782.6908541791494; Wed, 25 Mar 2020 00:13:07 -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-478-xDzH3qNbPbqvp0z2f4Yo_g-1; Wed, 25 Mar 2020 03:13:04 -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 0E564107ACC4; Wed, 25 Mar 2020 07:12:59 +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 D3C861001F43; Wed, 25 Mar 2020 07:12: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 7C1F918089D0; Wed, 25 Mar 2020 07:12: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 02P7CSTL023846 for ; Wed, 25 Mar 2020 03:12:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6B23E2166B32; Wed, 25 Mar 2020 07:12:28 +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 66C742166B2C for ; Wed, 25 Mar 2020 07:12:28 +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 523418007AC for ; Wed, 25 Mar 2020 07:12:28 +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-316-mutKtQifMiSymtK_cj7LzQ-1; Wed, 25 Mar 2020 03:12:25 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S13; Wed, 25 Mar 2020 15:12:20 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120386; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=gnbciHwUwFXgp3URszFKE1dNQNVCMIF6d3WGP3IAOvA=; b=CeppDL20IPdcH1Jk5KZ2y9S85I2yE52GWzsGPKGNgEfRf35n0dD1LEduOOrVd4src/a8A6 WmAZcqQh8+AvicxZRQKPTMix4ypwY/HHQ40cEEN5qvg494qXQ3IQiOeTolLqzDETTntHn8 ZXj5jBB83Ht9Lx2wE1A5tgBSC2vye68= X-MC-Unique: xDzH3qNbPbqvp0z2f4Yo_g-1 X-MC-Unique: mutKtQifMiSymtK_cj7LzQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 11/29] conf: Replace virNetworkDNSHostDef(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:51 +0800 Message-Id: <20200325071209.20841-12-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S13 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4idOwiDUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbicRTxT1lZvBphtwAAsr X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CSTL023846 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 4 ++++ src/conf/network_conf.h | 9 --------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 1747fc2..c83a796 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -322,6 +322,10 @@ + diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 25a6991..d4d3c01 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -104,15 +104,6 @@ struct _virNetworkDHCPHostDef { virSocketAddr ip; }; =20 -typedef struct _virNetworkDNSHostDef virNetworkDNSHostDef; -typedef virNetworkDNSHostDef *virNetworkDNSHostDefPtr; -struct _virNetworkDNSHostDef { - virSocketAddr ip; - size_t nnames; - char **names; -}; - - typedef struct _virNetworkDNSForwarder virNetworkDNSForwarder; typedef virNetworkDNSForwarder *virNetworkDNSForwarderPtr; struct _virNetworkDNSForwarder { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120402; cv=none; d=zohomail.com; s=zohoarc; b=IHeUkaOwY1mmRipGtm9BTnVLaLJj7CN4bOLWPHihcdeWYZxMr5YMkCAxbWZEaDwxfgyi9wlA4cOBhy64Cpauf5lpj4l9hrvZmd05QVVx1hhplkin6anWVmjTZBpudjHmS+XK2azxHGQuuW8t4MSJXH0OnSzc/6Ln/bxu+iVErPU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120402; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=ldG12NfCfzqVPdNgGir75WPVx38Rv6hfWasm0VQDCw4=; b=c2mD6AM1RU6hLJfnc0PF9JysRtDGPKD7YpYoiCD8WnD2WHfqEODKZzgMS7E//Su1LWM+jtQlmp8g6d1ZcIihj+8absqYNK+ejaEijKiPB7HWp8TwN/8x0m2AbWid63FK1w66sKrvrKSrOPDwBDVGWAOOKgGTFa6tpE5OKyF3P6M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120402296109.27009111902873; Wed, 25 Mar 2020 00:13: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-474-4M5Y391POLyzoyxeNGA7mQ-1; Wed, 25 Mar 2020 03:13:17 -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 85F09108592F; Wed, 25 Mar 2020 07:13: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 5805DA0A92; Wed, 25 Mar 2020 07:13: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 BA667863B9; Wed, 25 Mar 2020 07:13: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 02P7CTlO023868 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9B35B2037E57; Wed, 25 Mar 2020 07:12:29 +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 969502037E45 for ; Wed, 25 Mar 2020 07:12:28 +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 1A6D4185A78E for ; Wed, 25 Mar 2020 07:12:28 +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-275-p45gZpPYOHGQZhUI5skfOA-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S14; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120401; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ldG12NfCfzqVPdNgGir75WPVx38Rv6hfWasm0VQDCw4=; b=C79oxSMnN9fCpRMiWdF10EKGZsUlHg5iO2p23NhrrGMwskCJswHPqSQ+AfSuz0cs0wtqT+ rrl0+RlC0u5HGqqLQE249tLpNNJw5wRlH/zOYjk1T8WKqp89zpaWr0OjQjq79q8FSaxdVR g0CLLnAXzs6dT9z7e6yDn8ZHyK+kcTQ= X-MC-Unique: 4M5Y391POLyzoyxeNGA7mQ-1 X-MC-Unique: p45gZpPYOHGQZhUI5skfOA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 12/29] conf: Replace virNetworkDNSForwarder(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:52 +0800 Message-Id: <20200325071209.20841-13-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S14 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4iQeOhDUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiTRXxT1dqAN0iHwAAs7 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CTlO023868 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 4 ++++ src/conf/network_conf.h | 7 ------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index c83a796..0034c4f 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -270,6 +270,10 @@ + diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index d4d3c01..1f96999 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -104,13 +104,6 @@ struct _virNetworkDHCPHostDef { virSocketAddr ip; }; =20 -typedef struct _virNetworkDNSForwarder virNetworkDNSForwarder; -typedef virNetworkDNSForwarder *virNetworkDNSForwarderPtr; -struct _virNetworkDNSForwarder { - virSocketAddr addr; - char *domain; -}; - typedef struct _virNetworkDNSDef virNetworkDNSDef; typedef virNetworkDNSDef *virNetworkDNSDefPtr; struct _virNetworkDNSDef { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120426; cv=none; d=zohomail.com; s=zohoarc; b=irQ9U66OahDbXqma0y3Qbz/4zvEY7qEYK2J3ir45tkvZ22SSSolfCxR0mj8I6ZWY6qI4tfC2fUqW7OLeb28E91HggE2aQXoX2bTptBubtJTyNOe4CHj9BqRYxHU7DzC/dwq5wcSgfggMZcdP0robyh/9ZZMicpTZBIj764wQEnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120426; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=j8APz1ZWMXWYeHQFcRXLiJqBP8LGZyvzbSUjy1iWJIU=; b=esXHJ0SkNIXycoDy3XTf/iRZbWZUZoa3ave1MGBP/emJ8Z+X+Ib3m6z/axPZLKqNF1R9YqNf49WWZD7bwdbaCTS7Z7KCH3ouxrnoX7u1vRPmsHWDMZEWbOKYI26qDVkkx6ZDTStaMFKr9yA2cBxx+uNXq26V+yv1igSmZtFsKMc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 158512042606752.21118970285863; Wed, 25 Mar 2020 00:13:46 -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-185-JzinR7gIMOmL_y6tMyfSmA-1; Wed, 25 Mar 2020 03:13:42 -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 0C01F801A1C; Wed, 25 Mar 2020 07:13:37 +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 D6FA28D576; Wed, 25 Mar 2020 07:13:36 +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 851068A03E; Wed, 25 Mar 2020 07:13:36 +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 02P7CUBh023909 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5F78510F1C10; Wed, 25 Mar 2020 07:12:30 +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 58F3610F1C06 for ; Wed, 25 Mar 2020 07:12:28 +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 5D4028007CB for ; Wed, 25 Mar 2020 07:12:28 +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-412-n80oNN6HP7SfivJ6J-bDog-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S15; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120424; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=j8APz1ZWMXWYeHQFcRXLiJqBP8LGZyvzbSUjy1iWJIU=; b=TwQnlxlm9Yt3zvaHQWyMzM7cIus/+gKhcJ2cwvTb5C3giXT2omWqu3AWIWVbQyiKVidVOO GYue75pcFSTgsvtQVR9VihyAY/igv4SPmej12lmhykUdpeyJ3KWQ0NmcnUFfVRTJn0ALsg ej5/Ljhy6yyJZBVCFYFzuBk9HA8SkA8= X-MC-Unique: JzinR7gIMOmL_y6tMyfSmA-1 X-MC-Unique: n80oNN6HP7SfivJ6J-bDog-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 13/29] conf: Replace virNetworkDNSDef(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:53 +0800 Message-Id: <20200325071209.20841-14-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S15 X-Coremail-Antispam: 1Uf129KBjvJXoWxAw48Wr45uw1xZry7tr47Jwb_yoWrJrW5p3 ZxXF15JrW8WF1jgrW7Zw4rKFnxuFykXa45Gr97u342v3y8tryxCr1xCFyxZFs8Wr1Yyr43 A3WFqrn8Jw48JaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zEqjgrUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiTBXxT1dqAGQzywAAsG X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUBh023909 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 3 +++ src/conf/network_conf.c | 12 ++++++------ src/conf/network_conf.h | 15 --------------- src/network/bridge_driver.c | 2 +- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 0034c4f..6127dae 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -257,6 +257,9 @@ + diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 819b645..84b4887 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -194,8 +194,8 @@ static void virNetworkDNSDefClear(virNetworkDNSDefPtr def) { if (def->forwarders) { - while (def->nfwds) - virNetworkDNSForwarderClear(&def->forwarders[--def->nfwds]); + while (def->nforwarders) + virNetworkDNSForwarderClear(&def->forwarders[--def->nforwarder= s]); VIR_FREE(def->forwarders); } if (def->txts) { @@ -931,7 +931,7 @@ virNetworkDNSDefParseXML(const char *networkName, goto cleanup; } VIR_FREE(addr); - def->nfwds++; + def->nforwarders++; } } =20 @@ -2156,7 +2156,7 @@ virNetworkDNSDefFormat(virBufferPtr buf, { size_t i, j; =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 @@ -2183,7 +2183,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; } @@ -2191,7 +2191,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++) { =20 virBufferAddLit(buf, "forwarders[i].domain) { diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 1f96999..db0119d 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -104,21 +104,6 @@ struct _virNetworkDHCPHostDef { virSocketAddr ip; }; =20 -typedef struct _virNetworkDNSDef virNetworkDNSDef; -typedef virNetworkDNSDef *virNetworkDNSDefPtr; -struct _virNetworkDNSDef { - int enable; /* enum virTristateBool */ - int forwardPlainNames; /* enum virTristateBool */ - size_t ntxts; - virNetworkDNSTxtDefPtr txts; - size_t nhosts; - virNetworkDNSHostDefPtr hosts; - size_t nsrvs; - virNetworkDNSSrvDefPtr srvs; - size_t nfwds; - virNetworkDNSForwarderPtr forwarders; -}; - typedef struct _virNetworkIPDef virNetworkIPDef; typedef virNetworkIPDef *virNetworkIPDefPtr; struct _virNetworkIPDef { diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index f060992..3cccbe5 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -1112,7 +1112,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 Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120444; cv=none; d=zohomail.com; s=zohoarc; b=XocCyVDj63GDHppy6cPKV3aiauMtMZmWHXFRFoq21EzwmvK7pDVjFzuqwIsnS9mjiQNSUVL2jZycCLlkzern5MFMhBxjCTGv4dzE8zCBrviDKgZaCXo/PQtb0trkTgYjPgZKBwkVUyBizo9ETrl9xPNTcP4rzv1Ye+DwAISC/Vs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120444; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=9B03+nrWCdJkBfeqVCl07qkWu4UxkZDUYa8nITsMWmw=; b=cNTdWaCMkptcwcw1SlM1NIMq+dc7uXz+/7XxDrkfjvFmestwwF0mRSdkXf1gt5DJDEcgZZlLCyrkTIVBOscWMuV+CuuADa0Rfl7qnv4ZmEbnA28yc3TcqvT1zd5rsVVcl7tOo6PE0sCDnT684gsjOyjd3rKMUlqzYUHfIRjvGLk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120444594800.3054743108828; Wed, 25 Mar 2020 00:14: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-100-uHgVrL93PNicSnBEwIV9oA-1; Wed, 25 Mar 2020 03:13:17 -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 ABDB8189F76F; Wed, 25 Mar 2020 07:13:11 +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 75291A7FE; Wed, 25 Mar 2020 07:13: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 21BD4863A8; Wed, 25 Mar 2020 07:13:11 +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 02P7CUe9023914 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 75686108BE9; Wed, 25 Mar 2020 07:12:30 +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 6E47B108BDB for ; Wed, 25 Mar 2020 07:12:29 +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 79CFC185A790 for ; Wed, 25 Mar 2020 07:12: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-319-aJNmlG4WMGOh3sY1hUOD4g-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S16; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120443; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=9B03+nrWCdJkBfeqVCl07qkWu4UxkZDUYa8nITsMWmw=; b=VCRHXB6LmetxWdgphEHtoUOnnsqohYjwzoLzoLPUQkPVJim+GGh+2BCIlBQHPT8461/Uy4 NWgHLq+v3PHz+wsDSBvNZvGqsWKTgILKwHW3G7vVrMOB24Rsx0IwM+LkD7T7gh2E+nyPdq k3IESmNMU2jSJ/qsztMKiAZ5ZmDTfFk= X-MC-Unique: uHgVrL93PNicSnBEwIV9oA-1 X-MC-Unique: aJNmlG4WMGOh3sY1hUOD4g-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 14/29] conf: Replace virNetworkDNSDefClear(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:54 +0800 Message-Id: <20200325071209.20841-15-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S16 X-Coremail-Antispam: 1Uf129KBjvJXoWxXrWDZryrAw45Aw1kXrWrKrg_yoWrXFykpF n5XF13Aw4xWFy5KFWUArZ5GwsI9r1vqF4UKryfC3sYv348Zr1xCayxG34IvFZ8WryFvr43 A34aq3y3JF4rur7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pEzBTPUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbigxXxT1sfnFFyHAAAsP X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUe9023914 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 13 ++++++--- src/conf/Makefile.inc.am | 2 ++ src/conf/network_conf.c | 60 ---------------------------------------- 3 files changed, 11 insertions(+), 64 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 6127dae..919464d 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -258,7 +258,8 @@ and other features in the element --> @@ -275,7 +276,8 @@ @@ -289,7 +291,8 @@ @@ -298,7 +301,8 @@ @@ -331,6 +335,7 @@ diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am index 1fbde38..b9ab535 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 84b4887..060d0e3 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -156,66 +156,6 @@ virNetworkIPDefClear(virNetworkIPDefPtr def) } =20 =20 -static void -virNetworkDNSTxtDefClear(virNetworkDNSTxtDefPtr def) -{ - VIR_FREE(def->name); - VIR_FREE(def->value); -} - - -static void -virNetworkDNSHostDefClear(virNetworkDNSHostDefPtr def) -{ - while (def->nnames) - VIR_FREE(def->names[--def->nnames]); - VIR_FREE(def->names); -} - - -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) -{ - VIR_FREE(def->domain); -} - - -static void -virNetworkDNSDefClear(virNetworkDNSDefPtr def) -{ - if (def->forwarders) { - while (def->nforwarders) - virNetworkDNSForwarderClear(&def->forwarders[--def->nforwarder= s]); - 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) { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120365; cv=none; d=zohomail.com; s=zohoarc; b=ZX8NL7Nk2F46bUrFAd0FXIu9kq+/vB0yjG7dVlR4L7oDUt1IhCEh7YCAHosKPFE5MLqIKP/xmK8QPxL12VPyBYu8ZyaZTlUK/iPDDYp0aubxV6HREh8NpLLkesPzYcs6NTrmprqVLf50njuTO/WcTQ2kAHtH5F9neZH5J2qwB1I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120365; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=zK4XXf0/eFFTCelc2He/o8IOTcbRaR7RQFDMbac5mN4=; b=Z19kdQF4Jb+x9mhAcRRjky8MMQKB5toXSHjSky6mKkb6XRfaXB6fshpEPOtSsbMSRygDkShrX1JVgnwHyOLX2TwrNiX+zshqejR/9+d00ZD4H+vdOv1mkv2hcQeN7ODpLKD52yQzcLnJUE0wVe7+kh2CcuV4frs6vg88G5O3EN0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120365664854.1404259042414; Wed, 25 Mar 2020 00:12:45 -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-201-7YYDDF1YOVmE2uqhi0h4kQ-1; Wed, 25 Mar 2020 03:12:42 -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 AD5A31005512; Wed, 25 Mar 2020 07:12:36 +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 39F0260BE0; Wed, 25 Mar 2020 07:12:36 +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 E199418095FF; Wed, 25 Mar 2020 07:12:29 +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 02P7CSvp023836 for ; Wed, 25 Mar 2020 03:12:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 10EEF2166B2C; Wed, 25 Mar 2020 07:12:28 +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 0D3322166B2B for ; Wed, 25 Mar 2020 07:12:28 +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 E6E6E8001E4 for ; Wed, 25 Mar 2020 07:12:27 +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-484-dyxISAkmNuiTUv0yFeOLXw-1; Wed, 25 Mar 2020 03:12:24 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S17; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120364; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=zK4XXf0/eFFTCelc2He/o8IOTcbRaR7RQFDMbac5mN4=; b=IMEzd5TUleO2tFckkrWmiilSpLHsfucbXb3KMD6rl5A5+XSZhC7egfXy3AMmYUI/O+h1dp YeOnEaMVnob9COqsomPjSBqIMAjMe84kQyT4Z1FGgdO0GNxi5+LELf/q0uecgP07Q49Ira qmtsR+CKXTURiZW52SPssgxqWgP1oMA= X-MC-Unique: 7YYDDF1YOVmE2uqhi0h4kQ-1 X-MC-Unique: dyxISAkmNuiTUv0yFeOLXw-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 15/29] conf: Extract error-checking code from virNetworkDNSHostDefParseXML Date: Wed, 25 Mar 2020 15:11:55 +0800 Message-Id: <20200325071209.20841-16-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S17 X-Coremail-Antispam: 1Uf129KBjvJXoWxWF17CFy8Wr13KFy8AFy8uFg_yoW5uw4kpF s3Ja90yrs7Wr1ay39rKr1FkwnxWrykJ345K34fuw1DZFyfWw18Grs3WryxWas8Gry5Zr45 AF43A398Kr4UA3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pifMa7UUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbigxXxT1sfnFFyHAABsO X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CSvp023836 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 8 ++++++ src/conf/network_conf.c | 58 +++++++++++++++++++++++++++------------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 919464d..ee4487e 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -336,6 +336,14 @@ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 060d0e3..d9f2252 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -560,6 +560,40 @@ virNetworkDHCPDefParseXML(const char *networkName, } =20 =20 +static int +virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, + virNetworkDNSHostDefPtr def, + const char *networkName, + bool partialOkay, + const char *ipStr, + int nHostnameNodes G_GNUC_UNUSED) +{ + if (!ipStr && !partialOkay) { + virReportError(VIR_ERR_XML_DETAIL, + _("Missing IP address in network '%s' DNS HOST reco= rd"), + networkName); + return -1; + } + + if (def->nnames =3D=3D 0 && !partialOkay) { + virReportError(VIR_ERR_XML_DETAIL, + _("Missing hostname in network '%s' DNS HOST record= "), + networkName); + return -1; + } + + 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); + return -1; + } + + return 0; +} + + +/* virNetworkDNSHostDefParseXML will be replaced by generated namesake */ static int virNetworkDNSHostDefParseXML(const char *networkName, xmlNodePtr node, @@ -569,13 +603,7 @@ virNetworkDNSHostDefParseXML(const char *networkName, xmlNodePtr cur; char *ip; =20 - if (!(ip =3D virXMLPropString(node, "ip")) && !partialOkay) { - virReportError(VIR_ERR_XML_DETAIL, - _("Missing IP address in network '%s' DNS HOST reco= rd"), - networkName); - goto error; - } - + 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"), @@ -583,7 +611,6 @@ virNetworkDNSHostDefParseXML(const char *networkName, VIR_FREE(ip); goto error; } - VIR_FREE(ip); =20 cur =3D node->children; while (cur !=3D NULL) { @@ -606,23 +633,16 @@ 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 (virNetworkDNSHostDefParseXMLPost(node, def, networkName, + partialOkay, ip, def->nnames) < 0) goto error; - } =20 + VIR_FREE(ip); return 0; =20 error: + VIR_FREE(ip); virNetworkDNSHostDefClear(def); return -1; } --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120419; cv=none; d=zohomail.com; s=zohoarc; b=b4JkmVy+s/8tC+oxri0qrTfVoVPPonJDAC4YfngN4V12eFg1Q9IP8clMi+Ud6ulGwoOjF3JnU5fP7t54Brg2FAUy222lEHCCxdElWz8MUjzYM+HORimcVa/4Cc5QCRmje6FWImEdqkWr/ELiELiU8WepsSmWcbBod+Up5Po9GwU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120419; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=D5ny6/GROGgbq7zGaWZ0M7DxhiTcy2fzcZnNAPTqgsM=; b=cXr6xzzEziQHOzC1vDXGg9zTf0AGzXE4OwcBo1dHf7lb9ZxLW3pXX4uZQpFE/anrnOLtSNUKYovetWwnOTGNXV6GAcWfGvjgd/5QX0RUla9D3b6CjP9Lecd6BVmjoLfWJFWoWKcb4c53kF9evxAHjUumHo61WSwEy/svp0v+V2g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120419455576.4707906679097; Wed, 25 Mar 2020 00:13:39 -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-203-hJg8HlnbPme7OeOqJnJPEQ-1; Wed, 25 Mar 2020 03:13:34 -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 CF6341085927; Wed, 25 Mar 2020 07:13:28 +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 9F168A7FF; Wed, 25 Mar 2020 07:13:28 +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 3F27F18034FA; Wed, 25 Mar 2020 07:13:28 +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 02P7CVZv023972 for ; Wed, 25 Mar 2020 03:12:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id F36222166B2B; Wed, 25 Mar 2020 07:12:30 +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 EF71D2166B2A for ; Wed, 25 Mar 2020 07:12:28 +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 3A8418FF662 for ; Wed, 25 Mar 2020 07:12:28 +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-394--UsabqULNS2LGc2MQY_N2g-1; Wed, 25 Mar 2020 03:12:25 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S18; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120418; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=D5ny6/GROGgbq7zGaWZ0M7DxhiTcy2fzcZnNAPTqgsM=; b=Ea5j6h+BNPysA12fal4rWO4bG/gseIWv99dgodb6xEvAsSzpM9F+qXfGocwt4SIG22LnUv uXKTSzx7Vv+zyusgCkkpVIjefpH2bQlwf/gbm+TBJbLpv3NSzMS90q43foHs+SO3kTiHfP FrcwFWqwAGT7R4wd5Ts25y5wZp1oXnU= X-MC-Unique: hJg8HlnbPme7OeOqJnJPEQ-1 X-MC-Unique: -UsabqULNS2LGc2MQY_N2g-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 16/29] conf: Replace virNetworkDNSHostDefParseXML(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:56 +0800 Message-Id: <20200325071209.20841-17-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S18 X-Coremail-Antispam: 1Uf129KBjvJXoWxXF1Utw18urW8Aw4xKF48WFg_yoWrCF4rpF sxJFsFyw48WF1akFW7AryrCrnxWrykXa15K34fuw1fZrW8Xr1xGrn7WF1xWFZ8GrWF9r45 AF4aqa98Gr4UJFUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pEX_TUUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiiRXxT1tVgvnlkgAAsg X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CVZv023972 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 7 +++-- po/POTFILES.in | 1 + src/conf/network_conf.c | 66 +++++----------------------------------- 3 files changed, 13 insertions(+), 61 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index ee4487e..c902f7e 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -337,14 +337,17 @@ "structure": {"output": "src/conf/network_conf"}, "clearfunc": {"output": "src/conf/network_conf"}, "parsefunc": { - "args.noctxt": true, + "output": "src/conf/network_conf", "args.instname": true, "post": true, "args": [ {"name": "partialOkay", "type": "Bool"} ] }, - "members": [{"id": "hostname", "name": "name"}] + "members": [ + {"id": "ip", "opt": true}, + {"id": "hostname", "name": "name", "opt": true} + ] } --> diff --git a/po/POTFILES.in b/po/POTFILES.in index 2358b01..5e2985a 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@/rng2c/directive.py diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index d9f2252..6f0722a 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -560,9 +560,10 @@ virNetworkDHCPDefParseXML(const char *networkName, } =20 =20 -static int +int virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, virNetworkDNSHostDefPtr def, + xmlXPathContextPtr ctxt G_GNUC_UNUSED, const char *networkName, bool partialOkay, const char *ipStr, @@ -593,61 +594,6 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, } =20 =20 -/* virNetworkDNSHostDefParseXML will be replaced by generated namesake */ -static int -virNetworkDNSHostDefParseXML(const char *networkName, - xmlNodePtr node, - virNetworkDNSHostDefPtr def, - bool partialOkay) -{ - xmlNodePtr cur; - char *ip; - - 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; - } - - 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 (virNetworkDNSHostDefParseXMLPost(node, def, networkName, - partialOkay, ip, def->nnames) < 0) - goto error; - - VIR_FREE(ip); - return 0; - - error: - VIR_FREE(ip); - 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 "." @@ -907,8 +853,10 @@ 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], + ctxt, + networkName, false) < 0) { goto cleanup; } def->nhosts++; @@ -3373,7 +3321,7 @@ virNetworkDefUpdateDNSHost(virNetworkDefPtr def, if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "host") < 0) goto cleanup; =20 - if (virNetworkDNSHostDefParseXML(def->name, ctxt->node, &host, !isAdd)= < 0) + if (virNetworkDNSHostDefParseXML(ctxt->node, &host, ctxt, def->name, != isAdd) < 0) goto cleanup; =20 for (i =3D 0; i < dns->nhosts; i++) { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120391; cv=none; d=zohomail.com; s=zohoarc; b=A1EtFLHjIuucuYmZ4iZmGQwDv0m9WyaER4rqBOiBYhg4kTynZvjsdhtDLw7e3sT2SxrMZ8LAYNFy679zQfJG76j0JsnJpYEXPAr+VCPeemoR2TnblZsOo3NH+KDbbtnzKlc36vsWRq5f4r3U27rc645rsayV0EiyQcG5+z1siq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120391; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=+I8R2zG8CEQo/Mwf9rYKfuKSNuqyAeG6SfZAYnVHgvg=; b=bJBKGiJbgALQj8vOFUKAWHWqM9ISd/oTdhqs7bLwNEUOhWsKygSdOfxZrD0t/lniVkGVbFtzDEfFqRoAybFrM5GbWhqw4jRZPn56IgTsb4rfpRDi2sfu8FO9VAuM9ptP/UN/lsBm/FPLOe4eiNR0xnApJK7WY9r0RCAPvxHxaYo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120391380198.1805942929126; Wed, 25 Mar 2020 00:13: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-240-c4pnjzadN8WnxXPRZfiMkw-1; Wed, 25 Mar 2020 03:13:02 -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 E1F04DB62; Wed, 25 Mar 2020 07:12:56 +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 B348691D61; Wed, 25 Mar 2020 07:12: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 5E3D986380; Wed, 25 Mar 2020 07:12:56 +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 02P7CU6a023911 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6130210F1C11; Wed, 25 Mar 2020 07:12:30 +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 5AD2A10F1C09 for ; Wed, 25 Mar 2020 07:12:28 +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 87FF9185A793 for ; Wed, 25 Mar 2020 07:12:28 +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-167-CZ805q-vOhCAV0Zar9AIDA-1; Wed, 25 Mar 2020 03:12:25 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S19; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120390; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+I8R2zG8CEQo/Mwf9rYKfuKSNuqyAeG6SfZAYnVHgvg=; b=a9ibJ07bGWHZDQKgM+Cv1gUgQtc8dW0VQVui5iQc6l/r2YCXbY5AcOzjfEPTQ0DRZpbdRR pH1izVu1FfWuDuMxeM/9pNdjiOCYOCfNiOD/ylyU+zG8FKJK8rKYaFDDVnyU6JxN0Pjf4z M/d6eSfUxMPAHNgYbHkANTtv0uLScE0= X-MC-Unique: c4pnjzadN8WnxXPRZfiMkw-1 X-MC-Unique: CZ805q-vOhCAV0Zar9AIDA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 17/29] conf: Extract error-checking code from virNetworkDNSSrvDefParseXML Date: Wed, 25 Mar 2020 15:11:57 +0800 Message-Id: <20200325071209.20841-18-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S19 X-Coremail-Antispam: 1Uf129KBjvJXoW3AFWUtry7KrWUWFyxGrWfKrg_yoWfKw1DpF n3tFZ3Grs5Wr47KrWjkF1rG345Wryktr15C3s7W3WUurW5Xw1xGFWxXF90g3y3Gr95tr4a yFy3Zw4Ygrs5Z3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pEzBTPUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiTRXxT1dqAN0iJAAAsA X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CU6a023911 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 13 ++- src/conf/network_conf.c | 218 +++++++++++++++++++++++++-------------- 2 files changed, 152 insertions(+), 79 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index c902f7e..14561d9 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -302,7 +302,18 @@ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 6f0722a..3913cb4 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -214,6 +214,123 @@ virNetworkDefFree(virNetworkDefPtr def) } =20 =20 +/* 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 "." + * as a field separator in the SRV record, there appears to be no way + * to escape it in, and the protocols/services that use "." in the + * name are obscure and unlikely to be used anyway. + */ +#define PROTOCOL_CHARS \ + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" \ + "-+/" + +#define SERVICE_CHARS \ + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" \ + "_-+/*" + +static int +virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, + virNetworkDNSSrvDefPtr def, + xmlXPathContextPtr ctxt G_GNUC_UNUSED, + const char *networkName, + bool partialOkay, + const char *serviceStr G_GNUC_UNUSED, + const char *protocolStr G_GNUC_UNUSED, + const char *domainStr G_GNUC_UNUSED, + const char *targetStr G_GNUC_UNUSED, + bool has_port, + bool has_priority, + bool has_weight) +{ + if (!def->service && !partialOkay) { + virReportError(VIR_ERR_XML_DETAIL, + _("missing required service attribute in DNS SRV re= cord " + "of network '%s'"), networkName); + return -1; + } + if (def->service) { + if (strlen(def->service) > DNS_RECORD_LENGTH_SRV) { + virReportError(VIR_ERR_XML_DETAIL, + _("service attribute '%s' in network '%s' is to= o long, " + "limit is %d bytes"), + def->service, networkName, DNS_RECORD_LENGTH_SR= V); + return -1; + } + if (strspn(def->service, SERVICE_CHARS) < strlen(def->service)) { + virReportError(VIR_ERR_XML_DETAIL, + _("invalid character in service attribute '%s' " + "in DNS SRV record of network '%s'"), + def->service, networkName); + return -1; + } + } + + if (!def->protocol && !partialOkay) { + virReportError(VIR_ERR_XML_DETAIL, + _("missing required protocol attribute " + "in DNS SRV record '%s' of network '%s'"), + def->service, networkName); + return -1; + } + if (def->protocol && + strspn(def->protocol, PROTOCOL_CHARS) < strlen(def->protocol)) { + virReportError(VIR_ERR_XML_DETAIL, + _("invalid character in protocol attribute '%s' " + "in DNS SRV record of network '%s'"), + def->protocol, networkName); + return -1; + } + + if (has_port && !def->target) { + virReportError(VIR_ERR_XML_DETAIL, + _("DNS SRV port attribute not permitted without " + "target for service '%s' in network '%s'"), + def->service, networkName); + return -1; + } + if (has_port && (def->port < 1 || def->port > 65535)) { + virReportError(VIR_ERR_XML_DETAIL, + _("invalid DNS SRV port attribute " + "for service '%s' in network '%s'"), + def->service, networkName); + return -1; + } + + if (has_priority && !def->target) { + virReportError(VIR_ERR_XML_DETAIL, + _("DNS SRV priority attribute not permitted without= " + "target for service '%s' in network '%s'"), + def->service, networkName); + return -1; + } + if (has_priority && def->priority > 65535) { + virReportError(VIR_ERR_XML_DETAIL, + _("Invalid DNS SRV priority attribute " + "for service '%s' in network '%s'"), + def->service, networkName); + return -1; + } + + if (has_weight && !def->target) { + virReportError(VIR_ERR_XML_DETAIL, + _("DNS SRV weight attribute not permitted without " + "target for service '%s' in network '%s'"), + def->service, networkName); + return -1; + } + if (has_weight && def->weight > 65535) { + virReportError(VIR_ERR_XML_DETAIL, + _("invalid DNS SRV weight attribute " + "for service '%s' in network '%s'"), + def->service, networkName); + return -1; + } + + return 0; +} + + /* * virNetworkDefCopy: * @def: NetworkDef to copy @@ -594,21 +711,7 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, } =20 =20 -/* 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 "." - * as a field separator in the SRV record, there appears to be no way - * to escape it in, and the protocols/services that use "." in the - * name are obscure and unlikely to be used anyway. - */ -#define PROTOCOL_CHARS \ - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" \ - "-+/" - -#define SERVICE_CHARS \ - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" \ - "_-+/*" - +/* virNetworkDNSSrvDefParseXML will be replaced by generated namesake */ static int virNetworkDNSSrvDefParseXML(const char *networkName, xmlNodePtr node, @@ -617,62 +720,23 @@ virNetworkDNSSrvDefParseXML(const char *networkName, bool partialOkay) { int ret; + bool has_port =3D false; + bool has_priority =3D false; + bool has_weight =3D false; xmlNodePtr save_ctxt =3D ctxt->node; - ctxt->node =3D node; =20 - if (!(def->service =3D virXMLPropString(node, "service")) && !partialO= kay) { - 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, - _("service attribute '%s' in network '%s' is to= o long, " - "limit is %d bytes"), - def->service, networkName, DNS_RECORD_LENGTH_SR= V); - goto error; - } - if (strspn(def->service, SERVICE_CHARS) < strlen(def->service)) { - virReportError(VIR_ERR_XML_DETAIL, - _("invalid character in service attribute '%s' " - "in DNS SRV record of network '%s'"), - def->service, networkName); - goto error; - } - } - - if (!(def->protocol =3D virXMLPropString(node, "protocol")) && !partia= lOkay) { - 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, - _("invalid character in protocol attribute '%s' " - "in DNS SRV record of network '%s'"), - def->protocol, networkName); - goto error; - } + def->service =3D virXMLPropString(node, "service"); + def->protocol =3D virXMLPropString(node, "protocol"); =20 /* Following attributes are optional */ def->domain =3D virXMLPropString(node, "domain"); def->target =3D virXMLPropString(node, "target"); =20 ret =3D virXPathUInt("string(./@port)", ctxt, &def->port); - if (ret >=3D 0 && !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 (ret >=3D 0) { + has_port =3D true; + } else if (ret =3D=3D -2) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV port attribute " "for service '%s' in network '%s'"), @@ -681,14 +745,9 @@ virNetworkDNSSrvDefParseXML(const char *networkName, } =20 ret =3D virXPathUInt("string(./@priority)", ctxt, &def->priority); - if (ret >=3D 0 && !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 (ret >=3D 0) { + has_priority =3D true; + } else if (ret =3D=3D -2) { virReportError(VIR_ERR_XML_DETAIL, _("Invalid DNS SRV priority attribute " "for service '%s' in network '%s'"), @@ -697,14 +756,9 @@ virNetworkDNSSrvDefParseXML(const char *networkName, } =20 ret =3D virXPathUInt("string(./@weight)", ctxt, &def->weight); - if (ret >=3D 0 && !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 (ret >=3D 0) { + has_weight =3D true; + } else if (ret =3D=3D -2) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV weight attribute " "for service '%s' in network '%s'"), @@ -712,6 +766,14 @@ virNetworkDNSSrvDefParseXML(const char *networkName, goto error; } =20 + if (virNetworkDNSSrvDefParseXMLPost(node, def, ctxt, + networkName, partialOkay, + def->service, def->protocol, + def->domain, def->target, + has_port, has_priority, + has_weight) < 0) + goto error; + ctxt->node =3D save_ctxt; return 0; =20 --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120437; cv=none; d=zohomail.com; s=zohoarc; b=gpOkuEoLEXjZwugNgV1gokSO87Bx1/9nr1q1+AcoYKZfNmaRTVtLXudb1cmEPo8p+ZTgP7pW58xL21C+RkudYmDls5ER+zlCklY08pGKlNK6XajVBzC0/2++f3kdfSN+ZjdLqA0xAFGNxewwuIZ7ZZ/XtZ5M8R4hJ8z4K/PLNP0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120437; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=ZJCpRJlckAswcLQAoN0w3YLH8y1NO/+R7LXhaTVr5wI=; b=ExhP4gcYAV8O24ZJfFTEHP86v6Tzscohq6rnYAs6ytztoPQhohYR8s0oasr2XAVI505MW8IKeUnK+QipDdG/U8C5kpsqIehbR+xZ50cfsONz2BHjRQKw6xHdN9ZBCgrE8u7hmh/M70pqlt19y/UYXo4ptsmNZUAG6N8/uvxnpkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120437527237.03286205923814; Wed, 25 Mar 2020 00:13:57 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-186-omZak8moMxOccsTo-4mfTQ-1; Wed, 25 Mar 2020 03:13:53 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9E8988010CA; Wed, 25 Mar 2020 07:13:48 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 79B94A0A7A; Wed, 25 Mar 2020 07:13:48 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 306FB8A049; Wed, 25 Mar 2020 07:13:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 02P7CZB5024009 for ; Wed, 25 Mar 2020 03:12:35 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2BED12166B2A; Wed, 25 Mar 2020 07:12:35 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 27F0F2166B2C for ; Wed, 25 Mar 2020 07:12:32 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C4F1C101A55E for ; Wed, 25 Mar 2020 07:12:32 +0000 (UTC) Received: from mail-m24147.qiye.163.com (mail-m24147.qiye.163.com [220.194.24.147]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-235-u6o_-9YVOM-pOUrF_SseIA-1; Wed, 25 Mar 2020 03:12:28 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S20; Wed, 25 Mar 2020 15:12:21 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120436; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ZJCpRJlckAswcLQAoN0w3YLH8y1NO/+R7LXhaTVr5wI=; b=h5cxNWcgp6Fum4+tim8XEEUSF/O1xz0kPN9a0jVdBZLCiITxZcyuDJfwygIGAFNdocsND5 tNww7NteubHDrmWdmaKeQrdAdvYbMtwXTcUxStrg9sqpuAtc94GAnUxlwHLtPzdiYn0apM USQz1aiZb+elb5kqSUNCHmWwBH30Hzs= X-MC-Unique: omZak8moMxOccsTo-4mfTQ-1 X-MC-Unique: u6o_-9YVOM-pOUrF_SseIA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 18/29] conf: Replace virNetworkDNSSrvDefParseXML(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:11:58 +0800 Message-Id: <20200325071209.20841-19-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S20 X-Coremail-Antispam: 1Uf129KBjvJXoW3JFy7KFy5ZF48CFW3AF4rGrg_yoWxGr15pF s5Jas7GrW8GF43KrWjkrn5Cw15ur1kJr45C3s3ua4Ik345Xwn3GF4xZFyvg398Cr90yr4a yFyavws8Wr4DXaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pEX_TUUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbibBXxT1lZvBKfSwAAs9 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CZB5024009 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 100 ++++++--------------------------------- 2 files changed, 15 insertions(+), 86 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 14561d9..4caea02 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -304,6 +304,7 @@ "structure": {"output": "src/conf/network_conf"}, "clearfunc": {"output": "src/conf/network_conf"}, "parsefunc": { + "output": "src/conf/network_conf", "post": true, "args.instname": true, "args": [ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 3913cb4..0469f03 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -229,7 +229,7 @@ virNetworkDefFree(virNetworkDefPtr def) "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" \ "_-+/*" =20 -static int +int virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, virNetworkDNSSrvDefPtr def, xmlXPathContextPtr ctxt G_GNUC_UNUSED, @@ -239,9 +239,9 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_GN= UC_UNUSED, const char *protocolStr G_GNUC_UNUSED, const char *domainStr G_GNUC_UNUSED, const char *targetStr G_GNUC_UNUSED, - bool has_port, - bool has_priority, - bool has_weight) + const char *portStr, + const char *priorityStr, + const char *weightStr) { if (!def->service && !partialOkay) { virReportError(VIR_ERR_XML_DETAIL, @@ -282,14 +282,14 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, return -1; } =20 - if (has_port && !def->target) { + if (portStr && !def->target) { virReportError(VIR_ERR_XML_DETAIL, _("DNS SRV port attribute not permitted without " "target for service '%s' in network '%s'"), def->service, networkName); return -1; } - if (has_port && (def->port < 1 || def->port > 65535)) { + if (portStr && (def->port < 1 || def->port > 65535)) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV port attribute " "for service '%s' in network '%s'"), @@ -297,14 +297,14 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, return -1; } =20 - if (has_priority && !def->target) { + if (priorityStr && !def->target) { virReportError(VIR_ERR_XML_DETAIL, _("DNS SRV priority attribute not permitted without= " "target for service '%s' in network '%s'"), def->service, networkName); return -1; } - if (has_priority && def->priority > 65535) { + if (priorityStr && def->priority > 65535) { virReportError(VIR_ERR_XML_DETAIL, _("Invalid DNS SRV priority attribute " "for service '%s' in network '%s'"), @@ -312,14 +312,14 @@ virNetworkDNSSrvDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, return -1; } =20 - if (has_weight && !def->target) { + if (weightStr && !def->target) { virReportError(VIR_ERR_XML_DETAIL, _("DNS SRV weight attribute not permitted without " "target for service '%s' in network '%s'"), def->service, networkName); return -1; } - if (has_weight && def->weight > 65535) { + if (weightStr && def->weight > 65535) { virReportError(VIR_ERR_XML_DETAIL, _("invalid DNS SRV weight attribute " "for service '%s' in network '%s'"), @@ -711,79 +711,6 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, } =20 =20 -/* virNetworkDNSSrvDefParseXML will be replaced by generated namesake */ -static int -virNetworkDNSSrvDefParseXML(const char *networkName, - xmlNodePtr node, - xmlXPathContextPtr ctxt, - virNetworkDNSSrvDefPtr def, - bool partialOkay) -{ - int ret; - bool has_port =3D false; - bool has_priority =3D false; - bool has_weight =3D false; - xmlNodePtr save_ctxt =3D ctxt->node; - ctxt->node =3D node; - - def->service =3D virXMLPropString(node, "service"); - def->protocol =3D virXMLPropString(node, "protocol"); - - /* Following attributes are optional */ - def->domain =3D virXMLPropString(node, "domain"); - def->target =3D virXMLPropString(node, "target"); - - ret =3D virXPathUInt("string(./@port)", ctxt, &def->port); - if (ret >=3D 0) { - has_port =3D true; - } else if (ret =3D=3D -2) { - virReportError(VIR_ERR_XML_DETAIL, - _("invalid DNS SRV port attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - - ret =3D virXPathUInt("string(./@priority)", ctxt, &def->priority); - if (ret >=3D 0) { - has_priority =3D true; - } else if (ret =3D=3D -2) { - virReportError(VIR_ERR_XML_DETAIL, - _("Invalid DNS SRV priority attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - - ret =3D virXPathUInt("string(./@weight)", ctxt, &def->weight); - if (ret >=3D 0) { - has_weight =3D true; - } else if (ret =3D=3D -2) { - virReportError(VIR_ERR_XML_DETAIL, - _("invalid DNS SRV weight attribute " - "for service '%s' in network '%s'"), - def->service, networkName); - goto error; - } - - if (virNetworkDNSSrvDefParseXMLPost(node, def, ctxt, - networkName, partialOkay, - def->service, def->protocol, - def->domain, def->target, - has_port, has_priority, - has_weight) < 0) - goto error; - - ctxt->node =3D save_ctxt; - return 0; - - error: - virNetworkDNSSrvDefClear(def); - ctxt->node =3D save_ctxt; - return -1; -} - - static int virNetworkDNSTxtDefParseXML(const char *networkName, xmlNodePtr node, @@ -937,8 +864,9 @@ virNetworkDNSDefParseXML(const char *networkName, goto cleanup; =20 for (i =3D 0; i < nsrvs; i++) { - if (virNetworkDNSSrvDefParseXML(networkName, srvNodes[i], ctxt, - &def->srvs[def->nsrvs], false)= < 0) { + if (virNetworkDNSSrvDefParseXML(srvNodes[i], + &def->srvs[def->nsrvs], ctxt, + networkName, false) < 0) { goto cleanup; } def->nsrvs++; @@ -3478,7 +3406,7 @@ virNetworkDefUpdateDNSSrv(virNetworkDefPtr def, if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "srv") < 0) goto cleanup; =20 - if (virNetworkDNSSrvDefParseXML(def->name, ctxt->node, ctxt, &srv, !is= Add) < 0) + if (virNetworkDNSSrvDefParseXML(ctxt->node, &srv, ctxt, def->name, !is= Add) < 0) goto cleanup; =20 for (i =3D 0; i < dns->nsrvs; i++) { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120385; cv=none; d=zohomail.com; s=zohoarc; b=D52GZr5Co5r9sILZvsBI90FpywaF54PREzh/CPQ/GZhmA0LP9yNOsW9sqP6iCgEP8XZRT73spsLJhOrQkHsFNjZr1oIDFK3pogITVYryb0rUxZXEp141YtaRl85bbii39QlToD9ECWaRR8sKjLcRgy4N1kUreSKuTLTa9CaMpio= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120385; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=RVpu8z3VJl7SHzAqtz5EXVdmmh/KwP92Ay2UFABZ7P8=; b=WuA6RXE42mn0T0XFZAche8v7/zDvfda2sgS0DjUGtywr7YqT7woM5p3f0yM1w12Z2YRCxLNqfBVGRTPGsXrsf8ikmgEaLv2oYXZBIDFqw9ThVxlp1mD4Kr1cc3JCJ9Yjl3Q7NHvX1c20+pmhPjRF1LqXzLpr/oGf/2S5VibpymQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 15851203852551015.8380705924271; Wed, 25 Mar 2020 00:13:05 -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-9-bnsbWonuPpi1oF6kg6DL4A-1; Wed, 25 Mar 2020 03:13:02 -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 816391005512; Wed, 25 Mar 2020 07:12:56 +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 4EB291001F43; Wed, 25 Mar 2020 07:12: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 0B8AD944C4; Wed, 25 Mar 2020 07:12: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 02P7CSTN023846 for ; Wed, 25 Mar 2020 03:12:29 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1E4152166B2B; Wed, 25 Mar 2020 07:12:29 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1A1542166B2A for ; Wed, 25 Mar 2020 07:12:29 +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 E6DBB101A55D for ; Wed, 25 Mar 2020 07:12:28 +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-193-dnJrCpxkMTCnA-D6BKB_hw-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S21; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120384; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=RVpu8z3VJl7SHzAqtz5EXVdmmh/KwP92Ay2UFABZ7P8=; b=A/yoXhwJJd6t/+Q3xCVBzDoss646sR9kzwVC3aypZ9X2VZltlDxYd3UhyY11hpL8Cipn0z 2ZumULvdzRdcnseOeUPtCoGWFh2qemTZu+ZvfTVggIb4th/wWP246UBgfPAeLnb2CnuvLO tJbCTSHASdH1elJQ9c7KsXwilHyPeX8= X-MC-Unique: bnsbWonuPpi1oF6kg6DL4A-1 X-MC-Unique: dnJrCpxkMTCnA-D6BKB_hw-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 19/29] conf: Extract error-checking code from virNetworkDNSTxtDefParseXML Date: Wed, 25 Mar 2020 15:11:59 +0800 Message-Id: <20200325071209.20841-20-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S21 X-Coremail-Antispam: 1Uf129KBjvJXoWxZryUZr4ftF17ZFy7ZF1fZwb_yoW5tr17pF s5XF9xtr4kWr13trWxKas5Gwn0ga4kGw1YkryfuwnrZrWrWw1xJF4fXr4xuw4DWr9Yqr43 AF45X398Gw4UXaUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pio7KDUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiShbxT1dqANzw4QAAsS X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CSTN023846 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 13 ++++++++- src/conf/network_conf.c | 60 +++++++++++++++++++++++++++------------- 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 4caea02..b0f4a64 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -292,7 +292,18 @@ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 0469f03..f83799f 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -488,6 +488,41 @@ virSocketAddrRangeParseXML(const char *networkName, } =20 =20 +static int +virNetworkDNSTxtDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, + virNetworkDNSTxtDefPtr def, + const char *networkName, + bool partialOkay, + const char *nameStr G_GNUC_UNUSED, + const char *valueStr G_GNUC_UNUSED) +{ + const char *bad =3D " ,"; + + 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); + return -1; + } + + 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); + return -1; + } + + if (!(def->name || def->value)) { + virReportError(VIR_ERR_XML_DETAIL, + _("Missing required name or value " + "in DNS TXT record of network %s"), networkName); + return -1; + } + + return 0; +} + + static int virNetworkDHCPHostDefParseXML(const char *networkName, virNetworkIPDefPtr def, @@ -717,33 +752,20 @@ virNetworkDNSTxtDefParseXML(const char *networkName, virNetworkDNSTxtDefPtr def, bool partialOkay) { - const char *bad =3D " ,"; - 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)= { - virReportError(VIR_ERR_XML_DETAIL, - _("missing required value attribute in DNS TXT reco= rd " - "named '%s' of network %s"), def->name, networkNa= me); - goto error; - } =20 - if (!(def->name || def->value)) { - virReportError(VIR_ERR_XML_DETAIL, - _("Missing required name or value " - "in DNS TXT record of network %s"), networkName); + def->value =3D virXMLPropString(node, "value"); + + if (virNetworkDNSTxtDefParseXMLPost(node, def, + networkName, partialOkay, + def->name, def->value) < 0) goto error; - } + return 0; =20 error: --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120408; cv=none; d=zohomail.com; s=zohoarc; b=UnjYg9HN1ua7I6QcbJWX0oCkMagmaFMtfSl07dz/NXL35l1S3lA35KnzYsmjNHywVvnl9nrxOuGgG5HPio47QnoGmFTv8NNw2mdUs0Ei1DEdeNoe1WROt7FXqdweVGCE2+5BqA+1kOjt7/kI0hPM8myz0EWvgeNIikHu5dijCtw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120408; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=iO0k4tX9OAKhHo7HZvYpF+UUnq2FzEo5rkKZridqxdU=; b=X5I/GA4Ybn2mSf5Q41/rgEfgdi+4GiRvDliWtHSZkT3qHlzIMDtnMAJ212DkKeT01dTIJBxDO/RakRDhUYLjWkp54NHGlmYrEgpTlqZO2v63sFlAd6Ty3a2R4DvtWrWEqvT1pcHoIKWMP/Z3KKqPFWk7VzH2OhfYXbQuJPynsMY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120408930144.92894819033359; Wed, 25 Mar 2020 00:13: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-181-0VlfZ9uAMDKhAniZMLcfRA-1; Wed, 25 Mar 2020 03:13:23 -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 99568801A01; Wed, 25 Mar 2020 07:13: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 5E34610002A7; Wed, 25 Mar 2020 07:13:16 +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 03FDB87010; Wed, 25 Mar 2020 07:13:16 +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 02P7CUR6023905 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5B9C910F1C0A; Wed, 25 Mar 2020 07:12:30 +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 541E610F1CD4 for ; Wed, 25 Mar 2020 07:12:29 +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 009B88F7834 for ; Wed, 25 Mar 2020 07:12: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-62-_711TvVTM9CO4TuJi3bt7Q-1; Wed, 25 Mar 2020 03:12:25 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S22; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120405; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=iO0k4tX9OAKhHo7HZvYpF+UUnq2FzEo5rkKZridqxdU=; b=JozwnK51K/YLgXZM8KsYM6T1Xmm2/dwCLK4ZIDC7eakWhLlpeLx85HQhjbLjVYQZMWA9Et Ww+KjO+tQWHWl3qFTxAsMnTDd1nJoz14rjEDBLSLq4+/s1SZTW3ztTV/wfdM0VfFDhp/Oc uMJ8HZWRUQn4IBTYwSx/L46p6Cb46j4= X-MC-Unique: 0VlfZ9uAMDKhAniZMLcfRA-1 X-MC-Unique: _711TvVTM9CO4TuJi3bt7Q-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 20/29] conf: Replace virNetworkDNSTxtDefParseXML(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:12:00 +0800 Message-Id: <20200325071209.20841-21-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S22 X-Coremail-Antispam: 1Uf129KBjvJXoWxCFW8CFy3GrWfZF4fJw15twb_yoW5GFWxpF s5tFnFyw4rWFnxKrW7trn5Cwn8u3W8Jw4Ykryfuwn7AryfuryxJr4fXr1xu398GryFyr43 AFyaqrZ8Gr4UAF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zipnQUUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiiBbxT1tVgrMYdQAAsy X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUR6023905 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 37 +++++-------------------------------- 2 files changed, 6 insertions(+), 32 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index b0f4a64..07fbd5b 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -294,6 +294,7 @@ "structure": {"output": "src/conf/network_conf"}, "clearfunc": {"output": "src/conf/network_conf"}, "parsefunc": { + "output": "src/conf/network_conf", "post": true, "args.noctxt": true, "args.instname": true, diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index f83799f..5180508 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -488,7 +488,7 @@ virSocketAddrRangeParseXML(const char *networkName, } =20 =20 -static int +int virNetworkDNSTxtDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, virNetworkDNSTxtDefPtr def, const char *networkName, @@ -746,34 +746,6 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode 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 (virNetworkDNSTxtDefParseXMLPost(node, def, - networkName, partialOkay, - def->name, def->value) < 0) - goto error; - - return 0; - - error: - virNetworkDNSTxtDefClear(def); - return -1; -} - - static int virNetworkDNSDefParseXML(const char *networkName, xmlNodePtr node, @@ -907,8 +879,9 @@ 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->ntxts], + networkName, false) < 0) { goto cleanup; } def->ntxts++; @@ -3513,7 +3486,7 @@ virNetworkDefUpdateDNSTxt(virNetworkDefPtr def, if (virNetworkDefUpdateCheckElementName(def, ctxt->node, "txt") < 0) goto cleanup; =20 - if (virNetworkDNSTxtDefParseXML(def->name, ctxt->node, &txt, !isAdd) <= 0) + if (virNetworkDNSTxtDefParseXML(ctxt->node, &txt, def->name, !isAdd) <= 0) goto cleanup; =20 for (foundIdx =3D 0; foundIdx < dns->ntxts; foundIdx++) { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120393; cv=none; d=zohomail.com; s=zohoarc; b=V3CfXv+nHA4bbRiqNJMPEvb2JmzNwZmVIXeoDLhhF34r6NtppgeUCNpRtwJVU/OHEQtIkdE7RPvLSizO5y+yE4UfmqJa6qpi6rBBACQ1A2XRyzVGIBrc7MtbXaRfM3djWEoE/Q5ZyJPKjI19W/fmAB1yTH/P7gWpDSowNEtGdLM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120393; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=yMQaR3fPKN+MjsENqzmZY0E4NVZ/m0T9dOHlQjYeubs=; b=T6IfXbYO0wG9371MYmPV8WwxwzkrgLboruGh864LlZIjmCRbDZGBvR8XBC5MLB9AJMhLtEhD6REOZdONvtOjv8537glrOA5RkyGOFUbOC5y3vw+uR3qXjk1aTHw19GI+NYAqWNLuivxBNCNef85XMAtZUrPomAcyLEpc3vHfe4I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120393582269.4984092539697; Wed, 25 Mar 2020 00:13:13 -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-79-DGUfzj9nOqCgZcfTquu-5A-1; Wed, 25 Mar 2020 03:13:10 -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 ED57D1007272; Wed, 25 Mar 2020 07:13: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 73CD55D9C5; Wed, 25 Mar 2020 07:13: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 E69361808878; Wed, 25 Mar 2020 07:13: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 02P7CS8l023848 for ; Wed, 25 Mar 2020 03:12:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9EB542166B2B; Wed, 25 Mar 2020 07:12:28 +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 9AF872166B2A for ; Wed, 25 Mar 2020 07:12:28 +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 810BB8F7838 for ; Wed, 25 Mar 2020 07:12:28 +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-279-4wSgIx15NOe4VxO0LNFILQ-1; Wed, 25 Mar 2020 03:12:25 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S23; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120392; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=yMQaR3fPKN+MjsENqzmZY0E4NVZ/m0T9dOHlQjYeubs=; b=UiHGvOKNMjvYwSfLM1S86L0Hdbr5eptzBRKR3FpZdo2LgyFbQvd+pSJ57+sCBbXFAesx/n tBbvb0lb1uLeXSDLh6aAkw20Ks1qAmtN0RKX7PyNy06U8m9LF5sBKfxUSXFdpgYeVNGBBb jIi729p+VhAtWslpKft55hJIovOY0xw= X-MC-Unique: DGUfzj9nOqCgZcfTquu-5A-1 X-MC-Unique: 4wSgIx15NOe4VxO0LNFILQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 21/29] conf: Add virNetworkDNSForwarderParseXML and virNetworkDNSForwarderParseXMLPost Date: Wed, 25 Mar 2020 15:12:01 +0800 Message-Id: <20200325071209.20841-22-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S23 X-Coremail-Antispam: 1Uf129KBjvJXoWxCF48Aw18Gw13tr1kZF1DZFb_yoW5ur17pF s8tF90yw4rWF13KrW2vw4ruFn8WF1kJa15K34fZw1jv348WryUCr4fWr17ua4UWrWrtrsx AFWaqrZ8Gw4UZF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zi89NxUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiQBbxT1bdHEApOgAAss X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CS8l023848 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 7 +++- src/conf/network_conf.c | 69 +++++++++++++++++++++++++++++----------- 2 files changed, 57 insertions(+), 19 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 07fbd5b..20878a8 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -277,7 +277,12 @@ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 5180508..91f08e9 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -214,6 +214,53 @@ virNetworkDefFree(virNetworkDefPtr def) } =20 =20 +static int +virNetworkDNSForwarderParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, + virNetworkDNSForwarderPtr def, + const char *networkName G_GNUC_UNUSED, + const char *addrStr, + const char *domainStr G_GNUC_UNUSED) +{ + if (!(addrStr || def->domain)) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Invalid forwarder element, must contain " + "at least one of addr or domain")); + return -1; + } + + return 0; +} + + +/* virNetworkDNSForwarderParseXML will be replaced by generated namesake */ +static int +virNetworkDNSForwarderParseXML(xmlNodePtr curnode, + virNetworkDNSForwarderPtr def, + const char *networkName) +{ + char *addr =3D virXMLPropString(curnode, "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); + return -1; + } + + def->domain =3D virXMLPropString(curnode, "domain"); + + if (virNetworkDNSForwarderParseXMLPost(curnode, def, networkName, + addr, def->domain) < 0) { + VIR_FREE(addr); + return -1; + } + + VIR_FREE(addr); + return 0; +} + + /* 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 "." @@ -801,25 +848,11 @@ 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) < 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->nforwarders++; } } --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120433; cv=none; d=zohomail.com; s=zohoarc; b=MusbFFXZzAEv+N8zrUgszz7kwK7SVSgaYJ19Jbp5cZl9WRmAKnUt6fA5+n0cZy9FL2Bs4BbOuQlCo8T1aT+qqIJVe+SDzfdK4NA3vuNIztSaIb1GzIW7CSQNsLlges4n/xxAmLvfEVTnWhKLkOMyln7e3hPCiq97DbgdthUUp8I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120433; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=tVTeFYYoxVkml+MZgL2CClFBvngChK2AmXmflo5vwoo=; b=BFrS8Qx/WESLH6dLdgOwA8y4P46+8GFwmm1saubV89jZFeGJ8t68GyZ2qdFTkI1nNoWxPvvNfgoQS/QCcOhaIjehtdFJ0/pfGn8CN2I69XceeYnTolJw59afIxennNRQLknqNlEJSL4m9J5TKH0P2GAfc7SZpsomiW1TlaMmNv4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120433281427.7879813087119; Wed, 25 Mar 2020 00:13: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-249-FXgRNqSGP6K2G9h-yNV2lw-1; Wed, 25 Mar 2020 03:13:50 -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 3BC93801A04; Wed, 25 Mar 2020 07:13: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 13D095C57C; Wed, 25 Mar 2020 07:13: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 C494E8A045; Wed, 25 Mar 2020 07:13:43 +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 02P7CXpZ023997 for ; Wed, 25 Mar 2020 03:12:33 -0400 Received: by smtp.corp.redhat.com (Postfix) id 807A72037E43; Wed, 25 Mar 2020 07:12:33 +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 7CADF2026D67 for ; Wed, 25 Mar 2020 07:12:30 +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 7FDF38FF663 for ; Wed, 25 Mar 2020 07:12:30 +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-243-sp8Gy0MzMGOoAkzyaM3wIA-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S24; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120432; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=tVTeFYYoxVkml+MZgL2CClFBvngChK2AmXmflo5vwoo=; b=N/lHHloDDJLAwo2TXbkIQEIBDEV8VvYd4nr8D+Zdr6du6U1XHRY8fnwa/I7DL1oFpuDxOb Z3EXGUoSXhFkhUzgTcN2DZUg9/Wj6t50/NF7OgHjreWtG1n/1LeH2Mv+neZO0WBt4RavVx NBwClCwGDVPL1/dbNFwIV45ZVw0dIjI= X-MC-Unique: FXgRNqSGP6K2G9h-yNV2lw-1 X-MC-Unique: sp8Gy0MzMGOoAkzyaM3wIA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 22/29] conf: Replace virNetworkDNSForwarderParseXML(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:12:02 +0800 Message-Id: <20200325071209.20841-23-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S24 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4RHmhrUUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbihRbxT1sfnDpM7wAAss X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CXpZ023997 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 31 +------------------------------ 2 files changed, 2 insertions(+), 30 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 20878a8..702018b 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -279,6 +279,7 @@ "structure": {"output": "src/conf/network_conf"}, "clearfunc": {"output": "src/conf/network_conf"}, "parsefunc": { + "output": "src/conf/network_conf", "post": true, "args.noctxt": true, "args.instname": true diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 91f08e9..3a43e40 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -214,7 +214,7 @@ virNetworkDefFree(virNetworkDefPtr def) } =20 =20 -static int +int virNetworkDNSForwarderParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, virNetworkDNSForwarderPtr def, const char *networkName G_GNUC_UNUSED, @@ -232,35 +232,6 @@ virNetworkDNSForwarderParseXMLPost(xmlNodePtr curnode = G_GNUC_UNUSED, } =20 =20 -/* virNetworkDNSForwarderParseXML will be replaced by generated namesake */ -static int -virNetworkDNSForwarderParseXML(xmlNodePtr curnode, - virNetworkDNSForwarderPtr def, - const char *networkName) -{ - char *addr =3D virXMLPropString(curnode, "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); - return -1; - } - - def->domain =3D virXMLPropString(curnode, "domain"); - - if (virNetworkDNSForwarderParseXMLPost(curnode, def, networkName, - addr, def->domain) < 0) { - VIR_FREE(addr); - return -1; - } - - VIR_FREE(addr); - return 0; -} - - /* 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 "." --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120402; cv=none; d=zohomail.com; s=zohoarc; b=kQ1uUME1SBcsJ1Z+A1ubttv7Ru7uBOdudVxC1HnifL54y6nMBI0QEKfYUbMXRyVS+6Jf6Ojfb49z0PutN/DLXsw+VmJj7coXsc0iJEdF4zXlhDuE8km0SMtlNniMffeifH+Bx/ynA/V4p3wqtXXbPqsWZ+dYlQ3HNYN6roCcWkE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120402; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=vYVnF9K5nvBmnLXl+aHjWWFyow4bkCcE+0t5RLKJUH4=; b=IcmDC5o3qqzctycfcjbZeVaJQUnOD+zUlb1Z5u8MjCP/sONPRFmW5dDhuuvbFi2OGKjotSoKJZ1S/qRxoTRzmb2BDKTKoind30a2mYdk4Sx3QT4drob6bNis77v+OzJtjcTjDIl/A/5Nrl3QD1DkeXGVcN00oUJZPjhRrosMv5Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120402819358.3115404778175; Wed, 25 Mar 2020 00:13: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-321-U-zbCV4rOuWQ8Ts0SmZxXA-1; Wed, 25 Mar 2020 03:13:18 -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 04CAC8010F2; Wed, 25 Mar 2020 07:13:13 +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 CCCB29B934; Wed, 25 Mar 2020 07:13: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 809B8863BE; Wed, 25 Mar 2020 07:13:12 +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 02P7CTjx023869 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9BFD32037E58; Wed, 25 Mar 2020 07:12:29 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9689F2037E43 for ; Wed, 25 Mar 2020 07:12:29 +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 09666101A55F for ; Wed, 25 Mar 2020 07:12: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-266-Rq6ududSMs2xEdUHgm6JNA-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S25; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120401; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=vYVnF9K5nvBmnLXl+aHjWWFyow4bkCcE+0t5RLKJUH4=; b=iMSLJJQqahzXTIS8ByKliPzwBS17PVwd/xCdKqDfHmkDRBzqw1p0gEYGW1pWqIqgvRfd30 GkhvUns6i8cY3uK8K8QAEvP0lCuPZrvIa3+x9xk4CSy3rb5gNVWcVLFPBlXDHnD5IdIT11 2+3c2CiShlFjj3sN5XZOnFWYZZoBUKQ= X-MC-Unique: U-zbCV4rOuWQ8Ts0SmZxXA-1 X-MC-Unique: Rq6ududSMs2xEdUHgm6JNA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 23/29] conf: Extract error-checking code from virNetworkDNSDefParseXML Date: Wed, 25 Mar 2020 15:12:03 +0800 Message-Id: <20200325071209.20841-24-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S25 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4RJb18UUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbihRbxT1sfnDpM7wABst X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CTjx023869 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 2 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 6 +++++- src/conf/network_conf.c | 33 +++++++++++++++++++++++++++------ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 702018b..884cd64 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -259,7 +259,11 @@ diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 3a43e40..d231fea 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -764,6 +764,30 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_= GNUC_UNUSED, } =20 =20 +static int +virNetworkDNSDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, + virNetworkDNSDefPtr def, + xmlXPathContextPtr ctxt G_GNUC_UNUSED, + const char *networkName, + const char *enableStr G_GNUC_UNUSED, + const char *forwardPlainNamesStr G_GNUC_UNUSE= D, + int nForwarderNodes, + int nTxtNodes, + int nSrvNodes, + int nHostNodes) +{ + if (def->enable =3D=3D VIR_TRISTATE_BOOL_NO && + (nForwarderNodes || nHostNodes || nSrvNodes || nTxtNodes)) { + virReportError(VIR_ERR_XML_ERROR, + _("Extra data in disabled network '%s'"), + networkName); + return -1; + } + + return 0; +} + + static int virNetworkDNSDefParseXML(const char *networkName, xmlNodePtr node, @@ -892,13 +916,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 (virNetworkDNSDefParseXMLPost(node, def, ctxt, networkName, enable, + forwardPlainNames, nfwds, ntxts, + nsrvs, nhosts) < 0) goto cleanup; - } =20 ret =3D 0; cleanup: --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120423; cv=none; d=zohomail.com; s=zohoarc; b=fmP+fDnH5lmuJb534a0QTzKrGL4rtKGYKUTfHL5pQz6i6gUd7p469q8iZKTYH8D9BHtpg8JJXBK0c5iNkC2Z5ftMvpKAdKBUyTC/BE67/6CC9I0/T4A1LBFbC9OYsREGceMPBMpKhoM2nGmyfb5HSATU1beVOsHaEjPmPh3Ce3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120423; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=oK2zqNZv5O7FGcfcQbiISD1en/mO56K6DrCY51JzUko=; b=G06l1cpsjkPQiBvtv18xNzznb2u5UAs9XuNyVKx0mqR/BoK9LtZJTo6GIt6Etm7AIykzaNzbxDVzkjCgrs81p90jITq91qg2kf7nNXf6ptRTPJE8Ue7sOYA5y00pVSNnurbZgj8ybmysp0IfzkwvWMqK/QfSjWau8hXno1tOScI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120423008235.3293763035041; Wed, 25 Mar 2020 00:13:43 -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-110-YLUBsK7lPGSN6EFmAYkG8w-1; Wed, 25 Mar 2020 03:13:39 -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 E461F108442A; Wed, 25 Mar 2020 07:13:32 +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 BCCA792D39; Wed, 25 Mar 2020 07:13:32 +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 746C18A038; Wed, 25 Mar 2020 07:13:32 +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 02P7CUdA023897 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id A65762026D67; Wed, 25 Mar 2020 07:12:29 +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 A2FA82037E4F for ; Wed, 25 Mar 2020 07:12: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 89EA58007D9 for ; Wed, 25 Mar 2020 07:12: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-100-_YRaZt-2OBCa9xqsj3P1ZQ-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S26; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120421; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=oK2zqNZv5O7FGcfcQbiISD1en/mO56K6DrCY51JzUko=; b=T5pWtAGZhz6aLpwajQUWGK0i72dMTJI3fJM05JcNINctN3ctXUWLh+2cNuPpBUtyW1q2MA HwG3tPnnSq555kOYpP4OfPcJN4bsocJV5mYIOejdgH6QVDC/v9tgR/Xtpjrl+yQel8gvJU fpxQRy8+MQKfL7NDNnmQVY3wnFs+R4I= X-MC-Unique: YLUBsK7lPGSN6EFmAYkG8w-1 X-MC-Unique: _YRaZt-2OBCa9xqsj3P1ZQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 24/29] conf: Replace virNetworkDNSDefParseXML(hardcoded) with namesake(generated) Date: Wed, 25 Mar 2020 15:12:04 +0800 Message-Id: <20200325071209.20841-25-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S26 X-Coremail-Antispam: 1Uf129KBjvJXoWxCFW5tw4UXF48Ww1UKF43GFg_yoW7Gry7pF nYqFyDKFWrWFnag3yI9w10krn8uF18GF45KryxuwnrZ34UGw13Gr1fWryxXrWDWrZ5XrsI y3WagFn8Gw4UGF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zujqWDUUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiRxbxT1dqAIIyagAAsI X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUdA023897 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 150 +-------------------------------------- 2 files changed, 3 insertions(+), 148 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 884cd64..7084248 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -261,6 +261,7 @@ "structure": {"output": "src/conf/network_conf"}, "clearfunc": {"output": "src/conf/network_conf"}, "parsefunc": { + "output": "src/conf/network_conf", "post": true, "args.instname": true } diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index d231fea..905c01f 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -764,7 +764,7 @@ virNetworkDNSHostDefParseXMLPost(xmlNodePtr curnode G_G= NUC_UNUSED, } =20 =20 -static int +int virNetworkDNSDefParseXMLPost(xmlNodePtr curnode G_GNUC_UNUSED, virNetworkDNSDefPtr def, xmlXPathContextPtr ctxt G_GNUC_UNUSED, @@ -788,152 +788,6 @@ virNetworkDNSDefParseXMLPost(xmlNodePtr curnode G_GNU= C_UNUSED, } =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; - xmlNodePtr save =3D ctxt->node; - - 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) < 0) - goto cleanup; - - def->nforwarders++; - } - } - - 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], - ctxt, - networkName, false) < 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->nsrvs], ctxt, - networkName, false) < 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->ntxts], - networkName, false) < 0) { - goto cleanup; - } - def->ntxts++; - } - } - - if (virNetworkDNSDefParseXMLPost(node, def, ctxt, networkName, enable, - forwardPlainNames, nfwds, ntxts, - nsrvs, nhosts) < 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); - ctxt->node =3D save; - return ret; -} - - static int virNetworkIPDefParseXML(const char *networkName, xmlNodePtr node, @@ -1726,7 +1580,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, ctxt, def->name) < 0)= { goto error; } =20 --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120398; cv=none; d=zohomail.com; s=zohoarc; b=AKTTEE4J/Xi2o48EdZaOUAZMPk69TNZntg/B8QbMyJwxdQfNl0rtHNmUK5DQutp0TH6jdm6G+zs20sZ/A8OyYGwrraROCRIn5ijP4aim2HquBqB/mfCh75crfBaj0MUNS6j3UjNR91KuXowUdpP9EQ/V28Yp5UYoyy8xTkOv1w8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120398; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=bRfyvD91JUSR2PrhWlhkJX8BAAp9XGc3xT0iY9lQsnk=; b=aocOTV2HHqlnOKD6xoIBOpN0w08/o/zPGtPIO0lDH/rtbFzFBTo21f8ryHGFGCleEWtEvkg3SNhWGhgt6+z5s9PG/Ogdu5kT38IfEB3MoY9KrrzVK6LWdUVjkZftQl4c6wEoIRuXcgVq+8NilN+itIJNrSZxJ2+xa+BG2XFRYW8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120398209310.82973731386926; Wed, 25 Mar 2020 00:13:18 -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-446-44xTEAFKMT2zzuHznoy3wQ-1; Wed, 25 Mar 2020 03:13:13 -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 26291DB77; Wed, 25 Mar 2020 07:13:08 +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 EFED85D9C5; Wed, 25 Mar 2020 07:13:07 +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 A37C4180085D; Wed, 25 Mar 2020 07:13:07 +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 02P7CS8n023848 for ; Wed, 25 Mar 2020 03:12:29 -0400 Received: by smtp.corp.redhat.com (Postfix) id 36C712166B2C; Wed, 25 Mar 2020 07:12: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 332442166B2A for ; Wed, 25 Mar 2020 07:12:29 +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 1EDB2800298 for ; Wed, 25 Mar 2020 07:12: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-66-UZWjyBy6MOGdMiRmBcF9jA-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S27; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120397; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=bRfyvD91JUSR2PrhWlhkJX8BAAp9XGc3xT0iY9lQsnk=; b=do8m2j+7PtRAqWGynQAb6XaQZXv09N+clGUtujUMcVGF7dekEZZo6sEvha9KzQtZztZobV EOATISA99JACmCs3oOEqtIrA+zeD/o/f3F9FOsYDtqUYWO3zlEwlQC+Ca0QEG992iO68Gk Kq7LThsart9YJ+r6F8G3TAn0IAVbyiU= X-MC-Unique: 44xTEAFKMT2zzuHznoy3wQ-1 X-MC-Unique: UZWjyBy6MOGdMiRmBcF9jA-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 25/29] conf: Apply virNetworkDNSForwarderFormatBuf(generated) in virNetworkDNSDefFormat Date: Wed, 25 Mar 2020 15:12:05 +0800 Message-Id: <20200325071209.20841-26-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S27 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRBmh7UUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiRxbxT1dqAIIyagABsJ X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CS8n023848 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 4 ++++ src/conf/network_conf.c | 17 ++--------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 7084248..cd5be22 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -288,6 +288,10 @@ "post": true, "args.noctxt": true, "args.instname": true + }, + "formatfunc": { + "output": "src/conf/network_conf", + "order": ["domain", "addr"] } } --> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 905c01f..19444d6 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1964,22 +1964,9 @@ virNetworkDNSDefFormat(virBufferPtr buf, virBufferAdjustIndent(buf, 2); =20 for (i =3D 0; i < def->nforwarders; 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]) < 0) return -1; - - virBufferAsprintf(buf, " addr=3D'%s'", addr); - VIR_FREE(addr); - } - virBufferAddLit(buf, "/>\n"); } =20 for (i =3D 0; i < def->ntxts; i++) { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120410; cv=none; d=zohomail.com; s=zohoarc; b=frvbpUzo/HydoJD4HpD0pv+cpfsIqEpC7RBQP4Z4VpcSrlrZxWvKa6eWYR/FrB/kNk9vn/UEt7/i9ye/iAK8lGqWr/8Ag7DsQ+oQl4QwPTCFDk3zYV/JzstbZ3zSzeAiy9MaMDdqbtVmhc9PrXhMVGl9WKXgjvSEYJ2KdWjQvy0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120410; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=zO72f8ipPP+p3V6iEm7Itbb6oF45LwuaDKfiPYarYrU=; b=T3/QKPYsuhT5Ni7HQ+c+bgkaEgsqiYczIOINMRi8zOZG2+LXJenURP4NFT+XD9clP75DpjwP3t1aJQl1529oo4xZKCZUjEH6WOgXjyaPaBDI6IQ//+frofCvXpAr/0/KwfQa0GX7uDsLYwWxyaIT65PUMKz+R9N6bgs+Ab6+VcM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120410071861.4449551988816; Wed, 25 Mar 2020 00:13:30 -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-286-bMTTMW1PPaeldaoS74H6yg-1; Wed, 25 Mar 2020 03:13:26 -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 EE8CA1007273; Wed, 25 Mar 2020 07:13:20 +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 BDC22A7ED; Wed, 25 Mar 2020 07:13:20 +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 4602118034EC; Wed, 25 Mar 2020 07:13:20 +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 02P7CUSY023896 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id A2CF52037E4D; Wed, 25 Mar 2020 07:12: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 9F5A92026D67 for ; Wed, 25 Mar 2020 07:12:29 +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 7CC61800298 for ; Wed, 25 Mar 2020 07:12: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-419-mT-txWU1Pqu5Rj-Per6xwQ-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S28; Wed, 25 Mar 2020 15:12:22 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120408; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=zO72f8ipPP+p3V6iEm7Itbb6oF45LwuaDKfiPYarYrU=; b=J1zm4emFnxVm4brKTW7AMEWTfyS3qB8aPlmG+x62dPjvgrm9NOXyFzCSJE2sgUVBKDKC6l KG507AJgdpR6bpfkvWg2bsKNEj5xqB6/EkSr3dsk61rVxOErytggTHr+16IXJqb+dVoat+ M8R6gfrMVuEIGv3mmra0AHcwe0kU4vw= X-MC-Unique: bMTTMW1PPaeldaoS74H6yg-1 X-MC-Unique: mT-txWU1Pqu5Rj-Per6xwQ-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 26/29] conf: Apply virNetworkDNSTxtDefFormatBuf(generated) in virNetworkDNSDefFormat Date: Wed, 25 Mar 2020 15:12:06 +0800 Message-Id: <20200325071209.20841-27-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S28 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRBmh7UUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbicRfxT1lZvBphvQAAsi X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUSY023896 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index cd5be22..1d7b854 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -317,6 +317,7 @@ {"name": "partialOkay", "type": "Bool"} ] }, + "formatfunc": {"output": "src/conf/network_conf"}, "members": [ {"id": "value", "opt": true} ] diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 19444d6..b40ab4d 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1970,8 +1970,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]) < 0) + return -1; } =20 for (i =3D 0; i < def->nsrvs; i++) { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120431; cv=none; d=zohomail.com; s=zohoarc; b=TLX0s3CDvo3K3KnvL8qojRB6PokUviijmc+gX0BnGy8HD/BDpmRaT91ues1tkiP2MENXF8gl34Fixt01j0Q6PGkSkO9+YtHJCNKIfO9p9LMydM8jKf+sxJr9z4OfNJ+so/vNv8j8EfFr0a6L4KhtKXLqSjwU4iZtx6lumJfYlVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120431; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=c3XPfJYhkr0duLlirffSgJPFvxmkVhlG+TC6IE6m1D8=; b=XgdnAuJvL2MUU87/Bm4IO1hTiDfFadfmxusXIgiQtTAAK8FuJY/l2+sAehaN8bR53D8jFfoog+2MDGbzJU3O51vUdctu5DFKEHaUtXLVOITwKAr32MU5Z7IxlpNnnJjqNO4cFc8TMnVfHj+/3i8ZpKa4OhZmnQJXkkOurHCnfQQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120431476683.4722674799293; Wed, 25 Mar 2020 00:13:51 -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-101-hJYHG9-ZMwu4Ta8EYSU2JA-1; Wed, 25 Mar 2020 03:13:47 -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 EF30A189F769; Wed, 25 Mar 2020 07:13:40 +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 AF991953CF; Wed, 25 Mar 2020 07:13:40 +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 3AD68180350B; Wed, 25 Mar 2020 07:13:40 +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 02P7CU8r023915 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 75BCF108BC7; Wed, 25 Mar 2020 07:12:30 +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 6E866108BDC for ; Wed, 25 Mar 2020 07:12:30 +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 31CD080029B for ; Wed, 25 Mar 2020 07:12:30 +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-369-tqSNgfZUN7q90TUhgDv3dg-1; Wed, 25 Mar 2020 03:12:27 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S29; Wed, 25 Mar 2020 15:12:23 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120430; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=c3XPfJYhkr0duLlirffSgJPFvxmkVhlG+TC6IE6m1D8=; b=MobV575ihndLp7cRnmVpS/bf8YfO7kvUfXjxQVjsDfgO/TXScWcoUDCRF72foWhOs9UXYs wygDVakpZGEpJuwgldy6TgTLA/Zix1TYuWguqwr1GDQGAzVkSDt+fL8qPIOkGnV+SEAwrQ AeyGbhZm3yNDARxnuBl2m+sD++3auX0= X-MC-Unique: hJYHG9-ZMwu4Ta8EYSU2JA-1 X-MC-Unique: tqSNgfZUN7q90TUhgDv3dg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 27/29] conf: Apply virNetworkDNSSrvDefFormatBuf(generated) in virNetworkDNSDefFormat Date: Wed, 25 Mar 2020 15:12:07 +0800 Message-Id: <20200325071209.20841-28-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S29 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRBmh7UUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiSxfxT1dqAJv8KgAAsS X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CU8r023915 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 20 ++------------------ 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 1d7b854..b97510f 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -339,6 +339,7 @@ {"name": "partialOkay", "type": "Bool"} ] }, + "formatfunc": {"output": "src/conf/network_conf"}, "members": [ {"id": "service", "opt": true}, {"id": "protocol", "opt": true} diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index b40ab4d..1e8bfbc 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1975,24 +1975,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]) < 0) + return -1; } =20 if (def->nhosts) { --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) client-ip=63.128.21.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120419; cv=none; d=zohomail.com; s=zohoarc; b=nqZRDP2aEAe4AfuB0Mz/d6CIwnUj6UHl0FkbHJ/U2VYGjmLjC7SurQ9K1hYyoyhFa5VRKHwngCGhIP4vdzuQdktQvttw4c5tsKWSREMPY/iN4SOGYHmttgFiVDgW+z2mk6B3OfWe5qcx0FOBetvkS6haE0Kj2VZ27gr40u1xD/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120419; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=NhtgaiqStn4nc5HIPlUq5AjUPrOulOrcYi+6GzmlOig=; b=oDI9AatYnNJOjKN//6jaypT9PaNcH0wjQTMjPJlZdqVPOEkLLRJGlUAkVavrV5Uk8Feru4BfwYHY0jztkScvRy5IKk9nDGYta1oV6qSdP8hV+ge0FF4F9KskvS0VXfbwX8G2G8eXb/JsXqq+2t0Vf44Oe1OngsBpiqjYeuIAgSg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [63.128.21.74]) by mx.zohomail.com with SMTPS id 1585120419837871.7318652267629; Wed, 25 Mar 2020 00:13:39 -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-166-UWG-5ChdO6WuX4DTtDWqHw-1; Wed, 25 Mar 2020 03:13:35 -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 4D9688017DF; Wed, 25 Mar 2020 07:13:29 +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 2405DA7E3; Wed, 25 Mar 2020 07:13:29 +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 C5A5718034FD; Wed, 25 Mar 2020 07:13:28 +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 02P7CUgF023902 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 42F8A2037E4F; Wed, 25 Mar 2020 07:12:30 +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 3F6812037E43 for ; Wed, 25 Mar 2020 07:12:30 +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 2AE5D80029A for ; Wed, 25 Mar 2020 07:12:30 +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-298-7o-hm5LpMKWBMARe6ahmGg-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S30; Wed, 25 Mar 2020 15:12:23 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120418; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=NhtgaiqStn4nc5HIPlUq5AjUPrOulOrcYi+6GzmlOig=; b=UlzWrbI1nvIOUTFGyqhvH/1SM3gvhi2STROYx+ox0kP2v+o6KWzPr7AIeC3Hza6QXY9Tnt 1pQv0aPMuad9OEkpVk3xuSKmhR5HVF++Ol4tAGIWMRumW6yHacn4cH1VoZq2RwcLBdOQkz dCrpH/QI2QIIpHsbg1CBX2oPgyn3u5o= X-MC-Unique: UWG-5ChdO6WuX4DTtDWqHw-1 X-MC-Unique: 7o-hm5LpMKWBMARe6ahmGg-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 28/29] conf: Apply virNetworkDNSHostDefFormatBuf(generated) in virNetworkDNSDefFormat Date: Wed, 25 Mar 2020 15:12:08 +0800 Message-Id: <20200325071209.20841-29-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S30 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjTRSksPUUUUU X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbihRfxT1sfnDpM9wAAs1 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUgF023902 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 1 + src/conf/network_conf.c | 15 +++------------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index b97510f..ba5db0b 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -385,6 +385,7 @@ {"name": "partialOkay", "type": "Bool"} ] }, + "formatfunc": {"output": "src/conf/network_conf"}, "members": [ {"id": "ip", "opt": true}, {"id": "hostname", "name": "name", "opt": true} diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 1e8bfbc..e5d6e49 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1926,7 +1926,7 @@ static int virNetworkDNSDefFormat(virBufferPtr buf, const virNetworkDNSDef *def) { - size_t i, j; + size_t i; =20 if (!(def->enable || def->forwardPlainNames || def->nforwarders || def= ->nhosts || def->nsrvs || def->ntxts)) @@ -1981,17 +1981,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])= < 0) + return -1; } } virBufferAdjustIndent(buf, -2); --=20 2.17.1 From nobody Fri Mar 29 13:20:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) client-ip=216.205.24.74; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-74.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1585120412; cv=none; d=zohomail.com; s=zohoarc; b=PAitmLv/jMNtq2y+0LUisg2De8VHy7MhXMOinkizn/529fi5BDkqdnY2d5U+HdzAqfi1YNA6UCRyM/2zjFOvVFg7FGC/UlxsjuRz/C3xq2ymFT/fmLA/Aa7etpAXBk9VyD4CDGNB+gcR87dcZ2auuW5Ga8EolkId9Nb6HiuKpU4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585120412; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=lwAVBTyjhZT2fRlKAc79p2oJYFbaW6lDuK47lFfP68Y=; b=dqb6ER0uOKBaLOBPWhMfrAkWEqcuaGLDyQa14cUAqQCvF9dCJznRjGMI4lyeh1G5NKDWjvpXQOoqq5qkKQ+heAU2nqkXnE2laOyGRegALxFDeOQkWQALXsCmJiyt3Pt43/fVy9h7gHNSgkH8LXcDvu0MyCbkkGAlPEGW3SAWEyQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.74 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-74.mimecast.com (us-smtp-delivery-74.mimecast.com [216.205.24.74]) by mx.zohomail.com with SMTPS id 1585120412339354.78161775637784; Wed, 25 Mar 2020 00:13:32 -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-229-lPU1WMGKMqyYm78D_c5A1A-1; Wed, 25 Mar 2020 03:13:28 -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 79D4A108592A; Wed, 25 Mar 2020 07:13:21 +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 5087294B5D; Wed, 25 Mar 2020 07:13:21 +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 00AC18701F; Wed, 25 Mar 2020 07:13:20 +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 02P7CUOa023895 for ; Wed, 25 Mar 2020 03:12:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1D7C02037E5A; Wed, 25 Mar 2020 07:12:30 +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 19CA92037E4F for ; Wed, 25 Mar 2020 07:12:30 +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 003378007D4 for ; Wed, 25 Mar 2020 07:12:30 +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-328-x7ddIc5cN6ChwG0zkvwbaw-1; Wed, 25 Mar 2020 03:12:26 -0400 Received: from localhost.localdomain (unknown [123.232.151.103]) by smtp4 (Coremail) with SMTP id JedpCgD3ftNNBHtey+koAw--.408S31; Wed, 25 Mar 2020 15:12:23 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1585120411; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=lwAVBTyjhZT2fRlKAc79p2oJYFbaW6lDuK47lFfP68Y=; b=DH+8REg01Bfelkp9+CjhzQlmSCioZVDWyGK18RYVQlb/7noPjp74/7lfJMc+kMsY9nKg2e noPkI0iNGaYQ6DIhmYpL8OrdoEEtr5tOnwCSzDierJPx2wRzvKYYF12/Vlv/KGa1xSQTku hdAV/BenbhZBK7AEaE+7xYu1ZNMQ8e0= X-MC-Unique: lPU1WMGKMqyYm78D_c5A1A-1 X-MC-Unique: x7ddIc5cN6ChwG0zkvwbaw-1 From: Shi Lei To: libvir-list@redhat.com Subject: [RFC 29/29] conf: Replace virNetworkDNSDefFormat(hardcoded) with virNetworkDNSDefFormatBuf(generated) Date: Wed, 25 Mar 2020 15:12:09 +0800 Message-Id: <20200325071209.20841-30-shi_lei@massclouds.com> In-Reply-To: <20200325071209.20841-1-shi_lei@massclouds.com> References: <20200325071209.20841-1-shi_lei@massclouds.com> X-CM-TRANSID: JedpCgD3ftNNBHtey+koAw--.408S31 X-Coremail-Antispam: 1Uf129KBjvJXoWxCFWDCw1xKFWxuF18JFW3Awb_yoW5ArykpF n3tFnIyFW8WF98trWjy3yfKr98uFWkJ3yrCrZ7W347Z345GryfZryxWry0va4YgryYyrWY y3WrXrs8J3y8JF7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zRU5r7UUUUU= X-Originating-IP: [123.232.151.103] X-CM-SenderInfo: pvklsz1hl6ztxvvfz0xxgvhudrp/1tbiPRfxT1bdHD83ogAAsp X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 02P7CUOa023895 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 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Shi Lei --- docs/schemas/network.rng | 3 +- src/conf/network_conf.c | 71 +--------------------------------------- 2 files changed, 3 insertions(+), 71 deletions(-) diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index ba5db0b..db04b7c 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -264,7 +264,8 @@ "output": "src/conf/network_conf", "post": true, "args.instname": true - } + }, + "formatfunc": {"output": "src/conf/network_conf"} } --> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index e5d6e49..e46c208 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -1922,75 +1922,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]) < 0) - return -1; - } - - for (i =3D 0; i < def->ntxts; i++) { - if (virNetworkDNSTxtDefFormatBuf(buf, "txt", &def->txts[i]) < 0) - return -1; - } - - for (i =3D 0; i < def->nsrvs; i++) { - if (virNetworkDNSSrvDefFormatBuf(buf, "srv", &def->srvs[i]) < 0) - return -1; - } - - if (def->nhosts) { - for (i =3D 0; i < def->nhosts; i++) { - if (virNetworkDNSHostDefFormatBuf(buf, "host", &def->hosts[i])= < 0) - return -1; - } - } - virBufferAdjustIndent(buf, -2); - virBufferAddLit(buf, "\n"); - return 0; -} - - static int virNetworkIPDefFormat(virBufferPtr buf, const virNetworkIPDef *def) @@ -2366,7 +2297,7 @@ virNetworkDefFormatBuf(virBufferPtr buf, virBufferAddLit(buf, "/>\n"); } =20 - if (virNetworkDNSDefFormat(buf, &def->dns) < 0) + if (virNetworkDNSDefFormatBuf(buf, "dns", &def->dns) < 0) return -1; =20 if (virNetDevVlanFormat(&def->vlan, buf) < 0) --=20 2.17.1