Perform lazy guest address resolution for IPv6

Previously QEMU rejected IPv6 host-forward attempts that had an
unspecified guest address. This is because for IPv6 the guest's
IP address isn't necessarily known ahead of time: Libslirp only
provides a "stateless" DHCPv6 server, which if the macaddr is
random then the IPv6 address is random too.

This patch changes this to do the address resolution lazily, in the
hopes that the guest's IPv6 address is known at the time the user
wants to connect to the guest. The request can still fail if the
guest doesn't have an IPv6 address yet (e.g., it's still early in
the boot). Such requests are immediately rejected.

Signed-off-by: Doug Evans <dje@google.com>
6 files changed
tree: af431d9a9820c28ebc3a33d5215d5a1e1db3fbcc
  1. build-aux/
  2. src/
  3. .clang-format
  4. .gitignore
  5. .gitlab-ci.yml
  6. .gitpublish
  7. CHANGELOG.md
  8. COPYRIGHT
  9. meson.build
  10. meson_options.txt
  11. README.md
README.md

libslirp

libslirp is a user-mode networking library used by virtual machines, containers or various tools.

Getting Started

Prerequisites

A C compiler, meson and glib2 development libraries.

(see also .gitlab-ci.yml DEPS variable for the list of dependencies on Fedora)

Building

You may build and install the shared library with meson:

meson build
ninja -C build install

And configure QEMU with --enable-slirp=system to link against it.

(QEMU may build with the submodule static library using --enable-slirp=git)

Testing

Unfortunately, there are no automated tests available.

You may run QEMU -net user linked with your development version.

Contributing

Feel free to open issues on the project issues page.

You may clone the gitlab project and create a merge request.

Contributing with gitlab allows gitlab workflow, tracking issues, running CI etc.

Alternatively, you may send patches to slirp@lists.freedesktop.org mailing list.

Versioning

We intend to use libtool's versioning for the shared libraries and use SemVer for project versions.

For the versions available, see the tags on this repository.

License

See the COPYRIGHT file for details.