[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCHv7 9/9] qapi-schema, qemu-options & slirp: Adding
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCHv7 9/9] qapi-schema, qemu-options & slirp: Adding Qemu options for IPv6 addresses |
Date: |
Mon, 8 Feb 2016 15:12:05 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 |
On 02/08/2016 03:28 AM, Samuel Thibault wrote:
> From: Yann Bordenave <address@hidden>
>
> This patch adds parameters to manage some new options in the qemu -net
> command.
> Slirp IPv6 address, network prefix, and DNS IPv6 address can be given in
> argument to the qemu command.
> Defaults parameters are respectively fec0::2, fec0::, /64 and fec0::3.
>
> Signed-off-by: Yann Bordenave <address@hidden>
> Signed-off-by: Samuel Thibault <address@hidden>
> ---
> net/net.c | 31 +++++++++++++++++++++++++++++++
> net/slirp.c | 50 ++++++++++++++++++++++++++++++++++++++++++++------
> qapi-schema.json | 40 ++++++++++++++++++++++++++--------------
> qemu-options.hx | 18 ++++++++++++++++--
> slirp/libslirp.h | 8 +++++---
> slirp/slirp.c | 16 +++++++++-------
> 6 files changed, 131 insertions(+), 32 deletions(-)
>
> diff --git a/net/net.c b/net/net.c
> index c5e414f..0ececcb 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -1060,6 +1060,37 @@ int net_client_init(QemuOpts *opts, int is_netdev,
> Error **errp)
> int ret = -1;
>
> {
> + /* Parse convenience option format ip6-net=fec0::0[/64] */
> + const char *ip6_net = qemu_opt_get(opts, "ip6-net");
> +
> + if (ip6_net) {
> + char buf[strlen(ip6_net)+1];
Spaces around binary '+'
> +
> + if (get_str_sep(buf, sizeof(buf), &ip6_net, '/') < 0) {
> + /* Default 64bit prefix length. */
> + qemu_opt_set(opts, "ip6-prefix", ip6_net, &error_abort);
> + qemu_opt_set_number(opts, "ip6-prefixlen", 64, &error_abort);
> + } else {
> + /* User-specified prefix length. */
> + int len;
> + char *end;
> +
> + qemu_opt_set(opts, "ip6-prefix", buf, &error_abort);
> + len = strtol(ip6_net, &end, 10);
> +
> + if (*end != '\0') {
> + error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
> + "ip6-prefix", "a number");
> + } else {
> + qemu_opt_set_number(opts, "ip6-prefixlen", len,
> + &error_abort);
> + }
Incorrect use of strtol() (you failed to check for overflow, which
requires priming errno to 0). I recommend using qemu_strtol() instead,
as it does the grunt work for you and is harder to use incorrectly.
> +++ b/qapi-schema.json
> @@ -2399,6 +2399,14 @@
> # @dnssearch: #optional list of DNS suffixes to search, passed as DHCP option
> # to the guest
> #
> +# @ip6-prefix: #optional IPv6 network prefix (since 2.6)
> +#
> +# @ip6-prefixlen: #optional IPv6 network prefix length (since 2.6)
Would be worth mentioning the default values.
> +#
> +# @ip6-host: #optional guest-visible IPv6 address of the host (since 2.6)
> +#
> +# @ip6-dns: #optional guest-visible IPv6 address of the virtual nameserver
> (since 2.6)
> +#
> # @smb: #optional root directory of the built-in SMB server
> #
> # @smbserver: #optional IP address of the built-in SMB server
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
[Qemu-devel] [PATCHv7 3/9] slirp: Adding IPv6 UDP support, Samuel Thibault, 2016/02/08