#include <ctype.h> #include <errno.h> #include <unistd.h> #include "monitor/monitor.h" #include "qemu/sockets.h" #include "qemu/main-loop.h" #ifndef AI_ADDRCONFIG # define AI_ADDRCONFIG 0 #endif /* used temporarily until all users are converted to QemuOpts */ QemuOptsList socket_optslist = { .name = "socket", .head = QTAILQ_HEAD_INITIALIZER(socket_optslist.head), .desc = { { .name = "path", .type = QEMU_OPT_STRING, },{ .name = "host", .type = QEMU_OPT_STRING, },{ .name = "port", .type = QEMU_OPT_STRING, },{ .name = "to", .type = QEMU_OPT_NUMBER, },{ .name = "ipv4",
if (segment_name) { qdict_put(options, ARCHIPELAGO_OPT_SEGMENT, qstring_from_str(segment_name)); g_free(segment_name); } if (mport != NoPort) { qdict_put(options, ARCHIPELAGO_OPT_MPORT, qint_from_int(mport)); } if (vport != NoPort) { qdict_put(options, ARCHIPELAGO_OPT_VPORT, qint_from_int(vport)); } } static QemuOptsList archipelago_runtime_opts = { .name = "archipelago", .head = QTAILQ_HEAD_INITIALIZER(archipelago_runtime_opts.head), .desc = { { .name = ARCHIPELAGO_OPT_VOLUME, .type = QEMU_OPT_STRING, .help = "Name of the volume image", }, { .name = ARCHIPELAGO_OPT_SEGMENT, .type = QEMU_OPT_STRING, .help = "Name of the Archipelago shared memory segment", }, { .name = ARCHIPELAGO_OPT_MPORT, .type = QEMU_OPT_NUMBER, .help = "Archipelago mapperd port number"
#include "qemu-common.h" #include "qemu-error.h" #include "qemu-option.h" #include "qemu-config.h" #include "sysemu.h" #include "hw/qdev.h" QemuOptsList qemu_drive_opts = { .name = "drive", .head = QTAILQ_HEAD_INITIALIZER(qemu_drive_opts.head), .desc = { { .name = "bus", .type = QEMU_OPT_NUMBER, .help = "bus number", },{ .name = "unit", .type = QEMU_OPT_NUMBER, .help = "unit number (i.e. lun for scsi)", },{ .name = "if", .type = QEMU_OPT_STRING, .help = "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)", },{ .name = "index", .type = QEMU_OPT_NUMBER, },{ .name = "cyls", .type = QEMU_OPT_NUMBER, .help = "number of cylinders (ide disk geometry)", },{
} static void qemu_rbd_memset(RADOSCB *rcb, int64_t offs) { if (LIBRBD_USE_IOVEC) { RBDAIOCB *acb = rcb->acb; iov_memset(acb->qiov->iov, acb->qiov->niov, offs, 0, acb->qiov->size - offs); } else { memset(rcb->buf + offs, 0, rcb->size - offs); } } static QemuOptsList runtime_opts = { .name = "rbd", .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), .desc = { { .name = "pool", .type = QEMU_OPT_STRING, .help = "Rados pool name", }, { .name = "image", .type = QEMU_OPT_STRING, .help = "Image name in the pool", }, { .name = "conf", .type = QEMU_OPT_STRING, .help = "Rados config file location",
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #include "block/snapshot.h" #include "block/block_int.h" #include "qapi/qmp/qerror.h" QemuOptsList internal_snapshot_opts = { .name = "snapshot", .head = QTAILQ_HEAD_INITIALIZER(internal_snapshot_opts.head), .desc = { { .name = SNAPSHOT_OPT_ID, .type = QEMU_OPT_STRING, .help = "snapshot id" },{ .name = SNAPSHOT_OPT_NAME, .type = QEMU_OPT_STRING, .help = "snapshot name" },{ /* end of list */ } }, };
#include <unistd.h> #include "qemu_socket.h" #include "qemu-common.h" /* for qemu_isdigit */ #ifndef AI_ADDRCONFIG # define AI_ADDRCONFIG 0 #endif static int sockets_debug = 0; static const int on=1, off=0; /* used temporarely until all users are converted to QemuOpts */ static QemuOptsList dummy_opts = { .name = "dummy", .head = QTAILQ_HEAD_INITIALIZER(dummy_opts.head), .desc = { { .name = "path", .type = QEMU_OPT_STRING, },{ .name = "host", .type = QEMU_OPT_STRING, },{ .name = "port", .type = QEMU_OPT_STRING, },{ .name = "to", .type = QEMU_OPT_NUMBER, },{ .name = "ipv4",
return -1; } data->blk = blk_new_open(data->filename, NULL, NULL, BDRV_O_RDWR | BDRV_O_PROTOCOL, errp); if (!data->blk) { return -1; } return 0; } static QemuOptsList block_crypto_runtime_opts_luks = { .name = "crypto", .head = QTAILQ_HEAD_INITIALIZER(block_crypto_runtime_opts_luks.head), .desc = { { .name = BLOCK_CRYPTO_OPT_LUKS_KEY_SECRET, .type = QEMU_OPT_STRING, .help = "ID of the secret that provides the encryption key", }, { /* end of list */ } }, }; static QemuOptsList block_crypto_create_opts_luks = { .name = "crypto", .head = QTAILQ_HEAD_INITIALIZER(block_crypto_create_opts_luks.head), .desc = {
* 9p * * This work is licensed under the terms of the GNU GPL, version 2 or * later. See the COPYING file in the top-level directory. */ #include "qemu/osdep.h" #include "qemu/config-file.h" #include "qemu/option.h" #include "qemu/module.h" #include "qemu/throttle-options.h" static QemuOptsList qemu_fsdev_opts = { .name = "fsdev", .implied_opt_name = "fsdriver", .head = QTAILQ_HEAD_INITIALIZER(qemu_fsdev_opts.head), .desc = { { .name = "fsdriver", .type = QEMU_OPT_STRING, }, { .name = "path", .type = QEMU_OPT_STRING, }, { .name = "security_model", .type = QEMU_OPT_STRING, }, { .name = "writeout", .type = QEMU_OPT_STRING, }, { .name = "readonly",
return EPERM; case NBD_EIO: return EIO; case NBD_ENOMEM: return ENOMEM; case NBD_ENOSPC: return ENOSPC; case NBD_EINVAL: default: return EINVAL; } } /* Definitions for opaque data types */ static QTAILQ_HEAD(, NBDExport) exports = QTAILQ_HEAD_INITIALIZER(exports); /* That's all folks */ /* Basic flow for negotiation Server Client Negotiate or Server Client Negotiate #1 Option Negotiate #2
#include "qemu-common.h" #include "qemu-error.h" #include "qemu-option.h" #include "qemu-config.h" #include "hw/qdev.h" static QemuOptsList qemu_drive_opts = { .name = "drive", .head = QTAILQ_HEAD_INITIALIZER(qemu_drive_opts.head), .desc = { { .name = "bus", .type = QEMU_OPT_NUMBER, .help = "bus number", },{ .name = "unit", .type = QEMU_OPT_NUMBER, .help = "unit number (i.e. lun for scsi)", },{ .name = "if", .type = QEMU_OPT_STRING, .help = "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)", },{ .name = "index", .type = QEMU_OPT_NUMBER, .help = "index number", },{ .name = "cyls", .type = QEMU_OPT_NUMBER, .help = "number of cylinders (ide disk geometry)", },{
* This work is licensed under the terms of the GNU GPL, version 2 or later. * See the COPYING file in the top-level directory. */ #include "qemu/osdep.h" #include <glib.h> #include "qemu/config-file.h" /* qemu_add_opts() */ #include "qemu/option.h" /* qemu_opts_parse() */ #include "qapi/opts-visitor.h" /* opts_visitor_new() */ #include "test-qapi-visit.h" /* visit_type_UserDefOptions() */ #include "qapi/dealloc-visitor.h" /* qapi_dealloc_visitor_new() */ static QemuOptsList userdef_opts = { .name = "userdef", .head = QTAILQ_HEAD_INITIALIZER(userdef_opts.head), .desc = { { 0 } } /* validated with OptsVisitor */ }; /* fixture (= glib test case context) and test case manipulation */ typedef struct OptsVisitorFixture { UserDefOptions *userdef; Error *err; } OptsVisitorFixture; static void setup_fixture(OptsVisitorFixture *f, gconstpointer test_data) { const char *opts_string = test_data;
static const cmdinfo_t open_cmd = { .name = "open", .altname = "o", .cfunc = open_f, .argmin = 1, .argmax = -1, .flags = CMD_NOFILE_OK, .args = "[-Crsn] [-o options] [path]", .oneline = "open the file specified by path", .help = open_help, }; static QemuOptsList empty_opts = { .name = "drive", .head = QTAILQ_HEAD_INITIALIZER(empty_opts.head), .desc = { /* no elements => accept any params */ { /* end of list */ } }, }; static int open_f(BlockDriverState *bs, int argc, char **argv) { int flags = 0; int readonly = 0; int growable = 0; int c; QemuOpts *qopts; QDict *opts = NULL;
#define ACPI_TABLE_HDR_SIZE sizeof(struct acpi_table_header) #define ACPI_TABLE_PFX_SIZE sizeof(uint16_t) /* size of the extra prefix */ static const char unsigned dfl_hdr[ACPI_TABLE_HDR_SIZE - ACPI_TABLE_PFX_SIZE] = "QEMU\0\0\0\0\1\0" /* sig (4), len(4), revno (1), csum (1) */ "QEMUQEQEMUQEMU\1\0\0\0" /* OEM id (6), table (8), revno (4) */ "QEMU\1\0\0\0" /* ASL compiler ID (4), version (4) */ ; char unsigned *acpi_tables; size_t acpi_tables_len; static QemuOptsList qemu_acpi_opts = { .name = "acpi", .implied_opt_name = "data", .head = QTAILQ_HEAD_INITIALIZER(qemu_acpi_opts.head), .desc = { { 0 } } /* validated with OptsVisitor */ }; static void acpi_register_config(void) { qemu_add_opts(&qemu_acpi_opts); } opts_init(acpi_register_config); static int acpi_checksum(const uint8_t *data, int len) { int sum, i; sum = 0; for (i = 0; i < len; i++) {
inet->host = g_strdup(bindto); if (port) { inet->port = g_strdup(port); } else { inet->port = g_strdup_printf("%d", NBD_DEFAULT_PORT); } } return saddr; } static QemuOptsList file_opts = { .name = "file", .implied_opt_name = "file", .head = QTAILQ_HEAD_INITIALIZER(file_opts.head), .desc = { /* no elements => accept any params */ { /* end of list */ } }, }; static QemuOptsList qemu_object_opts = { .name = "object", .implied_opt_name = "qom-type", .head = QTAILQ_HEAD_INITIALIZER(qemu_object_opts.head), .desc = { { } }, };
static struct { const char *manufacturer, *version, *serial, *asset, *sku; } type3; static struct { const char *sock_pfx, *manufacturer, *version, *serial, *asset, *part; } type4; static struct { const char *loc_pfx, *bank, *manufacturer, *serial, *asset, *part; } type17; static QemuOptsList qemu_smbios_opts = { .name = "smbios", .head = QTAILQ_HEAD_INITIALIZER(qemu_smbios_opts.head), .desc = { /* * no elements => accept any params * validation will happen later */ { /* end of list */ } } }; static const QemuOptDesc qemu_smbios_file_opts[] = { { .name = "file", .type = QEMU_OPT_STRING, .help = "binary file containing an SMBIOS element", },
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. */ #include "qemu/osdep.h" #include "block/block_int.h" #include "qapi/error.h" #include "qemu/option.h" static QemuOptsList raw_create_opts = { .name = "raw-create-opts", .head = QTAILQ_HEAD_INITIALIZER(raw_create_opts.head), .desc = { { .name = BLOCK_OPT_SIZE, .type = QEMU_OPT_SIZE, .help = "Virtual disk size" }, { /* end of list */ } } }; static int raw_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue, Error **errp) { return 0; }
#endif #ifdef CONFIG_TRACE_LOG #include "qemu/log.h" #endif #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/config-file.h" #include "monitor/monitor.h" int trace_events_enabled_count; bool trace_events_dstate[TRACE_EVENT_COUNT]; QemuOptsList qemu_trace_opts = { .name = "trace", .implied_opt_name = "enable", .head = QTAILQ_HEAD_INITIALIZER(qemu_trace_opts.head), .desc = { { .name = "enable", .type = QEMU_OPT_STRING, }, { .name = "events", .type = QEMU_OPT_STRING, },{ .name = "file", .type = QEMU_OPT_STRING, }, { /* end of list */ } }, };
#include "include/exec/cpu-common.h" /* for RAM_ADDR_FMT */ #include "qapi-visit.h" #include "qapi/opts-visitor.h" #include "qapi/dealloc-visitor.h" #include "qapi/qmp/qerror.h" #include "hw/boards.h" #include "sysemu/hostmem.h" #include "qmp-commands.h" #include "hw/mem/pc-dimm.h" #include "qemu/option.h" #include "qemu/config-file.h" QemuOptsList qemu_numa_opts = { .name = "numa", .implied_opt_name = "type", .head = QTAILQ_HEAD_INITIALIZER(qemu_numa_opts.head), .desc = { { 0 } } /* validated with OptsVisitor */ }; static int have_memdevs = -1; static int max_numa_nodeid; /* Highest specified NUMA node ID, plus one. * For all nodes, nodeid < max_numa_nodeid */ int nb_numa_nodes; NodeInfo numa_info[MAX_NODES]; static void numa_node_parse(NumaNodeOptions *node, QemuOpts *opts, Error **errp) { uint16_t nodenr; uint16List *cpus = NULL;
"and the identities held by your ssh-agent"); out: if (agent != NULL) { /* Note: libssh2 implementation implicitly calls * libssh2_agent_disconnect if necessary. */ libssh2_agent_free(agent); } return ret; } static QemuOptsList ssh_runtime_opts = { .name = "ssh", .head = QTAILQ_HEAD_INITIALIZER(ssh_runtime_opts.head), .desc = { { .name = "host", .type = QEMU_OPT_STRING, .help = "Host to connect to", }, { .name = "port", .type = QEMU_OPT_NUMBER, .help = "Port to connect to", }, { .name = "path", .type = QEMU_OPT_STRING, .help = "Path of the image on the host",
&& retries-- > 0); if (task == NULL || task->status != SCSI_STATUS_GOOD) { error_report("iSCSI: failed to send readcapacity10 command."); ret = -EINVAL; } if (task) { scsi_free_scsi_task(task); } return ret; } /* TODO Convert to fine grained options */ static QemuOptsList runtime_opts = { .name = "iscsi", .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), .desc = { { .name = "filename", .type = QEMU_OPT_STRING, .help = "URL to the iscsi image", }, { /* end of list */ } }, }; /* * We support iscsi url's on the form * iscsi://[<username>%<password>@]<host>[:<port>]/<targetname>/<lun> */ static int iscsi_open(BlockDriverState *bs, QDict *options, int flags)
#include "qemu-common.h" #include "qemu-option.h" #include "qemu-config.h" #include "sysemu.h" #include "hw/qdev.h" QemuOptsList qemu_drive_opts = { .name = "drive", .head = QTAILQ_HEAD_INITIALIZER(qemu_drive_opts.head), .desc = { { .name = "bus", .type = QEMU_OPT_NUMBER, .help = "bus number", },{ .name = "unit", .type = QEMU_OPT_NUMBER, .help = "unit number (i.e. lun for scsi)", },{ .name = "if", .type = QEMU_OPT_STRING, .help = "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)", },{ .name = "index", .type = QEMU_OPT_NUMBER, },{ .name = "cyls", .type = QEMU_OPT_NUMBER, .help = "number of cylinders (ide disk geometry)", },{ .name = "heads",
error_setg(errp, "blkverify requires raw copy and original image path"); return; } /* TODO Implement option pass-through and set raw.filename here */ raw_path = qstring_from_substr(filename, 0, c - filename - 1); qdict_put(options, "x-raw", raw_path); /* TODO Allow multi-level nesting and set file.filename here */ filename = c + 1; qdict_put(options, "x-image", qstring_from_str(filename)); } static QemuOptsList runtime_opts = { .name = "blkverify", .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), .desc = { { .name = "x-raw", .type = QEMU_OPT_STRING, .help = "[internal use only, will be removed]", }, { .name = "x-image", .type = QEMU_OPT_STRING, .help = "[internal use only, will be removed]", }, { /* end of list */ } }, };
* Copyright (C) 2014 Leandro Dorileo <*****@*****.**> * * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. * See the COPYING.LIB file in the top-level directory. */ #include "qapi/error.h" #include "qapi/qmp/qstring.h" #include "qemu/config-file.h" #include <glib.h> #include <string.h> static QemuOptsList opts_list_01 = { .name = "opts_list_01", .head = QTAILQ_HEAD_INITIALIZER(opts_list_01.head), .desc = { { .name = "str1", .type = QEMU_OPT_STRING, },{ .name = "str2", .type = QEMU_OPT_STRING, },{ .name = "str3", .type = QEMU_OPT_STRING, },{ .name = "number1", .type = QEMU_OPT_NUMBER, }, { /* end of list */ }