This reverts commit 2c78051a14acfb7aba078d569b1632dfe0ca0853.
Conflicts:
src/Makefile.am
Signed-off-by: Jim Fehlig <jfehlig(a)suse.com>
---
.gitignore | 1 -
cfg.mk | 3 +-
configure.ac | 1 -
po/POTFILES.in | 1 -
src/Makefile.am | 25 +--
src/libvirt_xenconfig.syms | 4 -
src/xenconfig/xen_common.c | 3 +-
src/xenconfig/xen_xl.c | 499 ------------------------------------------
src/xenconfig/xen_xl.h | 33 ---
src/xenconfig/xen_xl_disk.l | 256 ----------------------
src/xenconfig/xen_xl_disk_i.h | 39 ----
11 files changed, 4 insertions(+), 861 deletions(-)
diff --git a/.gitignore b/.gitignore
index eac2203..9d09709 100644
--- a/.gitignore
+++ b/.gitignore
@@ -140,7 +140,6 @@
/src/remote/*_protocol.[ch]
/src/rpc/virkeepaliveprotocol.[ch]
/src/rpc/virnetprotocol.[ch]
-/src/xenconfig/xen_xl_disk.[ch]
/src/test_libvirt*.aug
/src/test_virtlockd.aug
/src/util/virkeymaps.h
diff --git a/cfg.mk b/cfg.mk
index 3df3dcb..21f83c3 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -89,9 +89,8 @@ distdir: sc_vulnerable_makefile_CVE-2012-3386.z
endif
# Files that should never cause syntax check failures.
-# (^(HACKING|docs/(news\.html\.in|.*\.patch))|\.(po|fig|gif|ico|png))$$
VC_LIST_ALWAYS_EXCLUDE_REGEX = \
-
(^(HACKING|docs/(news\.html\.in|.*\.patch)|src/xenconfig/xen_xl_disk.[chl])|\.(po|fig|gif|ico|png))$$
+ (^(HACKING|docs/(news\.html\.in|.*\.patch))|\.(po|fig|gif|ico|png))$$
# Functions like free() that are no-ops on NULL arguments.
useless_free_options = \
diff --git a/configure.ac b/configure.ac
index 167b875..9d12079 100644
--- a/configure.ac
+++ b/configure.ac
@@ -146,7 +146,6 @@ m4_ifndef([LT_INIT], [
])
AM_PROG_CC_C_O
AM_PROG_LD
-AM_PROG_LEX
AC_MSG_CHECKING([for how to mark DSO non-deletable at runtime])
LIBVIRT_NODELETE=
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 094c8e3..e7cb2cc 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -247,7 +247,6 @@ src/xenapi/xenapi_driver.c
src/xenapi/xenapi_utils.c
src/xenconfig/xen_common.c
src/xenconfig/xen_sxpr.c
-src/xenconfig/xen_xl.c
src/xenconfig/xen_xm.c
tests/virpolkittest.c
tools/libvirt-guests.sh.in
diff --git a/src/Makefile.am b/src/Makefile.am
index c7975e5..e0e47d0 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1000,22 +1000,11 @@ CPU_SOURCES = \
VMX_SOURCES = \
vmx/vmx.c vmx/vmx.h
-AM_LFLAGS = -Pxl_disk_ --header-file=../$*.h
-LEX_OUTPUT_ROOT = lex.xl_disk_
-BUILT_SOURCES += xenconfig/xen_xl_disk.c xenconfig/xen_xl_disk.h
-# Generated header file is not implicitly added to dist
-EXTRA_DIST += xenconfig/xen_xl_disk.h
-CLEANFILES += xenconfig/xen_xl_disk.h xenconfig/xen_xl_disk.c
-
-XENXLDISKPARSER_SOURCES = xenconfig/xen_xl_disk.l
-
XENCONFIG_SOURCES = \
xenconfig/xenxs_private.h \
- xenconfig/xen_common.c xenconfig/xen_common.h \
+ xenconfig/xen_common.c xenconfig/xen_common.h \
xenconfig/xen_sxpr.c xenconfig/xen_sxpr.h \
- xenconfig/xen_xm.c xenconfig/xen_xm.h \
- xenconfig/xen_xl.c xenconfig/xen_xl.h \
- xenconfig/xen_xl_disk_i.h
+ xenconfig/xen_xm.c xenconfig/xen_xm.h
pkgdata_DATA = cpu/cpu_map.xml
@@ -1070,19 +1059,10 @@ libvirt_vmx_la_SOURCES = $(VMX_SOURCES)
endif WITH_VMX
if WITH_XENCONFIG
-# Flex generated XL disk parser needs to be compiled without WARN_FLAGS
-# Add the generated object to its own library to control CFLAGS
-noinst_LTLIBRARIES += libvirt_xenxldiskparser.la
-libvirt_xenxldiskparser_la_CFLAGS = \
- -I$(srcdir)/conf $(AM_CFLAGS) -Wno-unused-parameter
-libvirt_xenxldiskparser_la_SOURCES = \
- $(XENXLDISKPARSER_SOURCES)
-
noinst_LTLIBRARIES += libvirt_xenconfig.la
libvirt_la_BUILT_LIBADD += libvirt_xenconfig.la
libvirt_xenconfig_la_CFLAGS = \
-I$(srcdir)/conf $(AM_CFLAGS)
-libvirt_xenconfig_la_LIBADD = libvirt_xenxldiskparser.la
libvirt_xenconfig_la_SOURCES = $(XENCONFIG_SOURCES)
endif WITH_XENCONFIG
@@ -1844,7 +1824,6 @@ EXTRA_DIST += \
$(VBOX_DRIVER_EXTRA_DIST) \
$(VMWARE_DRIVER_SOURCES) \
$(XENCONFIG_SOURCES) \
- $(XENXLDISKPARSER_SOURCES) \
$(ACCESS_DRIVER_POLKIT_POLICY)
check-local: check-augeas
diff --git a/src/libvirt_xenconfig.syms b/src/libvirt_xenconfig.syms
index 3e2e5d6..6541685 100644
--- a/src/libvirt_xenconfig.syms
+++ b/src/libvirt_xenconfig.syms
@@ -16,10 +16,6 @@ xenParseSxprChar;
xenParseSxprSound;
xenParseSxprString;
-#xenconfig/xen_xl.h
-xenFormatXL;
-xenParseXL;
-
# xenconfig/xen_xm.h
xenFormatXM;
xenParseXM;
diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c
index a2a1474..b40a722 100644
--- a/src/xenconfig/xen_common.c
+++ b/src/xenconfig/xen_common.c
@@ -1812,8 +1812,7 @@ xenFormatVfb(virConfPtr conf, virDomainDefPtr def, int
xendConfigVersion)
{
int hvm = STREQ(def->os.type, "hvm") ? 1 : 0;
- if (def->ngraphics == 1 &&
- def->graphics[0]->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
+ if (def->ngraphics == 1) {
if (hvm || (xendConfigVersion < XEND_CONFIG_MIN_VERS_PVFB_NEWCONF)) {
if (def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
if (xenConfigSetInt(conf, "sdl", 1) < 0)
diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c
deleted file mode 100644
index 8d1d2a7..0000000
--- a/src/xenconfig/xen_xl.c
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * xen_xl.c: Xen XL parsing functions
- *
- * 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
- * <
http://www.gnu.org/licenses/>.
- *
- * Author: Kiarie Kahurani <davidkiarie4(a)gmail.com>
- */
-
-#include <config.h>
-
-#include "virconf.h"
-#include "virerror.h"
-#include "domain_conf.h"
-#include "viralloc.h"
-#include "virstring.h"
-#include "xen_xl.h"
-#include "xen_xl_disk.h"
-#include "xen_xl_disk_i.h"
-
-#define VIR_FROM_THIS VIR_FROM_NONE
-
-
-static int
-xenParseXLSpice(virConfPtr conf, virDomainDefPtr def)
-{
- virDomainGraphicsDefPtr graphics = NULL;
- unsigned long port;
- char *listenAddr = NULL;
- int val;
-
- if (STREQ(def->os.type, "hvm")) {
- if (xenConfigGetBool(conf, "spice", &val, 0) < 0)
- return -1;
-
- if (val) {
- if (VIR_ALLOC(graphics) < 0)
- return -1;
-
- graphics->type = VIR_DOMAIN_GRAPHICS_TYPE_SPICE;
- if (xenConfigCopyStringOpt(conf, "spicehost", &listenAddr) <
0)
- goto cleanup;
- if (listenAddr &&
- virDomainGraphicsListenSetAddress(graphics, 0, listenAddr,
- -1, true) < 0) {
- goto cleanup;
- }
- VIR_FREE(listenAddr);
-
- if (xenConfigGetULong(conf, "spicetls_port", &port, 0) < 0)
- goto cleanup;
- graphics->data.spice.tlsPort = (int)port;
-
- if (xenConfigGetULong(conf, "spiceport", &port, 0) < 0)
- goto cleanup;
-
- graphics->data.spice.port = (int)port;
-
- if (!graphics->data.spice.tlsPort &&
- !graphics->data.spice.port)
- graphics->data.spice.autoport = 1;
-
- if (xenConfigGetBool(conf, "spicedisable_ticketing", &val, 0)
< 0)
- goto cleanup;
- if (val) {
- if (xenConfigCopyStringOpt(conf, "spicepasswd",
- &graphics->data.spice.auth.passwd) <
0)
- goto cleanup;
- }
-
- if (xenConfigGetBool(conf, "spiceagent_mouse",
- &graphics->data.spice.mousemode, 0) < 0)
- goto cleanup;
- if (xenConfigGetBool(conf, "spicedvagent", &val, 0) < 0)
- goto cleanup;
- if (val) {
- if (xenConfigGetBool(conf, "spice_clipboard_sharing",
- &graphics->data.spice.copypaste,
- 0) < 0)
- goto cleanup;
- }
-
- if (VIR_ALLOC_N(def->graphics, 1) < 0)
- goto cleanup;
- def->graphics[0] = graphics;
- def->ngraphics = 1;
- }
- }
-
- return 0;
-
- cleanup:
- virDomainGraphicsDefFree(graphics);
- return -1;
-}
-
-
-void
-xenXLDiskParserError(xenXLDiskParserContext *dpc,
- const char *erroneous,
- const char *message)
-{
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("disk config %s not supported: %s"),
- erroneous, message);
-
- if (!dpc->err)
- dpc->err = EINVAL;
-}
-
-
-static int
-xenXLDiskParserPrep(xenXLDiskParserContext *dpc,
- const char *spec,
- virDomainDiskDefPtr disk)
-{
- int err;
-
- dpc->spec = spec;
- dpc->disk = disk;
- dpc->access_set = 0;
-
- err = xl_disk_lex_init_extra(dpc, &dpc->scanner);
- if (err)
- goto fail;
-
- dpc->buf = xl_disk__scan_bytes(spec, strlen(spec), dpc->scanner);
- if (!dpc->buf) {
- err = ENOMEM;
- goto fail;
- }
-
- return 0;
-
- fail:
- virReportSystemError(errno, "%s",
- _("failed to initialize disk configuration parser"));
- return err;
-}
-
-
-static void
-xenXLDiskParserCleanup(xenXLDiskParserContext *dpc)
-{
- if (dpc->buf) {
- xl_disk__delete_buffer(dpc->buf, dpc->scanner);
- dpc->buf = NULL;
- }
-
- if (dpc->scanner) {
- xl_disk_lex_destroy(dpc->scanner);
- dpc->scanner = NULL;
- }
-}
-
-
-/*
- * positional parameters
- * (If the <diskspec> strings are not separated by "="
- * the string is split following ',' and assigned to
- * the following options in the following order)
- * target,format,vdev,access
- * ================================================================
- *
- * The parameters below cannot be specified as positional parameters:
- *
- * other parameters
- * devtype = <devtype>
- * backendtype = <backend-type>
- * parameters not taken care of
- * backend = <domain-name>
- * script = <script>
- * direct-io-safe
- *
- * ================================================================
- * The parser does not take any deprecated parameters
- *
- * For more information refer to /xen/docs/misc/xl-disk-configuration.txt
- */
-static int
-xenParseXLDisk(virConfPtr conf, virDomainDefPtr def)
-{
- virConfValuePtr list = virConfGetValue(conf, "disk");
- xenXLDiskParserContext dpc;
- virDomainDiskDefPtr disk;
-
- memset(&dpc, 0, sizeof(dpc));
-
- if (list && list->type == VIR_CONF_LIST) {
- list = list->list;
- while (list) {
- char *disk_spec = list->str;
- const char *driver;
-
- if ((list->type != VIR_CONF_STRING) || (list->str == NULL))
- goto skipdisk;
-
- if (!(disk = virDomainDiskDefNew()))
- return -1;
-
- disk->src->readonly = 0;
- disk->src->format = VIR_STORAGE_FILE_LAST;
-
- if (xenXLDiskParserPrep(&dpc, disk_spec, disk))
- goto fail;
-
- xl_disk_lex(dpc.scanner);
-
- if (dpc.err)
- goto fail;
-
- if (disk->src->format == VIR_STORAGE_FILE_LAST)
- disk->src->format = VIR_STORAGE_FILE_RAW;
-
- if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
- disk->removable = true;
- disk->src->readonly = true;
- if (virDomainDiskSetDriver(disk, "qemu") < 0)
- goto fail;
-
- virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE);
- if (!disk->src->path || STREQ(disk->src->path,
""))
- disk->src->format = VIR_STORAGE_FILE_NONE;
- }
-
- if (STRPREFIX(disk->dst, "xvd") || !STREQ(def->os.type,
"hvm"))
- disk->bus = VIR_DOMAIN_DISK_BUS_XEN;
- else if (STRPREFIX(disk->dst, "sd"))
- disk->bus = VIR_DOMAIN_DISK_BUS_SCSI;
- else
- disk->bus = VIR_DOMAIN_DISK_BUS_IDE;
-
- driver = virDomainDiskGetDriver(disk);
- if (!driver) {
- switch (disk->src->format) {
- case VIR_STORAGE_FILE_QCOW:
- case VIR_STORAGE_FILE_QCOW2:
- case VIR_STORAGE_FILE_VHD:
- driver = "qemu";
- if (virDomainDiskSetDriver(disk, "qemu") < 0)
- goto fail;
- break;
- default:
- driver = "phy";
- if (virDomainDiskSetDriver(disk, "phy") < 0)
- goto fail;
- }
- }
-
- if (STREQ(driver, "phy"))
- virDomainDiskSetType(disk, VIR_STORAGE_TYPE_BLOCK);
- else
- virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE);
-
- if (VIR_APPEND_ELEMENT(def->disks, def->ndisks, disk) < 0)
- goto fail;
-
- skipdisk:
- list = list->next;
- xenXLDiskParserCleanup(&dpc);
- }
- }
- return 0;
-
- fail:
- xenXLDiskParserCleanup(&dpc);
- virDomainDiskDefFree(disk);
- return -1;
-}
-
-
-virDomainDefPtr
-xenParseXL(virConfPtr conf, virCapsPtr caps, int xendConfigVersion)
-{
- virDomainDefPtr def = NULL;
-
- if (VIR_ALLOC(def) < 0)
- return NULL;
-
- def->virtType = VIR_DOMAIN_VIRT_XEN;
- def->id = -1;
-
- if (xenParseConfigCommon(conf, def, caps, xendConfigVersion) < 0)
- goto cleanup;
-
- if (xenParseXLDisk(conf, def) < 0)
- goto cleanup;
-
- if (xenParseXLSpice(conf, def) < 0)
- goto cleanup;
-
- return def;
-
- cleanup:
- virDomainDefFree(def);
- return NULL;
-}
-
-
-static int
-xenFormatXLDisk(virConfValuePtr list, virDomainDiskDefPtr disk)
-{
- virBuffer buf = VIR_BUFFER_INITIALIZER;
- virConfValuePtr val, tmp;
- const char *src = virDomainDiskGetSource(disk);
- int format = virDomainDiskGetFormat(disk);
-
- /* target */
- virBufferAsprintf(&buf, "%s,", src);
- /* format */
- switch (format) {
- case VIR_STORAGE_FILE_RAW:
- virBufferAddLit(&buf, "raw,");
- break;
- case VIR_STORAGE_FILE_VHD:
- virBufferAddLit(&buf, "xvhd,");
- break;
- case VIR_STORAGE_FILE_QCOW:
- virBufferAddLit(&buf, "qcow,");
- break;
- case VIR_STORAGE_FILE_QCOW2:
- virBufferAddLit(&buf, "qcow2,");
- break;
- /* set default */
- default:
- virBufferAddLit(&buf, "raw,");
- }
-
- /* device */
- virBufferAdd(&buf, disk->dst, -1);
-
- virBufferAddLit(&buf, ",");
-
- if (disk->src->readonly)
- virBufferAddLit(&buf, "r,");
- else if (disk->src->shared)
- virBufferAddLit(&buf, "!,");
- else
- virBufferAddLit(&buf, "w,");
- if (disk->transient) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("transient disks not supported yet"));
- goto cleanup;
- }
-
- if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM)
- virBufferAddLit(&buf, "devtype=cdrom");
-
- if (virBufferCheckError(&buf) < 0)
- goto cleanup;
-
- if (VIR_ALLOC(val) < 0)
- goto cleanup;
-
- val->type = VIR_CONF_STRING;
- val->str = virBufferContentAndReset(&buf);
- tmp = list->list;
- while (tmp && tmp->next)
- tmp = tmp->next;
- if (tmp)
- tmp->next = val;
- else
- list->list = val;
- return 0;
-
- cleanup:
- virBufferFreeAndReset(&buf);
- return -1;
-}
-
-
-static int
-xenFormatXLDomainDisks(virConfPtr conf, virDomainDefPtr def)
-{
- virConfValuePtr diskVal = NULL;
- size_t i = 0;
-
- if (VIR_ALLOC(diskVal) < 0)
- return -1;
-
- diskVal->type = VIR_CONF_LIST;
- diskVal->list = NULL;
-
- for (i = 0; i < def->ndisks; i++) {
- if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY)
- continue;
- if (xenFormatXLDisk(diskVal, def->disks[i]) < 0)
-
- goto cleanup;
- }
-
- if (diskVal->list != NULL) {
- int ret = virConfSetValue(conf, "disk", diskVal);
- diskVal = NULL;
- if (ret < 0)
- goto cleanup;
- }
-
- return 0;
-
- cleanup:
- virConfFreeValue(diskVal);
- return 0;
-}
-
-
-static int
-xenFormatXLSpice(virConfPtr conf, virDomainDefPtr def)
-{
- const char *listenAddr = NULL;
-
- if (STREQ(def->os.type, "hvm")) {
- if (def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
- /* set others to false but may not be necessary */
- if (xenConfigSetInt(conf, "sdl", 0) < 0)
- return -1;
-
- if (xenConfigSetInt(conf, "vnc", 0) < 0)
- return -1;
-
- if (xenConfigSetInt(conf, "spice", 1) < 0)
- return -1;
-
- if (xenConfigSetInt(conf, "spiceport",
- def->graphics[0]->data.spice.port) < 0)
- return -1;
-
- if (xenConfigSetInt(conf, "spicetls_port",
- def->graphics[0]->data.spice.tlsPort) < 0)
- return -1;
-
- if (def->graphics[0]->data.spice.auth.passwd) {
- if (xenConfigSetInt(conf, "spicedisable_ticketing", 1) < 0)
- return -1;
-
- if (def->graphics[0]->data.spice.auth.passwd &&
- xenConfigSetString(conf, "spicepasswd",
- def->graphics[0]->data.spice.auth.passwd) < 0)
- return -1;
- }
-
- listenAddr = virDomainGraphicsListenGetAddress(def->graphics[0], 0);
- if (listenAddr &&
- xenConfigSetString(conf, "spicehost", listenAddr) < 0)
- return -1;
-
- if (xenConfigSetInt(conf, "spicemouse_mouse",
- def->graphics[0]->data.spice.mousemode) < 0)
- return -1;
-
- if (def->graphics[0]->data.spice.copypaste) {
- if (xenConfigSetInt(conf, "spicedvagent", 1) < 0)
- return -1;
- if (xenConfigSetInt(conf, "spice_clipboard_sharing",
- def->graphics[0]->data.spice.copypaste) < 0)
- return -1;
- }
- }
- }
-
- return 0;
-}
-
-
-virConfPtr
-xenFormatXL(virDomainDefPtr def, virConnectPtr conn, int xendConfigVersion)
-{
- virConfPtr conf = NULL;
-
- if (!(conf = virConfNew()))
- goto cleanup;
-
- if (xenFormatConfigCommon(conf, def, conn, xendConfigVersion) < 0)
- goto cleanup;
-
- if (xenFormatXLDomainDisks(conf, def) < 0)
- goto cleanup;
-
- if (xenFormatXLSpice(conf, def) < 0)
- goto cleanup;
-
- return conf;
-
- cleanup:
- if (conf)
- virConfFree(conf);
- return NULL;
-}
diff --git a/src/xenconfig/xen_xl.h b/src/xenconfig/xen_xl.h
deleted file mode 100644
index 536e9b7..0000000
--- a/src/xenconfig/xen_xl.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * xen_xl.h: Xen XL parsing functions
- *
- * 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
- * <
http://www.gnu.org/licenses/>.
- *
- * Author: Kiarie Kahurani<davidkiarie4(a)gmail.com>
- */
-
-#ifndef __VIR_XEN_XL_H__
-# define __VIR_XEN_XL_H__
-
-# include "virconf.h"
-# include "domain_conf.h"
-# include "xen_common.h"
-
-virDomainDefPtr xenParseXL(virConfPtr conn, virCapsPtr caps,
- int xendConfigVersion);
-virConfPtr xenFormatXL(virDomainDefPtr def,
- virConnectPtr, int xendConfigVersion);
-
-#endif /* __VIR_XEN_XL_H__ */
diff --git a/src/xenconfig/xen_xl_disk.l b/src/xenconfig/xen_xl_disk.l
deleted file mode 100644
index 164aa32..0000000
--- a/src/xenconfig/xen_xl_disk.l
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * xen_xl_disk.l - parser for disk specification strings
- *
- * Copyright (C) 2011 Citrix Ltd.
- * Author Ian Jackson <ian.jackson(a)eu.citrix.com>
- *
- * This program 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; version 2.1 only. with the special
- * exception on linking described in file LICENSE.
- *
- * This program 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.
- */
-
-/*
- * Parsing the old xm/xend/xl-4.1 disk specs is a tricky problem,
- * because the target string might in theory contain "," which is the
- * delimiter we use for stripping off things on the RHS, and ":",
- * which is the delimiter we use for stripping off things on the LHS.
- *
- * In this parser we do not support such target strings in the old
- * syntax; if the target string has to contain "," or ":" the new
- * syntax's "target=" should be used.
- */
-%{
-# include <config.h>
-
-# include <stdio.h>
-
-# include "viralloc.h"
-# include "virstoragefile.h"
-# include "virstring.h"
-# include "domain_conf.h"
-# include "xen_xl.h"
-# include "xen_xl_disk_i.h"
-
-#define YY_NO_INPUT
-#define VIR_FROM_THIS VIR_FROM_NONE
-
-/* Some versions of flex have a bug (Fedora bugzilla 612465) which causes
- * it to fail to declare these functions, which it defines. So declare
- * them ourselves. Hopefully we won't have to simultaneously support
- * a flex version which declares these differently somehow. */
-int xl_disk_lexget_column(yyscan_t yyscanner);
-void xl_disk_lexset_column(int column_no, yyscan_t yyscanner);
-
-
-/*----- useful macros and functions used in actions -----
- * we use macros in the actual rules to keep the actions short
- * and particularly to avoid repeating boilerplate values such as
- * DPC->disk, yytext, etc. */
-
-/* For actions whose patterns contain '=', finds the start of the value */
-#define FROMEQUALS (strchr(yytext,'=')+1)
-
-/* Chops the delimiter off, modifying yytext and yyleng. */
-#define STRIP(delim) do{ \
- if (yyleng>0 && yytext[yyleng-1]==(delim)) \
- yytext[--yyleng] = 0; \
- }while(0)
-
-/* Sets a string value, checking it hasn't been set already. */
-#define SAVESTRING(what,loc,val) do{ \
- savestring(DPC, what " respecified", &DPC->disk->loc, (val)); \
- }while(0)
-
-
-static void
-savestring(xenXLDiskParserContext *dpc,
- const char *what_respecified,
- char **update,
- const char *value)
-{
- if (*update) {
- if (**update) {
- xenXLDiskParserError(dpc, value, what_respecified);
- return;
- }
-
- VIR_FREE(*update); /* do not complain about overwriting empty strings */
- }
-
- ignore_value(VIR_STRDUP(*update, value));
-}
-
-#define DPC dpc /* our convention in lexer helper functions */
-
-/* Sets ->readwrite from the string. */
-static void
-setaccess(xenXLDiskParserContext *dpc, const char *str)
-{
- if (STREQ(str, "rw") || STREQ(str, "w")) {
- dpc->disk->src->readonly = 0;
- } else if (STREQ(str, "r") || STREQ(str, "ro")) {
- dpc->disk->src->readonly = 1;
- } else if (STREQ(str, "w!") || STREQ(str, "!")) {
- dpc->disk->src->readonly = 0;
- dpc->disk->src->shared = 1;
- } else {
- xenXLDiskParserError(dpc, str, "unknown value for access");
- }
- dpc->access_set = 1;
-}
-
-/* Sets ->format from the string. IDL should provide something for this. */
-static void
-setformat(xenXLDiskParserContext *dpc, const char *str)
-{
- if (STREQ(str, "") || STREQ(str, "raw"))
- virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_RAW);
- else if (STREQ(str, "qcow"))
- virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_QCOW);
- else if (STREQ(str, "qcow2"))
- virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_QCOW2);
- else if (STREQ(str, "vhd"))
- virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_VHD);
- else
- xenXLDiskParserError(dpc, str, "unknown value for format");
-}
-
-
-/* Sets ->backend from the string. IDL should provide something for this. */
-static void
-setdrivertype(xenXLDiskParserContext *dpc, const char *str)
-{
- if (STREQ(str, "phy"))
- ignore_value(virDomainDiskSetDriver(dpc->disk, "phy"));
- else if (STREQ(str, "tap"))
- ignore_value(virDomainDiskSetDriver(dpc->disk, "tap"));
- else if (STREQ(str, "file") || STREQ(str, ""))
- ignore_value(virDomainDiskSetDriver(dpc->disk, "qemu"));
- else
- xenXLDiskParserError(dpc, str, "unknown value for backendtype");
-}
-
-
-/* Handles a vdev positional parameter which includes a devtype. */
-static int
-vdev_and_devtype(xenXLDiskParserContext *dpc, char *str)
-{
- /* returns 1 if it was <vdev>:<devtype>, 0 (doing nothing) otherwise */
- char *colon = strrchr(str, ':');
- if (!colon)
- return 0;
-
- *colon++ = 0;
- SAVESTRING("vdev", dst, str);
-
- if (STREQ(colon,"cdrom")) {
- DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM;
- } else if (STREQ(colon, "disk")) {
- DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_DISK;
- } else {
- xenXLDiskParserError(DPC, colon, "unknown deprecated type");
- }
- return 1;
-}
-
-#undef DPC /* needs to be defined differently the actual lexer */
-#define DPC ((xenXLDiskParserContext*)yyextra)
-
-%}
-
-%option warn
-%option nodefault
-%option batch
-%option 8bit
-%option noyywrap
-%option reentrant
-%option nounput
-
-%x LEXERR
-
-%%
-
- /*----- the scanner rules which do the parsing -----*/
-
-[ \t\n]+/([^ \t\n].*)? { /* ignore whitespace before parameters */ }
-
- /* ordinary parameters setting enums or strings */
-
-format=[^,]*,? { STRIP(','); setformat(DPC, FROMEQUALS); }
-
-cdrom,? { DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM; }
-devtype=cdrom,? { DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM; }
-devtype=disk,? { DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_DISK; }
-devtype=[^,]*,? { xenXLDiskParserError(DPC, yytext,"unknown value for type");
}
-
-access=[^,]*,? { STRIP(','); setaccess(DPC, FROMEQUALS); }
-backendtype=[^,]*,? { STRIP(','); setdrivertype(DPC, FROMEQUALS); }
-
-vdev=[^,]*,? { STRIP(','); SAVESTRING("vdev", dst, FROMEQUALS); }
-
- /* the target magic parameter, eats the rest of the string */
-
-target=.* { STRIP(','); SAVESTRING("target", src->path, FROMEQUALS);
}
-
- /* unknown parameters */
-
-[a-z][-a-z0-9]*=[^,],? { xenXLDiskParserError(DPC, yytext, "unknown
parameter"); }
-
- /* the "/.*" in these patterns ensures that they count as if they
- * matched the whole string, so these patterns take precedence */
-
-(raw|qcow2?|vhd):/.* {
- STRIP(':');
- DPC->had_depr_prefix=1;
- setformat(DPC, yytext);
- }
-
-tapdisk:/.* { DPC->had_depr_prefix=1; }
-tap2?:/.* { DPC->had_depr_prefix=1; }
-aio:/.* { DPC->had_depr_prefix=1; }
-ioemu:/.* { DPC->had_depr_prefix=1; }
-file:/.* { DPC->had_depr_prefix=1; }
-phy:/.* { DPC->had_depr_prefix=1; }
-[a-z][a-z0-9]*:/([^a-z0-9].*)? {
- xenXLDiskParserError(DPC, yytext, "unknown deprecated disk prefix");
- return 0;
- }
-
- /* positional parameters */
-
-[^=,]*,|[^=,]+,? {
- STRIP(',');
-
- if (DPC->err) {
- /* previous errors may just lead to subsequent ones */
- } else if (!DPC->disk->src->path) {
- SAVESTRING("target", src->path, yytext);
- } else if (DPC->disk->src->format == VIR_STORAGE_FILE_LAST){
- setformat(DPC, yytext);
- }
- else if (!DPC->disk->dst) {
- if (!vdev_and_devtype(DPC, yytext))
- SAVESTRING("vdev", dst, yytext);
- } else if (!DPC->access_set) {
- DPC->access_set = 1;
- setaccess(DPC, yytext);
- } else {
- xenXLDiskParserError(DPC, yytext, "too many positional parameters");
- return 0; /* don't print any more errors */
- }
-}
-
-. {
- BEGIN(LEXERR);
- yymore();
-}
-<LEXERR>.* {
- xenXLDiskParserError(DPC, yytext, "bad disk syntax");
- return 0;
-}
diff --git a/src/xenconfig/xen_xl_disk_i.h b/src/xenconfig/xen_xl_disk_i.h
deleted file mode 100644
index 063dedf..0000000
--- a/src/xenconfig/xen_xl_disk_i.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * xen_xl_disk_i.h - common header for disk spec parser
- *
- * Copyright (C) 2011 Citrix Ltd.
- * Author Ian Jackson <ian.jackson(a)eu.citrix.com>
- *
- * This program 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; version 2.1 only. with the special
- * exception on linking described in file LICENSE.
- *
- * This program 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.
- */
-
-#ifndef __VIR_XEN_XL_DISK_I_H__
-# define __VIR_XEN_XL_DISK_I_H__
-
-# include "virconf.h"
-# include "domain_conf.h"
-
-
-typedef struct {
- int err;
- void *scanner;
- YY_BUFFER_STATE buf;
- virDomainDiskDefPtr disk;
- int access_set;
- int had_depr_prefix;
- const char *spec;
-} xenXLDiskParserContext;
-
-void xenXLDiskParserError(xenXLDiskParserContext *dpc,
- const char *erroneous,
- const char *message);
-
-#endif /* __VIR_XEN_XL_DISK_I_H__ */
--
1.8.4.5