aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-05-13vmstate: only enable when building under GNU CmsvcSamuel Thibault3-1/+14
To be able to use typeof. Fixes #24604
2022-05-11Merge branch 'iana' into 'master'Samuel Thibault4-7/+30
ncsi: Add basic Get Version ID response See merge request slirp/libslirp!122
2022-05-11ncsi: Add Get Version ID commandPeter Delevoryas1-1/+12
Get Version ID is one of the first commands used in NC-SI, because BMC's use a lot of OEM NC-SI extensions, and you need to query the device's manufacturer through Get Version ID before you can decide which OEM NC-SI extensions to use. The response format is documented in the NC-SI spec[1]. We're just setting the NC-SI version supported to 1.0.0 (BCD-encoded[2]) and returning the manufacturer's ID in network byte-order. [1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.0.0.pdf [2] https://en.wikipedia.org/wiki/Binary-coded_decimal Signed-off-by: Peter Delevoryas <pdel@fb.com>
2022-05-11ncsi: Pass Slirp structure to response handlersPeter Delevoryas1-5/+5
This will let us use Slirp fields to generate more interesting NC-SI responses. Signed-off-by: Peter Delevoryas <pdel@fb.com>
2022-05-11slirp: Add manufacturer's IDPeter Delevoryas3-1/+13
The manufacturer's ID is used in NC-SI commands such as "Get Version ID" [1]. It is also essential to providing a path towards adding OEM (non-standardized) NC-SI commands. This field should be derived from the IANA Private Enterprise Numbers list, per the NC-SI specification. It may be useful for things besides NC-SI, but NC-SI responses for BMC's in QEMU are the main use case I have in mind. Note: I did not add this attribute to slirp_init, since it is deprecated. [1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.0.0.pdf [2] https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers Signed-off-by: Peter Delevoryas <pdel@fb.com>
2022-05-08Merge branch 'haiku' into 'master'Samuel Thibault1-0/+4
Add support for Haiku to meson.build See merge request slirp/libslirp!123
2022-05-08Add support for Haiku to meson.buildIvan Holmes1-0/+4
2022-05-04Merge branch 'warnings' into 'master'Samuel Thibault3-4/+7
win32: declare some local functions as static See merge request slirp/libslirp!121
2022-05-04meson: add extra warningsPaolo Bonzini1-0/+3
Enable extra warnings based no what QEMU uses. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-05-04win32: declare some local functions as staticPaolo Bonzini2-4/+4
These functions do not have a prototype and are not meant to be public. Declare them as static. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-05-02Merge branch 'inet6_bsd' into 'master'Samuel Thibault1-1/+3
Include <sys/socket.h> and <arpa/inet.h> for AF_INET6 and inet_pton Closes #58 See merge request slirp/libslirp!120
2022-05-01Include <sys/socket.h> and <arpa/inet.h> for AF_INET6 and inet_ptonSamuel Thibault1-1/+3
Fixes #58
2022-04-27Merge branch '4.7' into 'master'Marc-André Lureau2-2/+24
Release v4.7.0 See merge request slirp/libslirp!119
2022-04-26Release v4.7.0v4.7.0Marc-André Lureau2-2/+24
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-04-25Merge branch 'opaque-timer' into 'master'Marc-André Lureau9-32/+100
Support for CFI See merge request slirp/libslirp!117
2022-04-11bump ABI version and agePaolo Bonzini1-3/+3
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-04-11slirp: invoke client callback before creating timersPaolo Bonzini6-6/+12
The introduction of .timer_new_opaque adds an interesting conundrum. The Slirp* needs to be stored in .timer_new_opaque so that it can be passed back to slirp_handle_timer, but it is not returned by slirp_new and slirp_init until after the first call to .timer_new_opaque (which is in ip6_init). This is a problem for programs that, like QEMU, use more than one Slirp*. Fix them by passing the Slirp* to a callback before slirp_new returns, and initializing the timer afterwards. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-04-10pingtest: port to timer_new_opaquePaolo Bonzini1-8/+8
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-04-10introduce timer_new_opaque callbackPaolo Bonzini4-1/+38
Add a new callback that supports CFI better by avoiding having function pointers in the external libslirp API. Instead, the new API passes an opaque integer and requests the application to call a new libslirp function when the timer expires. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-04-10introduce slirp_timer_new wrapperPaolo Bonzini5-6/+30
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>
2022-04-10icmp6: make ndp_send_ra staticPaolo Bonzini2-12/+13
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-03-20Add sanitizers CI runsSamuel Thibault1-1/+19
2022-03-04Merge branch 'handle-econnaborted' into 'master'Samuel Thibault1-2/+2
Handle ECONNABORTED from recv See merge request slirp/libslirp!116
2022-03-04socket: Handle ECONNABORTED from recvRich1-2/+2
recv can return ECONNABORTED due to a time-out on the socket. The socket is no longer useable once it enters this state.
2022-02-17Merge branch 'bootp-has-prefix' into 'master'Samuel Thibault1-1/+1
bootp: fix g_str_has_prefix warning/critical See merge request slirp/libslirp!115
2022-02-17bootp: fix g_str_has_prefix warning/criticalMarc-André Lureau1-1/+1
Fixes: commit 60535013c3e ("bootp: add support for UEFI HTTP boot") Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-02-11slirp: Don't duplicate packet in tcp_reassBrett Nash1-3/+0
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>
2022-02-11Rename insque/remque -> slirp_[ins|rem]queBrett Nash10-56/+51
Avoid a macro translation when not needed, and potentially doing really weird things to headers.
2022-02-10Merge branch 'debug-fix' into 'master'Marc-André Lureau2-2/+2
mbuf: Use SLIRP_DEBUG to enable mbuf debugging instead of DEBUG See merge request slirp/libslirp!114
2022-02-10mbuf: Use SLIRP_DEBUG to enable mbuf debugging instead of DEBUG Brett Nash2-2/+2
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>
2022-02-09Replace inet_ntoa() with safer inet_ntop()Marc-André Lureau4-17/+29
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>
2022-02-02Merge branch 'libslirp-vmsend' into 'master'Samuel Thibault1-0/+4
Add VMS_END marker See merge request slirp/libslirp!112
2022-02-02Add VMS_END markerDr. David Alan Gilbert1-0/+4
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>
2022-01-25Merge branch 'vendor-class-id' into 'master'Samuel Thibault2-0/+24
bootp: add support for UEFI HTTP boot See merge request slirp/libslirp!111
2022-01-25bootp: add support for UEFI HTTP bootIgnat Korchagin2-0/+24
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>
2022-01-24Merge branch 'dns6' into 'master'Samuel Thibault1-4/+131
IPv6 DNS proxying support Closes #55 See merge request slirp/libslirp!110
2022-01-24IPv6 DNS proxying supportNoah1-4/+131
2022-01-23Add missing scope_id in cachingSamuel Thibault1-7/+24
2021-12-12Drop fixed TODOSamuel Thibault1-1/+0
2021-12-12Merge branch 'hostfwd-unix' into 'master'Samuel Thibault2-8/+156
Support Unix sockets in hostfwd See merge request slirp/libslirp!103
2021-11-30socket: Move closesocket(so->s_aux) to sofreeNicholas Ngai3-6/+4
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
2021-11-29socket: Check so_type instead of so_tcpcb for Unix-to-inet translationNicholas Ngai1-3/+22
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
2021-11-29Merge branch 'master' into hostfwd-unixNicholas Ngai15-44/+613
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
2021-11-29socket: Add s_aux field to struct socket for storing auxilliary socketNicholas Ngai4-2/+11
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
2021-11-30Merge branch 'init-so-type' into 'master'Samuel Thibault8-12/+13
socket: Initialize so_type in socreate See merge request slirp/libslirp!109
2021-11-29socket: Initialize so_type in socreateNicholas Ngai8-12/+13
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
2021-11-27socket: Allocate Unix-to-TCP hostfwd port from OS by binding to port 0Nicholas Ngai1-4/+73
Signed-off-by: Nicholas Ngai <nicholas@ngai.me>
2021-11-20Merge branch 'disable-dhcp' into 'master'Samuel Thibault4-2/+13
Allow to disable internal DHCP server See merge request slirp/libslirp!22
2021-11-18Allow to disable internal DHCP serverRafael Gieschke4-2/+13
Setting `cfg->disable_dhcp` to `true` will disable the internal DHCP server. Signed-off-by: Rafael Gieschke <rafael@gieschke.de>
2021-11-11Merge branch 'pingtest' into 'master'Samuel Thibault2-0/+496
pingtest: Add a trivial ping test See merge request slirp/libslirp!91