[libvirt] [PATCHv2 4/4] qemu_conf: Introduce "migration_address"
Ján Tomko
jtomko at redhat.com
Thu Oct 10 14:02:33 UTC 2013
On 10/09/2013 03:32 PM, Michal Privoznik wrote:
> This configuration knob is there to override default listen address for
> -incoming for all qemu domains.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/qemu/libvirtd_qemu.aug | 3 +++
> src/qemu/qemu.conf | 6 ++++++
> src/qemu/qemu_conf.c | 2 ++
> src/qemu/qemu_conf.h | 3 +++
> src/qemu/qemu_driver.c | 7 +++++++
> src/qemu/test_libvirtd_qemu.aug.in | 1 +
> 6 files changed, 22 insertions(+)
>
> diff --git a/src/qemu/libvirtd_qemu.aug b/src/qemu/libvirtd_qemu.aug
> index cd13d53..591d78d 100644
> --- a/src/qemu/libvirtd_qemu.aug
> +++ b/src/qemu/libvirtd_qemu.aug
> @@ -78,6 +78,8 @@ module Libvirtd_qemu =
> | int_entry "keepalive_interval"
> | int_entry "keepalive_count"
>
> + let network_entry = str_entry "migration_address"
> +
> (* Each entry in the config is one of the following ... *)
> let entry = vnc_entry
> | spice_entry
> @@ -88,6 +90,7 @@ module Libvirtd_qemu =
> | process_entry
> | device_entry
> | rpc_entry
> + | network_entry
>
> let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
> let empty = [ label "#empty" . eol ]
> diff --git a/src/qemu/qemu.conf b/src/qemu/qemu.conf
> index 5fd6263..4403aaf 100644
> --- a/src/qemu/qemu.conf
> +++ b/src/qemu/qemu.conf
> @@ -424,3 +424,9 @@
> # Defaults to -1.
> #
> #seccomp_sandbox = 1
> +
> +
> +
> +# Override the listen address for all incoming migrations. Defaults to
> +# 0.0.0.0 or :: in case if both host and qemu are capable of IPv6.
> +#migration_address = "127.0.0.1"
> diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
> index 1a41caf..16a0b92 100644
> --- a/src/qemu/qemu_conf.c
> +++ b/src/qemu/qemu_conf.c
> @@ -546,6 +546,8 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
>
> GET_VALUE_LONG("seccomp_sandbox", cfg->seccompSandbox);
>
> + GET_VALUE_STR("migration_address", cfg->migrationAddress);
> +
> ret = 0;
>
> cleanup:
> diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
> index da29a2a..40adfce 100644
> --- a/src/qemu/qemu_conf.h
> +++ b/src/qemu/qemu_conf.h
> @@ -155,6 +155,9 @@ struct _virQEMUDriverConfig {
> unsigned int keepAliveCount;
>
> int seccompSandbox;
> +
> + /* The default for -incoming */
> + char *migrationAddress;
> };
>
> /* Main driver state */
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index e12a1de..7d87b2d 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -10264,6 +10264,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
> unsigned int flags)
> {
> virQEMUDriverPtr driver = dconn->privateData;
> + virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
You'll leak a reference to cfg if @flags or @params are invalid.
> virDomainDefPtr def = NULL;
> const char *dom_xml = NULL;
> const char *dname = NULL;
> @@ -10306,6 +10307,11 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
> if (virDomainMigratePrepare3ParamsEnsureACL(dconn, def) < 0)
> goto cleanup;
>
> + /* If no listenAddress has been passed via @params,
> + * use the one from qemu.conf */
> + if (!listenAddress)
> + listenAddress = cfg->migrationAddress;
> +
You can initialize listenAddress to this instead of NULL.
ACK with the leak fixed.
More information about the libvir-list
mailing list