Age | Commit message (Collapse) | Author | Files | Lines |
|
In order to support CFI, we would like to avoid passing function pointers out of
libslirp, and instead use opaque integers for the timer callbacks. This patch
introduces an internal API for creating a timer that is based on such a timer
callback.
For now, it receives the id (SLIRP_TIMER_RA is the only one) and calls
slirp->cb->timer_new. The prototype of ra_timer_handler is changed slightly
to fit better with the next patch which introduces a new libslirp function,
to be called on timer expiration.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
|
Handle ECONNABORTED from recv
See merge request slirp/libslirp!116
|
|
recv can return ECONNABORTED due to a time-out on the socket. The socket is no longer useable once it enters this state.
|
|
bootp: fix g_str_has_prefix warning/critical
See merge request slirp/libslirp!115
|
|
Fixes: commit 60535013c3e ("bootp: add support for UEFI HTTP boot")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
When debug is enabled, we duplicate the packet in tcp_reass, but ti is still
pointing to the old buffer, resulting in a use after free.
This makes valgrind debugging a little trickier, but makes it
crash a lot less.
Signed-off-by: Brett Nash <nash@fb.com>
|
|
Avoid a macro translation when not needed, and potentially doing really
weird things to headers.
|
|
mbuf: Use SLIRP_DEBUG to enable mbuf debugging instead of DEBUG
See merge request slirp/libslirp!114
|
|
DEBUG is set by a number of IDEs and development environments (*cough*
xcode *cough*). This means we use mbuf duplication when we don't need
(or expect) it. Change the name to SLIRP_DEBUG to enable this feature.
Signed-off-by: Pablo Fiori <pablofiori@fb.com>
Signed-off-by: Brett Nash <nash@fb.com>
|
|
inet_ntoa() returns a static pointer which is subject to safety issues.
Use the recommended alternative.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
Add VMS_END marker
See merge request slirp/libslirp!112
|
|
The migration VMSTATE_END_OF_LIST marker relies on a NULL field
to mark th eend of a list; that's a bit delicate when the marker is
forgotten and the code hits a NULL by luck.
Use an explicit flag to mark the end as well.
See: https://lists.gnu.org/archive/html/qemu-devel/2022-01/msg03025.html
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
bootp: add support for UEFI HTTP boot
See merge request slirp/libslirp!111
|
|
Current bootp implementation is only one step away from supporting UEFI HTTP
boot in QEMU. The only missing bit is that the UEFI specification [1] requires
a vendor class identifier option (num 60) set to "HTTPClient" string present
in the DHCP response.
OVMF [2] indeed ignores the DHCP response and considers UEFI HTTP boot as
failed, if this option is not present.
With this change one would be able to configure QEMU user networking like
below:
$ qemu ... -nic user,tftp=tftp-root,bootfile=http://10.0.2.2/ipxe.efi
and boot the VM using UEFI HTTP boot instead of TFTP.
[1]: https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf
[2]: https://github.com/tianocore/edk2/tree/5302bd81d9ba0c9e7f2371a81c438ec919ec8e1e/OvmfPkg
Signed-off-by: Ignat Korchagin <ignat@cloudflare.com>
|
|
IPv6 DNS proxying support
Closes #55
See merge request slirp/libslirp!110
|
|
|
|
|
|
|
|
Support Unix sockets in hostfwd
See merge request slirp/libslirp!103
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
socket: Initialize so_type in socreate
See merge request slirp/libslirp!109
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Allow to disable internal DHCP server
See merge request slirp/libslirp!22
|
|
Setting `cfg->disable_dhcp` to `true` will disable the internal DHCP server.
Signed-off-by: Rafael Gieschke <rafael@gieschke.de>
|
|
pingtest: Add a trivial ping test
See merge request slirp/libslirp!91
|
|
icmp: Support falling back on trying a SOCK_RAW socket
See merge request slirp/libslirp!92
|
|
|
|
CI: run integration tests with slirp4netns
Closes #50
See merge request slirp/libslirp!107
|
|
Fix issue 50
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
resolv: fix IPv6 resolution on Darwin
See merge request slirp/libslirp!104
|
|
QEMU has an issue open
(https://gitlab.com/qemu-project/qemu/-/issues/347) to forward a Unix
domain socket to guest TCP port. Both of these protocols support stream
modes of operation (and user-mode networking can only access the stream
anyway), so this patch enables Unix-to-TCP hostfwds.
Like with localhost hostfwds, the sotranslate_accept function will
translate a Unix domain socket connection to a TCP connection
originating from vhost_addr and a randomized ephemeral port.
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
|
|
res_sockaddr_union() has a field for IPv4 and a field for IPv6. When we
used `&servers[i].sin.sin_addr`, it does not return the right address
for IPv6.
|
|
On NetBSD, the sockaddr size passed to getnameinfo must match the
family.
(reworked from the patch suggestion from Yorick Hardy)
Fixes #52
|
|
Initialize sin6_scope_id to zero
See merge request slirp/libslirp!102
|
|
sin6_scope_id is not explicitly set to zero in tcp_input() which should be OK
for global IPv6 addresses, but seems to fail on Mac OS: if sin6_scope_id ends up
with a value other than zero for global addresses, connect() will fail with "No
route to host".
Tested on Mac OS v11.5.2 but might be an issue on other versions as well.
Signed-off-by: Saar Gross <saar@fb.com>
Signed-off-by: Mohan Kumar Kumar <mohankm@fb.com>
|
|
We do not need the socket to be exposed outside the localhost, and this
reduces the attack surface.
Suggested-by: Akihiro Suda <suda.kyoto@gmail.com>
|
|
resolv: fix memory leak when using libresolv
See merge request slirp/libslirp!100
|
|
|
|
Haiku: proper path to resolv.conf for DNS server
See merge request slirp/libslirp!99
|
|
|