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