From nobody Mon Apr 29 19:17:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1586967569; cv=none; d=zohomail.com; s=zohoarc; b=bLhDQbBohk4HgUQ6MotBlq7hmalAgKGMg78nHQx3GCizRZGj7TR1rKbkdSSk9uPuc7wxfo8p8vU92iIjtutdnVV3LpOIZ7jmL2oyaaAy3Beo6nTmnI73tR0FiuHG8WXJnzAWOxWC/QVYZRIDJyJf2jE1quSDr95Y5MfRqIwjuas= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1586967569; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=33BDwQrQ+3BGrn/m9igeHZxMSazLD2b62IHt6oJap7s=; b=NL0utVgPn4ggn7sC6ro6VE0G3hDi201vojfD+z9UGtM2Z8t8Bc4L3dKm0AqKmtkZWsy44LzA/ZklbxYXoT0MAgE72P713EdCjiXhP0oEKdg1sqq69Zk0ZdPFrnGzR+VUN4BxDbJb/f1qMrjbXbE+SyBXU110RWzeJp+GOGl/CEg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1586967569223461.83471574372504; Wed, 15 Apr 2020 09:19:29 -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-408-19UFiyjPP_i58tUTV8dIdQ-1; Wed, 15 Apr 2020 12:19:25 -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 54DBB100731E; Wed, 15 Apr 2020 16:19:19 +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 1025311A0E1; Wed, 15 Apr 2020 16:19:19 +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 AEABF93366; Wed, 15 Apr 2020 16:19:18 +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 03FGJC4O014114 for ; Wed, 15 Apr 2020 12:19:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id C0C472026D68; Wed, 15 Apr 2020 16:19:12 +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 BC8A92026D66 for ; Wed, 15 Apr 2020 16:19:10 +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 745648FF66A for ; Wed, 15 Apr 2020 16:19:10 +0000 (UTC) Received: from mail-qk1-f170.google.com (mail-qk1-f170.google.com [209.85.222.170]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-230-4u_4OUxuOcOGs7h_gHcD6Q-1; Wed, 15 Apr 2020 12:19:08 -0400 Received: by mail-qk1-f170.google.com with SMTP id y3so17812363qky.8 for ; Wed, 15 Apr 2020 09:19:08 -0700 (PDT) Received: from localhost.localdomain ([179.98.95.94]) by smtp.gmail.com with ESMTPSA id r51sm9977929qtk.89.2020.04.15.09.19.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2020 09:19:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1586967567; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=33BDwQrQ+3BGrn/m9igeHZxMSazLD2b62IHt6oJap7s=; b=ALhOKVqiXAoIDclaa8vd2SYxY3BDKOo1hPwONyH89DoPDM9jp54MjD0wHAO7xVwOyvkVpI fNiZKJ6yvWrXuqJgDBxK7NgwHp0QT0hQrRtodFoCZMkfKImk+Me3eRb9nwYGwZ1BVuX9Eb IvEjkp/YaFVmDAuksd6a89/ENwuqZjE= X-MC-Unique: 19UFiyjPP_i58tUTV8dIdQ-1 X-MC-Unique: 4u_4OUxuOcOGs7h_gHcD6Q-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XlxiXuCu/tmpxVnBpvGllWoFURiGTVQJpZCvenyHC5I=; b=jwA9MG3pa222cQzdtE7DAzpsdV4z6bs/sXxYpfHa4ZcjA4/SwA7m9g41cFFMMl0SKz 2L7HfwAGNkhe0CS1a/vbwFhYDrmvx5ymMbzE5hGij0uKZ+Y3Gr5EVMKoV+y+adop0dED U+9p2Ew/YPgwelxRXfEhuZv7C0XA/ZmY6w7rTL4DnpXnFgX8o7jWC5+EMObkKvQqrJx0 ZYpNImfNtV0fiEO9tM5dIqJiLIQl2aR2XCbbep1kKm0PigQg3y788xlxSqaFF+w7jEu4 uuZEi1UNA3Dz9ct0Y2JgygyeNCeuF5P/8cDvplWIckLkjckOiDhOnAVM9chcyLaW7R6G v/9w== X-Gm-Message-State: AGi0Pubq+OxxaToRPLqKsqmLfye92IpmI97ezSUh0l4GX1uOcB+bK3kj q7PsYU1HUR18DTJ0Mde0A/3yUCdHmJY= X-Google-Smtp-Source: APiQypImFGxyjqH1Yb4byl7re3EfqRfnSMXe0uPyvgGcwcHRqPo3TEkIF0sTNpzR7Z/w/zqogcg7iA== X-Received: by 2002:a05:620a:22ee:: with SMTP id p14mr16288849qki.248.1586967546956; Wed, 15 Apr 2020 09:19:06 -0700 (PDT) From: Julio Faracco To: libvir-list@redhat.com Subject: [PATCH 1/2] conf: Add option for settings Date: Wed, 15 Apr 2020 13:18:49 -0300 Message-Id: <20200415161850.240862-2-jcfaracco@gmail.com> In-Reply-To: <20200415161850.240862-1-jcfaracco@gmail.com> References: <20200415161850.240862-1-jcfaracco@gmail.com> MIME-Version: 1.0 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 03FGJC4O014114 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: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" If an user is trying to configure a dhcp neetwork settings, it is not possible to change the leasetime of a range or a host entry. This is available using dnsmasq extra options, but they are associated with dhcp-range or dhcp-hosts fields. This patch implements a default leasetime for both. If this XML entry is defined, it applies leasetime for each range or host defined under DHCP scope. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=3D913446 Signed-off-by: Julio Faracco --- docs/schemas/basictypes.rng | 9 ++++++ docs/schemas/network.rng | 11 +++++++ src/conf/network_conf.c | 62 ++++++++++++++++++++++++++++++++++++- src/conf/network_conf.h | 14 +++++++++ src/libvirt_private.syms | 2 ++ src/network/bridge_driver.c | 37 ++++++++++++++++++++-- src/util/virdnsmasq.c | 40 ++++++++++++------------ src/util/virdnsmasq.h | 1 + 8 files changed, 152 insertions(+), 24 deletions(-) diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng index 81465273c8..12f085c101 100644 --- a/docs/schemas/basictypes.rng +++ b/docs/schemas/basictypes.rng @@ -607,4 +607,13 @@ =20 + + + seconds + minutes + hours + infinite + + + diff --git a/docs/schemas/network.rng b/docs/schemas/network.rng index 60453225d6..9a93529d52 100644 --- a/docs/schemas/network.rng +++ b/docs/schemas/network.rng @@ -398,6 +398,17 @@ + + + + + + + + + + + diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 819b645df7..e6e82ee9fc 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -70,6 +70,14 @@ VIR_ENUM_IMPL(virNetworkTaint, "hook-script", ); =20 +VIR_ENUM_IMPL(virNetworkDHCPLeaseTimeUnit, + VIR_NETWORK_DHCP_LEASETIME_UNIT_LAST, + "seconds", + "minutes", + "hours", + "infinite", +); + static virClassPtr virNetworkXMLOptionClass; =20 static void @@ -552,9 +560,50 @@ virNetworkDHCPHostDefParseXML(const char *networkName, } =20 =20 +static int +virNetworkDHCPLeaseTimeDefParseXML(virNetworkIPDefPtr def, + xmlNodePtr node, + xmlXPathContextPtr ctxt) +{ + g_autofree char *leasetime =3D NULL, *leaseunit =3D NULL; + + if (!(leaseunit =3D virXMLPropString(node, "unit"))) + def->leaseunit =3D VIR_NETWORK_DHCP_LEASETIME_UNIT_SECONDS; + else + def->leaseunit =3D virNetworkDHCPLeaseTimeUnitTypeFromString(lease= unit); + + if (def->leaseunit =3D=3D VIR_NETWORK_DHCP_LEASETIME_UNIT_INFINITE) + return 0; + + if (!(leasetime =3D virXPathString("string(./dhcp/leasetime)", ctxt))) + return -1; + + if (virStrToLong_ul(leasetime, NULL, 10, &def->leasetime) < 0) + return -1; + + /* This boundary check is related to dnsmasq man page settings: + * "The minimum lease time is two minutes." */ + if ((def->leaseunit =3D=3D VIR_NETWORK_DHCP_LEASETIME_UNIT_SECONDS && + def->leasetime < 120) || + (def->leaseunit =3D=3D VIR_NETWORK_DHCP_LEASETIME_UNIT_MINUTES && + def->leasetime < 2)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("The minimum lease time should be greater " + "than 2 minutes")); + return -1; + } + + if (def->leasetime > 0) + return 0; + + return -1; +} + + static int virNetworkDHCPDefParseXML(const char *networkName, xmlNodePtr node, + xmlXPathContextPtr ctxt, virNetworkIPDefPtr def) { int ret =3D -1; @@ -583,7 +632,11 @@ virNetworkDHCPDefParseXML(const char *networkName, goto cleanup; if (VIR_APPEND_ELEMENT(def->hosts, def->nhosts, host) < 0) goto cleanup; + } else if (cur->type =3D=3D XML_ELEMENT_NODE && + virXMLNodeNameEqual(cur, "leasetime")) { =20 + if (virNetworkDHCPLeaseTimeDefParseXML(def, cur, ctxt) < 0) + goto cleanup; } else if (VIR_SOCKET_ADDR_IS_FAMILY(&def->address, AF_INET) && cur->type =3D=3D XML_ELEMENT_NODE && virXMLNodeNameEqual(cur, "bootp")) { @@ -1143,7 +1196,7 @@ virNetworkIPDefParseXML(const char *networkName, } =20 if ((dhcp =3D virXPathNode("./dhcp[1]", ctxt)) && - virNetworkDHCPDefParseXML(networkName, dhcp, def) < 0) + virNetworkDHCPDefParseXML(networkName, dhcp, ctxt, def) < 0) goto cleanup; =20 if (virXPathNode("./tftp[1]", ctxt)) { @@ -2343,6 +2396,13 @@ virNetworkIPDefFormat(virBufferPtr buf, virBufferAddLit(buf, "/>\n"); =20 } + if (def->leaseunit =3D=3D VIR_NETWORK_DHCP_LEASETIME_UNIT_INFINITE= ) { + virBufferAddLit(buf, "\n"); + } else if (def->leasetime) { + virBufferAsprintf(buf, "%lu= \n", + virNetworkDHCPLeaseTimeUnitTypeToString(def-= >leaseunit), + def->leasetime); + } =20 virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "\n"); diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index db7243eef5..66a5e1ad4f 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -80,6 +80,17 @@ typedef enum { VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_LAST, } virNetworkForwardHostdevDeviceType; =20 +typedef enum { + VIR_NETWORK_DHCP_LEASETIME_UNIT_SECONDS =3D 0, + VIR_NETWORK_DHCP_LEASETIME_UNIT_MINUTES, + VIR_NETWORK_DHCP_LEASETIME_UNIT_HOURS, + VIR_NETWORK_DHCP_LEASETIME_UNIT_INFINITE, + + VIR_NETWORK_DHCP_LEASETIME_UNIT_LAST, +} virNetworkDHCPLeaseTimeUnitType; + +VIR_ENUM_DECL(virNetworkDHCPLeaseTimeUnit); + /* The backend driver used for devices from the pool. Currently used * only for PCI devices (vfio vs. kvm), but could be used for other * device types in the future. @@ -176,6 +187,9 @@ struct _virNetworkIPDef { size_t nhosts; /* Zero or more dhcp hosts */ virNetworkDHCPHostDefPtr hosts; =20 + unsigned long leasetime; + virNetworkDHCPLeaseTimeUnitType leaseunit; + char *tftproot; char *bootfile; virSocketAddr bootserver; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index ec367653d5..79bb5cc160 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -770,6 +770,8 @@ virNetworkDefParseNode; virNetworkDefParseString; virNetworkDefParseXML; virNetworkDefUpdateSection; +virNetworkDHCPLeaseTimeUnitTypeFromString; +virNetworkDHCPLeaseTimeUnitTypeToString; virNetworkForwardTypeToString; virNetworkIPDefNetmask; virNetworkIPDefPrefix; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index f06099297a..d587e266de 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -966,6 +966,27 @@ static int networkConnectIsAlive(virConnectPtr conn G_= GNUC_UNUSED) } =20 =20 +static char * +networkBuildDnsmasqLeaseTime(virNetworkIPDefPtr ipdef) +{ + char *leasetime =3D NULL; + const char *unit; + g_auto(virBuffer) buf =3D VIR_BUFFER_INITIALIZER; + + if (ipdef->leaseunit =3D=3D VIR_NETWORK_DHCP_LEASETIME_UNIT_INFINITE) { + virBufferAddLit(&buf, "infinite"); + } else if (ipdef->leasetime) { + unit =3D virNetworkDHCPLeaseTimeUnitTypeToString(ipdef->leaseunit); + /* We get only first compatible char from string: 's', 'm' or 'h' = */ + virBufferAsprintf(&buf, "%lu%c", ipdef->leasetime, unit[0]); + } + + leasetime =3D virBufferContentAndReset(&buf); + + return leasetime; +} + + /* the following does not build a file, it builds a list * which is later saved into a file */ @@ -975,6 +996,9 @@ networkBuildDnsmasqDhcpHostsList(dnsmasqContext *dctx, { size_t i; bool ipv6 =3D false; + g_autofree char *leasetime =3D NULL; + + leasetime =3D networkBuildDnsmasqLeaseTime(ipdef); =20 if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET6)) ipv6 =3D true; @@ -982,7 +1006,8 @@ networkBuildDnsmasqDhcpHostsList(dnsmasqContext *dctx, virNetworkDHCPHostDefPtr host =3D &(ipdef->hosts[i]); if (VIR_SOCKET_ADDR_VALID(&host->ip)) if (dnsmasqAddDhcpHost(dctx, host->mac, &host->ip, - host->name, host->id, ipv6) < 0) + host->name, host->id, leasetime, + ipv6) < 0) return -1; } =20 @@ -1381,13 +1406,14 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, } for (r =3D 0; r < ipdef->nranges; r++) { int thisRange; + g_autofree char *leasetime =3D NULL; =20 if (!(saddr =3D virSocketAddrFormat(&ipdef->ranges[r].start)) = || !(eaddr =3D virSocketAddrFormat(&ipdef->ranges[r].end))) goto cleanup; =20 if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET6)) { - virBufferAsprintf(&configbuf, "dhcp-range=3D%s,%s,%d\n", + virBufferAsprintf(&configbuf, "dhcp-range=3D%s,%s,%d", saddr, eaddr, prefix); } else { /* IPv4 - dnsmasq requires a netmask rather than prefix */ @@ -1404,10 +1430,15 @@ networkDnsmasqConfContents(virNetworkObjPtr obj, =20 if (!(netmaskStr =3D virSocketAddrFormat(&netmask))) goto cleanup; - virBufferAsprintf(&configbuf, "dhcp-range=3D%s,%s,%s\n", + virBufferAsprintf(&configbuf, "dhcp-range=3D%s,%s,%s", saddr, eaddr, netmaskStr); } =20 + if ((leasetime =3D networkBuildDnsmasqLeaseTime(ipdef))) + virBufferAsprintf(&configbuf, ",%s", leasetime); + + virBufferAddLit(&configbuf, "\n"); + VIR_FREE(saddr); VIR_FREE(eaddr); thisRange =3D virSocketAddrGetRange(&ipdef->ranges[r].start, diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c index adc6f96bb6..fc977a47f5 100644 --- a/src/util/virdnsmasq.c +++ b/src/util/virdnsmasq.c @@ -296,11 +296,14 @@ hostsfileAdd(dnsmasqHostsfile *hostsfile, virSocketAddr *ip, const char *name, const char *id, + const char *leasetime, bool ipv6) { - char *ipstr =3D NULL; + g_autofree char *ipstr =3D NULL; + g_auto(virBuffer) buf =3D VIR_BUFFER_INITIALIZER; + if (VIR_REALLOC_N(hostsfile->hosts, hostsfile->nhosts + 1) < 0) - goto error; + return -1; =20 if (!(ipstr =3D virSocketAddrFormat(ip))) return -1; @@ -308,34 +311,30 @@ hostsfileAdd(dnsmasqHostsfile *hostsfile, /* the first test determines if it is a dhcpv6 host */ if (ipv6) { if (name && id) { - hostsfile->hosts[hostsfile->nhosts].host =3D g_strdup_printf("= id:%s,%s,[%s]", - id,= name, ipstr); + virBufferAsprintf(&buf, "id:%s,%s", id, name); } else if (name && !id) { - hostsfile->hosts[hostsfile->nhosts].host =3D g_strdup_printf("= %s,[%s]", - nam= e, ipstr); + virBufferAsprintf(&buf, "%s", name); } else if (!name && id) { - hostsfile->hosts[hostsfile->nhosts].host =3D g_strdup_printf("= id:%s,[%s]", - id,= ipstr); + virBufferAsprintf(&buf, "id:%s", id); } + virBufferAsprintf(&buf, ",[%s]", ipstr); } else if (name && mac) { - hostsfile->hosts[hostsfile->nhosts].host =3D g_strdup_printf("%s,%= s,%s", - mac, ip= str, name); + virBufferAsprintf(&buf, "%s,%s,%s", mac, ipstr, name); } else if (name && !mac) { - hostsfile->hosts[hostsfile->nhosts].host =3D g_strdup_printf("%s,%= s", name, - ipstr); + virBufferAsprintf(&buf, "%s,%s", name, ipstr); } else { - hostsfile->hosts[hostsfile->nhosts].host =3D g_strdup_printf("%s,%= s", mac, - ipstr); + virBufferAsprintf(&buf, "%s,%s", mac, ipstr); } - VIR_FREE(ipstr); + + if (leasetime) + virBufferAsprintf(&buf, ",%s", leasetime); + + if (!(hostsfile->hosts[hostsfile->nhosts].host =3D virBufferContentAnd= Reset(&buf))) + return -1; =20 hostsfile->nhosts++; =20 return 0; - - error: - VIR_FREE(ipstr); - return -1; } =20 static dnsmasqHostsfile * @@ -501,9 +500,10 @@ dnsmasqAddDhcpHost(dnsmasqContext *ctx, virSocketAddr *ip, const char *name, const char *id, + const char *leasetime, bool ipv6) { - return hostsfileAdd(ctx->hostsfile, mac, ip, name, id, ipv6); + return hostsfileAdd(ctx->hostsfile, mac, ip, name, id, leasetime, ipv6= ); } =20 /* diff --git a/src/util/virdnsmasq.h b/src/util/virdnsmasq.h index ff0e56d635..6fbc101e64 100644 --- a/src/util/virdnsmasq.h +++ b/src/util/virdnsmasq.h @@ -87,6 +87,7 @@ int dnsmasqAddDhcpHost(dnsmasqContext *ctx, virSocketAddr *ip, const char *name, const char *id, + const char *leasetime, bool ipv6); int dnsmasqAddHost(dnsmasqContext *ctx, virSocketAddr *ip, --=20 2.24.1 From nobody Mon Apr 29 19:17:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1586967570; cv=none; d=zohomail.com; s=zohoarc; b=hQLeKTqXnpMs/WNub0jG+Fs0+NOvEapc43bZwSkH5chD1IUbxdnPp2PbTWJhoY/cIbPEn5kXSFcNfremFTl0OJEVRS0LXcQc0724yXTCYXwtveTuCVzdi4ejqYE2T4qFZbsk0Nc8YNcOkHBpK6QxGBRQWiVIYTFUs7d2ONHEJn0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1586967570; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LVg0aJWLRocXku2gc02ZAiHKmKAZf5I9DOL/9A8ZGso=; b=lRU6ayaCeE+3k/vP0JHueb88euiEic4Y/+A/EufqT1sANv9wKhLeBEPAUOnmuO5F4JmQJwQf7ZhcnD7273GhiMIJBgjsyrY5V66+qNUQk8nbqFY/RB3+OpjhWjD1azZVSsMws1EE8/qBDlqnfcs/cD9Ww1mrZOM9Yyo9dg3Lp3g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1586967570913159.99474484992425; Wed, 15 Apr 2020 09:19: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-447-d7ETV69xP327S6qu9Z8Yhw-1; Wed, 15 Apr 2020 12:19:27 -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 C7F4E8010E4; Wed, 15 Apr 2020 16:19: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 9B7DA118DFC; Wed, 15 Apr 2020 16:19: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 4699718089D0; Wed, 15 Apr 2020 16:19:20 +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 03FGJIKG014127 for ; Wed, 15 Apr 2020 12:19:19 -0400 Received: by smtp.corp.redhat.com (Postfix) id CFF4C114D17; Wed, 15 Apr 2020 16:19:18 +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 CB77E11515F for ; Wed, 15 Apr 2020 16:19:16 +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 76CE0800297 for ; Wed, 15 Apr 2020 16:19:16 +0000 (UTC) Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-248-4aMhxrMtOnijxbrSL-NDCw-1; Wed, 15 Apr 2020 12:19:14 -0400 Received: by mail-qk1-f171.google.com with SMTP id v7so17901242qkc.0 for ; Wed, 15 Apr 2020 09:19:14 -0700 (PDT) Received: from localhost.localdomain ([179.98.95.94]) by smtp.gmail.com with ESMTPSA id r51sm9977929qtk.89.2020.04.15.09.19.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Apr 2020 09:19:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1586967569; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=LVg0aJWLRocXku2gc02ZAiHKmKAZf5I9DOL/9A8ZGso=; b=SuaK4sddu9qOZ9aDl83Nds8sQmBenonF8++zf9dI1B7RqQEr3TE/ag/MHygAVvj+B+3o7f 6Bq+/IRSlHBOjHEQ/ODD+NXYCDKLkg3ova/lWww+Bta7YJ1GTzeyhyBgWDOGeXtGE/ZF/9 rBMd1OtAOTqj9mLnuzKr7Hg2J4q3yW8= X-MC-Unique: d7ETV69xP327S6qu9Z8Yhw-1 X-MC-Unique: 4aMhxrMtOnijxbrSL-NDCw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=M0/JjrB5gI9Y24r/lCdSqgR4+LsE/jPSy2rtdQJq0Ao=; b=Hj9n/ZaTQMZS42cGraLTpLvI/C/r+49boz5bFAW7Dj0qtOKaki4aEtn0SzzO3+lrBL IrgsmULlhfGYYoXLBfsUomP5luEWkKhVXScUmtZ6JU+UwS4aXf0oItcfP4j144q2P6ex o+tCqSPLN/Gz2hmIxMuVCOIW8goBpXiVPH8eqVa8PVTgKDI1y3PDO5SGMlKwLRigSM9F LvLocKjI/DRJVeije8W6npkKSGO5IzzALEgWZ2t54dpCSfj8cimCG4jY+e4ALxfDB2lU RjqWXhj6BGJge0CNJwVZTtZOUEfFkMItb+YFKV/wFbialz2h9kzbAelwdwpw1rC+8zao TI/Q== X-Gm-Message-State: AGi0Pubz9k1NSm1VY30/DUVZFojRUFULpnPp1PeDE1D+5lng6MCeqhXQ w9izPA3/P4jNGI1ianjIzDRv3rPALhg= X-Google-Smtp-Source: APiQypIU/GStB0Ancizwvq2P9tw+Jkg1utZj0xMFuSdlnXpUt0vAiwablYC7wsqBNCU2MkyD/QjWeA== X-Received: by 2002:a37:dd5:: with SMTP id 204mr17623658qkn.321.1586967552925; Wed, 15 Apr 2020 09:19:12 -0700 (PDT) From: Julio Faracco To: libvir-list@redhat.com Subject: [PATCH 2/2] tests: Add tests for to cover dnsmasq settings Date: Wed, 15 Apr 2020 13:18:50 -0300 Message-Id: <20200415161850.240862-3-jcfaracco@gmail.com> In-Reply-To: <20200415161850.240862-1-jcfaracco@gmail.com> References: <20200415161850.240862-1-jcfaracco@gmail.com> MIME-Version: 1.0 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 03FGJIKG014127 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: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" New tests are required to cover some new XML syntax entry for option. This includes schema testing and other features like unit attribute and leasetime value. Signed-off-by: Julio Faracco --- tests/networkxml2confdata/leasetime-hours.conf | 16 ++++++++++++++++ tests/networkxml2confdata/leasetime-hours.xml | 12 ++++++++++++ .../networkxml2confdata/leasetime-infinite.conf | 16 ++++++++++++++++ tests/networkxml2confdata/leasetime-infinite.xml | 12 ++++++++++++ tests/networkxml2confdata/leasetime-minutes.conf | 16 ++++++++++++++++ tests/networkxml2confdata/leasetime-minutes.xml | 12 ++++++++++++ tests/networkxml2confdata/leasetime-seconds.conf | 16 ++++++++++++++++ tests/networkxml2confdata/leasetime-seconds.xml | 12 ++++++++++++ tests/networkxml2conftest.c | 4 ++++ tests/networkxml2xmlin/leasetime-hours.xml | 12 ++++++++++++ tests/networkxml2xmlin/leasetime-infinite.xml | 12 ++++++++++++ tests/networkxml2xmlin/leasetime-minutes.xml | 12 ++++++++++++ tests/networkxml2xmlin/leasetime-seconds.xml | 12 ++++++++++++ tests/networkxml2xmlout/leasetime-hours.xml | 14 ++++++++++++++ tests/networkxml2xmlout/leasetime-infinite.xml | 14 ++++++++++++++ tests/networkxml2xmlout/leasetime-minutes.xml | 14 ++++++++++++++ tests/networkxml2xmlout/leasetime-seconds.xml | 14 ++++++++++++++ tests/networkxml2xmltest.c | 4 ++++ 18 files changed, 224 insertions(+) create mode 100644 tests/networkxml2confdata/leasetime-hours.conf create mode 100644 tests/networkxml2confdata/leasetime-hours.xml create mode 100644 tests/networkxml2confdata/leasetime-infinite.conf create mode 100644 tests/networkxml2confdata/leasetime-infinite.xml create mode 100644 tests/networkxml2confdata/leasetime-minutes.conf create mode 100644 tests/networkxml2confdata/leasetime-minutes.xml create mode 100644 tests/networkxml2confdata/leasetime-seconds.conf create mode 100644 tests/networkxml2confdata/leasetime-seconds.xml create mode 100644 tests/networkxml2xmlin/leasetime-hours.xml create mode 100644 tests/networkxml2xmlin/leasetime-infinite.xml create mode 100644 tests/networkxml2xmlin/leasetime-minutes.xml create mode 100644 tests/networkxml2xmlin/leasetime-seconds.xml create mode 100644 tests/networkxml2xmlout/leasetime-hours.xml create mode 100644 tests/networkxml2xmlout/leasetime-infinite.xml create mode 100644 tests/networkxml2xmlout/leasetime-minutes.xml create mode 100644 tests/networkxml2xmlout/leasetime-seconds.xml diff --git a/tests/networkxml2confdata/leasetime-hours.conf b/tests/network= xml2confdata/leasetime-hours.conf new file mode 100644 index 0000000000..1599d4633e --- /dev/null +++ b/tests/networkxml2confdata/leasetime-hours.conf @@ -0,0 +1,16 @@ +##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE +##OVERWRITTEN AND LOST. Changes to this configuration should be made usin= g: +## virsh net-edit default +## or other application using the libvirt API. +## +## dnsmasq conf file created by libvirt +strict-order +except-interface=3Dlo +bind-dynamic +interface=3Dvirbr0 +dhcp-range=3D192.168.122.2,192.168.122.254,255.255.255.0,1h +dhcp-no-override +dhcp-authoritative +dhcp-lease-max=3D253 +dhcp-hostsfile=3D/var/lib/libvirt/dnsmasq/default.hostsfile +addn-hosts=3D/var/lib/libvirt/dnsmasq/default.addnhosts diff --git a/tests/networkxml2confdata/leasetime-hours.xml b/tests/networkx= ml2confdata/leasetime-hours.xml new file mode 100644 index 0000000000..8df196e84e --- /dev/null +++ b/tests/networkxml2confdata/leasetime-hours.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + 1 + + + diff --git a/tests/networkxml2confdata/leasetime-infinite.conf b/tests/netw= orkxml2confdata/leasetime-infinite.conf new file mode 100644 index 0000000000..883ced6ade --- /dev/null +++ b/tests/networkxml2confdata/leasetime-infinite.conf @@ -0,0 +1,16 @@ +##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE +##OVERWRITTEN AND LOST. Changes to this configuration should be made usin= g: +## virsh net-edit default +## or other application using the libvirt API. +## +## dnsmasq conf file created by libvirt +strict-order +except-interface=3Dlo +bind-dynamic +interface=3Dvirbr0 +dhcp-range=3D192.168.122.2,192.168.122.254,255.255.255.0,infinite +dhcp-no-override +dhcp-authoritative +dhcp-lease-max=3D253 +dhcp-hostsfile=3D/var/lib/libvirt/dnsmasq/default.hostsfile +addn-hosts=3D/var/lib/libvirt/dnsmasq/default.addnhosts diff --git a/tests/networkxml2confdata/leasetime-infinite.xml b/tests/netwo= rkxml2confdata/leasetime-infinite.xml new file mode 100644 index 0000000000..9ae3c4f7f7 --- /dev/null +++ b/tests/networkxml2confdata/leasetime-infinite.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + + diff --git a/tests/networkxml2confdata/leasetime-minutes.conf b/tests/netwo= rkxml2confdata/leasetime-minutes.conf new file mode 100644 index 0000000000..c093501a35 --- /dev/null +++ b/tests/networkxml2confdata/leasetime-minutes.conf @@ -0,0 +1,16 @@ +##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE +##OVERWRITTEN AND LOST. Changes to this configuration should be made usin= g: +## virsh net-edit default +## or other application using the libvirt API. +## +## dnsmasq conf file created by libvirt +strict-order +except-interface=3Dlo +bind-dynamic +interface=3Dvirbr0 +dhcp-range=3D192.168.122.2,192.168.122.254,255.255.255.0,10m +dhcp-no-override +dhcp-authoritative +dhcp-lease-max=3D253 +dhcp-hostsfile=3D/var/lib/libvirt/dnsmasq/default.hostsfile +addn-hosts=3D/var/lib/libvirt/dnsmasq/default.addnhosts diff --git a/tests/networkxml2confdata/leasetime-minutes.xml b/tests/networ= kxml2confdata/leasetime-minutes.xml new file mode 100644 index 0000000000..e531db2848 --- /dev/null +++ b/tests/networkxml2confdata/leasetime-minutes.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + 10 + + + diff --git a/tests/networkxml2confdata/leasetime-seconds.conf b/tests/netwo= rkxml2confdata/leasetime-seconds.conf new file mode 100644 index 0000000000..4acc2839c5 --- /dev/null +++ b/tests/networkxml2confdata/leasetime-seconds.conf @@ -0,0 +1,16 @@ +##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE +##OVERWRITTEN AND LOST. Changes to this configuration should be made usin= g: +## virsh net-edit default +## or other application using the libvirt API. +## +## dnsmasq conf file created by libvirt +strict-order +except-interface=3Dlo +bind-dynamic +interface=3Dvirbr0 +dhcp-range=3D192.168.122.2,192.168.122.254,255.255.255.0,1000s +dhcp-no-override +dhcp-authoritative +dhcp-lease-max=3D253 +dhcp-hostsfile=3D/var/lib/libvirt/dnsmasq/default.hostsfile +addn-hosts=3D/var/lib/libvirt/dnsmasq/default.addnhosts diff --git a/tests/networkxml2confdata/leasetime-seconds.xml b/tests/networ= kxml2confdata/leasetime-seconds.xml new file mode 100644 index 0000000000..4b4a57110e --- /dev/null +++ b/tests/networkxml2confdata/leasetime-seconds.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + 1000 + + + diff --git a/tests/networkxml2conftest.c b/tests/networkxml2conftest.c index a8355272b9..3cb6658f51 100644 --- a/tests/networkxml2conftest.c +++ b/tests/networkxml2conftest.c @@ -142,6 +142,10 @@ mymain(void) DO_TEST("dhcp6host-routed-network", dhcpv6); DO_TEST("ptr-domains-auto", dhcpv6); DO_TEST("dnsmasq-options", dhcpv6); + DO_TEST("leasetime-seconds", full); + DO_TEST("leasetime-minutes", full); + DO_TEST("leasetime-hours", full); + DO_TEST("leasetime-infinite", full); =20 virObjectUnref(dhcpv6); virObjectUnref(full); diff --git a/tests/networkxml2xmlin/leasetime-hours.xml b/tests/networkxml2= xmlin/leasetime-hours.xml new file mode 100644 index 0000000000..d8075111a4 --- /dev/null +++ b/tests/networkxml2xmlin/leasetime-hours.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + 1 + + + diff --git a/tests/networkxml2xmlin/leasetime-infinite.xml b/tests/networkx= ml2xmlin/leasetime-infinite.xml new file mode 100644 index 0000000000..d0357620b0 --- /dev/null +++ b/tests/networkxml2xmlin/leasetime-infinite.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + + diff --git a/tests/networkxml2xmlin/leasetime-minutes.xml b/tests/networkxm= l2xmlin/leasetime-minutes.xml new file mode 100644 index 0000000000..21169766a4 --- /dev/null +++ b/tests/networkxml2xmlin/leasetime-minutes.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + 10 + + + diff --git a/tests/networkxml2xmlin/leasetime-seconds.xml b/tests/networkxm= l2xmlin/leasetime-seconds.xml new file mode 100644 index 0000000000..4cf64b851e --- /dev/null +++ b/tests/networkxml2xmlin/leasetime-seconds.xml @@ -0,0 +1,12 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + 200 + + + diff --git a/tests/networkxml2xmlout/leasetime-hours.xml b/tests/networkxml= 2xmlout/leasetime-hours.xml new file mode 100644 index 0000000000..ed85f77569 --- /dev/null +++ b/tests/networkxml2xmlout/leasetime-hours.xml @@ -0,0 +1,14 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + 1 + + + diff --git a/tests/networkxml2xmlout/leasetime-infinite.xml b/tests/network= xml2xmlout/leasetime-infinite.xml new file mode 100644 index 0000000000..4373357588 --- /dev/null +++ b/tests/networkxml2xmlout/leasetime-infinite.xml @@ -0,0 +1,14 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + + + + diff --git a/tests/networkxml2xmlout/leasetime-minutes.xml b/tests/networkx= ml2xmlout/leasetime-minutes.xml new file mode 100644 index 0000000000..9e3d8591fa --- /dev/null +++ b/tests/networkxml2xmlout/leasetime-minutes.xml @@ -0,0 +1,14 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + 10 + + + diff --git a/tests/networkxml2xmlout/leasetime-seconds.xml b/tests/networkx= ml2xmlout/leasetime-seconds.xml new file mode 100644 index 0000000000..a4e428f84b --- /dev/null +++ b/tests/networkxml2xmlout/leasetime-seconds.xml @@ -0,0 +1,14 @@ + + default + 81ff0d90-c91e-6742-64da-4a736edb9a9b + + + + + + + + 200 + + + diff --git a/tests/networkxml2xmltest.c b/tests/networkxml2xmltest.c index ec679e72ee..700744785a 100644 --- a/tests/networkxml2xmltest.c +++ b/tests/networkxml2xmltest.c @@ -160,6 +160,10 @@ mymain(void) DO_TEST("metadata"); DO_TEST("set-mtu"); DO_TEST("dnsmasq-options"); + DO_TEST("leasetime-seconds"); + DO_TEST("leasetime-minutes"); + DO_TEST("leasetime-hours"); + DO_TEST("leasetime-infinite"); DO_TEST("isolated-ports"); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; --=20 2.24.1