Age | Commit message (Collapse) | Author | Files | Lines |
|
Fixes #70
|
|
Fixes #72
|
|
|
|
icmp: Handle ICMP packets as IPPROTO_IP on BSD
See merge request slirp/libslirp!133
|
|
In macOS, as already commented in this source file as well, packets from SOCK_DGRAM + IPPROTO_ICMP sockets include IP header while Linux doesn't not prepend the header.
Due to the discrepancy, in macOS, we need to handle received ICMP packets as if they are IP packets so that its IPv4 header gets stripped.
As pointed out in review comments, it appears CONFIG_BSD is no longer propagated from QEMU. This patch fixes the issue by detecting BSD (including macOS) by ourselves.
|
|
Sometimes ipq were casted to ipasfrag, and the original and casted
pointer were used simultaneously in ip_reass(). GCC 12.1.0 assumes
these pointers are not aliases, and therefore incorrectly the pointed
data will not be modified when it is actually modified with another
pointer.
To fix this problem, introduce a new type "ipas", which is a universal
type denoting an entry in the assembly queue and contains union for
specialization as queue head (frequently referred as "q" or "ipq" in
the source code) or IP fragment ("f" or "ipf").
This bug was found by Alexander Bulekov when fuzzing QEMU:
https://patchew.org/QEMU/20230129053316.1071513-1-alxndr@bu.edu/
The fixed test case is:
fuzz/crash_449dd4ad72212627fe3245c875f79a7033cc5382
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
While windows does not care for case, mingw does, and has all its header
lower case.
|
|
It is defined by BaseTsd.h as LONG_PTR, which is 32bit size on win32, and
64bit size on win64.
It seems that mingw rather uses int for the 32bit case, but better stick
to the MS definition, and int/LONG_PTR will be abi-compatible on 32bit.
Fixes #68
|
|
Detach UDP socket if errno is ENOTCONN (Socket is not connected)
Closes #65
See merge request slirp/libslirp!132
|
|
|
|
slirp: use localhost as dns when /etc/resolv.conf empty
Closes #25
See merge request slirp/libslirp!130
|
|
|
|
Fixes #64
|
|
|
|
rather than rejecting only when all of them are bogus.
Reported-by: Michael T <michael.gr220@gmail.com>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
|
|
Use target address from Neighbor Advertisement
See merge request slirp/libslirp!129
|
|
The IPv6 support in libslirp fails to work with any NDP proxy. The code
used to interpret the NA packets uses the wrong address to insert into
it's neighbor table, the address of the source of the packet, aka the
proxy itself.
However the NA packet got the real target address readily available.
Just use it directly instead.
Signed-off-by: Bastian Blank <waldi@debian.org>
|
|
Fix vmstate regression
See merge request slirp/libslirp!127
|
|
Commit e7362700b ("msvc: enable vmstate code on !gnuc") forgot to remove
HAVE_VMSTATE condition...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
Fixes #62
|
|
Fixes #63
|
|
msvc: enable vmstate code on !gnuc
See merge request slirp/libslirp!126
|
|
|
|
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
|
|
msvc fixes
Closes #60
See merge request slirp/libslirp!124
|
|
To be able to use typeof.
Fixes #60
|
|
|
|
The toolchain usually used there would typically completely fail to run
it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
It uses a saner strictly "from low to high bit" rule.
|
|
Since msvc provides the support through push/pop pragmas.
|
|
It doesn't have it.
|
|
|
|
and just revert to meson.project_version()
|
|
We can just write the macro on one line.
|
|
ncsi: Add Mellanox Get MAC Address handler
See merge request slirp/libslirp!125
|
|
Attempted to mirror the upstream Linux driver[1] as closely as reasonably
possible.
[1] https://github.com/torvalds/linux/blob/42226c989789d8da4af1de0c31070c96726d990c/net/ncsi/ncsi-rsp.c#L614-L638
Signed-off-by: Peter Delevoryas <pdel@fb.com>
|
|
If a network card supports NC-SI, then it redirects all traffic with the
out-of-band (OOB) management controller's (MC) ethernet address to the
out-of-band management controller, usually over some sideband RMII
interface, not like the PCIe connection to the main host.
It's also pretty common for the network card to provision the out-of-band
management controller's ethernet address. At startup, the OOB MC asks the
network card what its MAC address is through OEM NC-SI commands. This
protocol is so common that it's going to be standardized soon in NC-SI 1.2.0
[1] as "Get MC MAC Address".
Note: At some point, the network card may provision *multiple* OOB ethernet
addresses, but right now everything just uses one.
[1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0WIP80.pdf
Signed-off-by: Peter Delevoryas <pdel@fb.com>
|
|
This commit just sets up the OEM command handler to respond with
"unsupported" for now, as verified in the test.
Signed-off-by: Peter Delevoryas <pdel@fb.com>
|
|
Signed-off-by: Peter Delevoryas <pdel@fb.com>
|
|
In the Linux NC-SI driver[1], each response's length is validated with a
statically declared payload length, _unless_ it's an OEM command or some
more complicated NC-SI packet that you can't determine the length of just
from the "type" field, in which case it just uses the length provided by the
response's header.
To support OEM response handlers without requiring too many modifications we
can make the default payload length use the value specified in the handler
table, and then allow OEM handlers to override the length by modifying the
"length" in the response header within the handler implementation.
[1] https://github.com/torvalds/linux/blob/ec7f49619d8ee13e108740c82f942cd401b989e9/net/ncsi/ncsi-rsp.c#L1215-L1220
Signed-off-by: Peter Delevoryas <pdel@fb.com>
|
|
This change passes the command header as an additional read-only parameter
to each response handler so that they can make more response handling
descisions based on the command header fields. This is especially useful for
handling OEM NC-SI commands, or any protocol that's encapsulated in an NC-SI
header.
Signed-off-by: Peter Delevoryas <pdel@fb.com>
|
|
Windows Vista is not supported by its vendor anymore. Additionally,
glib uses 0x0601 as setting for _WIN32_WINNT since version 2.53.6
already, so unless libslirp is used with a very old version of glib,
we are depending on Windows 7 anyway.
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Message-Id: <20220516090410.39727-1-thuth@redhat.com>
|
|
ncsi: Add basic Get Version ID response
See merge request slirp/libslirp!122
|