On 02/08/2016 03:28 AM, Samuel Thibault wrote: > From: Yann Bordenave <[email protected]> > > 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 <[email protected]> > Signed-off-by: Samuel Thibault <[email protected]> > --- > 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
