qemu_command.h 6.7 KB
Newer Older
1 2 3
/*
 * qemu_command.h: QEMU command generation
 *
4
 * Copyright (C) 2006-2011 Red Hat, Inc.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
 * Copyright (C) 2006 Daniel P. Berrange
 *
 * 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, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
 *
 * Author: Daniel P. Berrange <berrange@redhat.com>
 */

#ifndef __QEMU_COMMAND_H__
# define __QEMU_COMMAND_H__

# include "domain_conf.h"
# include "command.h"
# include "capabilities.h"
# include "qemu_conf.h"
31
# include "qemu_domain.h"
32 33 34 35 36 37 38 39

/* Config type for XML import/export conversions */
# define QEMU_CONFIG_FORMAT_ARGV "qemu-argv"

# define QEMU_DRIVE_HOST_PREFIX "drive-"
# define QEMU_VIRTIO_SERIAL_PREFIX "virtio-serial"
# define QEMU_FSDEV_HOST_PREFIX "fsdev-"

40 41 42 43
# define QEMU_VNC_PORT_MIN  5900
# define QEMU_VNC_PORT_MAX  65535


44 45 46
virCommandPtr qemuBuildCommandLine(virConnectPtr conn,
                                   struct qemud_driver *driver,
                                   virDomainDefPtr def,
47
                                   virDomainChrSourceDefPtr monitor_chr,
48
                                   bool monitor_json,
49
                                   virBitmapPtr qemuCaps,
50
                                   const char *migrateFrom,
51
                                   int migrateFd,
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
                                   virDomainSnapshotObjPtr current_snapshot,
                                   enum virVMOperationType vmop)
    ATTRIBUTE_NONNULL(1);

/* With vlan == -1, use netdev syntax, else old hostnet */
char * qemuBuildHostNetStr(virDomainNetDefPtr net,
                           char type_sep,
                           int vlan,
                           const char *tapfd,
                           const char *vhostfd);

/* Legacy, pre device support */
char * qemuBuildNicStr(virDomainNetDefPtr net,
                       const char *prefix,
                       int vlan);

/* Current, best practice */
char * qemuBuildNicDevStr(virDomainNetDefPtr net,
70
                          int vlan,
71
                          virBitmapPtr qemuCaps);
72 73

char *qemuDeviceDriveHostAlias(virDomainDiskDefPtr disk,
74
                               virBitmapPtr qemuCaps);
75 76 77 78

/* Both legacy & current support */
char *qemuBuildDriveStr(virDomainDiskDefPtr disk,
                        int bootable,
79
                        virBitmapPtr qemuCaps);
80
char *qemuBuildFSStr(virDomainFSDefPtr fs,
81
                     virBitmapPtr qemuCaps);
82 83

/* Current, best practice */
84
char * qemuBuildDriveDevStr(virDomainDiskDefPtr disk,
85
                            virBitmapPtr qemuCaps);
86
char * qemuBuildFSDevStr(virDomainFSDefPtr fs,
87
                         virBitmapPtr qemuCaps);
88
/* Current, best practice */
89
char * qemuBuildControllerDevStr(virDomainControllerDefPtr def,
90
                                 virBitmapPtr qemuCaps);
91

92
char * qemuBuildWatchdogDevStr(virDomainWatchdogDefPtr dev,
93
                               virBitmapPtr qemuCaps);
94

95
char * qemuBuildMemballoonDevStr(virDomainMemballoonDefPtr dev,
96
                                 virBitmapPtr qemuCaps);
97 98 99

char * qemuBuildUSBInputDevStr(virDomainInputDefPtr dev);

100
char * qemuBuildSoundDevStr(virDomainSoundDefPtr sound,
101
                            virBitmapPtr qemuCaps);
102 103 104 105 106

/* Legacy, pre device support */
char * qemuBuildPCIHostdevPCIDevStr(virDomainHostdevDefPtr dev);
/* Current, best practice */
char * qemuBuildPCIHostdevDevStr(virDomainHostdevDefPtr dev,
107
                                 const char *configfd,
108
                                 virBitmapPtr qemuCaps);
109 110 111 112 113 114 115 116 117 118 119 120 121

int qemuOpenPCIConfig(virDomainHostdevDefPtr dev);

/* Legacy, pre device support */
char * qemuBuildUSBHostdevUsbDevStr(virDomainHostdevDefPtr dev);
/* Current, best practice */
char * qemuBuildUSBHostdevDevStr(virDomainHostdevDefPtr dev);



int qemuNetworkIfaceConnect(virConnectPtr conn,
                            struct qemud_driver *driver,
                            virDomainNetDefPtr net,
122
                            virBitmapPtr qemuCaps)
123 124 125 126 127
    ATTRIBUTE_NONNULL(1);

int qemuPhysIfaceConnect(virConnectPtr conn,
                         struct qemud_driver *driver,
                         virDomainNetDefPtr net,
128
                         virBitmapPtr qemuCaps,
129 130 131 132 133 134 135 136 137 138 139 140
                         const unsigned char *vmuuid,
                         enum virVMOperationType vmop);

int qemudCanonicalizeMachine(struct qemud_driver *driver,
                             virDomainDefPtr def);

virDomainDefPtr qemuParseCommandLine(virCapsPtr caps,
                                     const char **progenv,
                                     const char **progargv);
virDomainDefPtr qemuParseCommandLineString(virCapsPtr caps,
                                           const char *args);

141
int qemuDomainAssignPCIAddresses(virDomainDefPtr def);
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
qemuDomainPCIAddressSetPtr qemuDomainPCIAddressSetCreate(virDomainDefPtr def);
int qemuDomainPCIAddressReserveSlot(qemuDomainPCIAddressSetPtr addrs,
                                    int slot);
int qemuDomainPCIAddressReserveAddr(qemuDomainPCIAddressSetPtr addrs,
                                    virDomainDeviceInfoPtr dev);
int qemuDomainPCIAddressSetNextAddr(qemuDomainPCIAddressSetPtr addrs,
                                    virDomainDeviceInfoPtr dev);
int qemuDomainPCIAddressEnsureAddr(qemuDomainPCIAddressSetPtr addrs,
                                   virDomainDeviceInfoPtr dev);
int qemuDomainPCIAddressReleaseAddr(qemuDomainPCIAddressSetPtr addrs,
                                    virDomainDeviceInfoPtr dev);

void qemuDomainPCIAddressSetFree(qemuDomainPCIAddressSetPtr addrs);
int  qemuAssignDevicePCISlots(virDomainDefPtr def, qemuDomainPCIAddressSetPtr addrs);

int qemuDomainNetVLAN(virDomainNetDefPtr def);
int qemuAssignDeviceNetAlias(virDomainDefPtr def, virDomainNetDefPtr net, int idx);
159
int qemuAssignDeviceDiskAlias(virDomainDiskDefPtr def, virBitmapPtr qemuCaps);
160 161 162 163 164 165 166 167 168 169 170
int qemuAssignDeviceHostdevAlias(virDomainDefPtr def, virDomainHostdevDefPtr net, int idx);
int qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller);

int
qemuParseKeywords(const char *str,
                  char ***retkeywords,
                  char ***retvalues,
                  int allowEmptyValue);


#endif /* __QEMU_COMMAND_H__*/