Commit Graph

74 Commits

Author SHA1 Message Date
Eric Pouech d0833a0edf nsiproxy: Enable compilation with long types.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 11:37:40 +02:00
Eric Pouech 73974636bd nsiproxy: Add intermediate variables for sscanf on ULONG.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 11:37:36 +02:00
Eric Pouech ff51493574 nsiproxy: Don't use long types for local types.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 11:37:33 +02:00
Eric Pouech f34f38bc20 nsiproxy: Don't use long types in internal structure / helpers.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 11:37:30 +02:00
Paul Gofman 6ba4c31e9d nsiproxy: Avoid redundant pid mapping in tcp_conns_enumerate_all().
Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-23 18:42:13 +01:00
Eric Pouech 03ad57d2d0 nsiproxy.sys: Explicitly check for recvmsg() failure.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-11 09:31:46 +01:00
Alexandre Julliard f0cd33c69e include: Add support for defining Win32 types as 'long' where possible.
Add -DWINE_NO_LONG_TYPES to modules that still have compilation
warnings with long types.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 20:38:22 +01:00
Huw Davies 65f04bcc97 nsiproxy: Allow the name length to be IFNAMSIZ - 1.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52214
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-23 09:59:04 +01:00
Alex Henrie 06923f61e2 nsiproxy: Fix use after free in icmp_send_echo (scan-build).
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-21 10:26:43 +01:00
Alex Henrie cf7dd52091 nsiproxy: Fix memory leaks on error paths in get_ipv6_addr_scope_table (cppcheck).
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-20 10:13:52 +01:00
Alexandre Julliard e5d69d9ee6 configure: Assume that sys/ioctl.h is available on Unix.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-09 18:43:51 +01:00
Alexandre Julliard a7ac3de3b3 configure: Assume that sys/socket.h is available on Unix.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-09 18:43:51 +01:00
Alexandre Julliard 13ec7952e0 configure: Assume that unistd.h is available on Unix.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-09 18:43:51 +01:00
Alexandre Julliard f8faa8ced5 configure: Assume that dirent.h is available on Unix.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-09 18:43:50 +01:00
Gabriel Ivăncescu 215c9275a8 nsiproxy: Fill the reply with the exact ICMP_ECHO_REPLY in the output buffer.
Because iphlpapi has no opportunity to convert the reply in async mode.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-26 11:57:59 +01:00
Gabriel Ivăncescu 2b13a6be44 nsiproxy: Use a context and fill the reply using a family op.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-26 11:57:34 +01:00
Gabriel Ivăncescu 5cd42975c3 nsiproxy: Fill the reply when it's not pending on the unix-side.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-26 11:57:27 +01:00
Gabriel Ivăncescu 5e8bd4d38e nsiproxy: Move set_reply_ip_status to a family op.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-26 11:57:14 +01:00
Jacek Caban a7ecf08040 include: Don't use DECLSPEC_HIDDEN for NTSYSAPI in Unix libs.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 20:09:20 +02:00
Huw Davies 19a6d409c0 nsiproxy: Implement the ability to cancel the listener.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:31:48 +02:00
Huw Davies 881577deaf nsiproxy: Add support for parsing other icmp packets.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:31:47 +02:00
Huw Davies fffd222b3d nsiproxy: Parse any received ICMP_ECHO_REPLY.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:31:47 +02:00
Huw Davies aa73a91125 nsiproxy: Wait for an icmp reply.
This patch doesn't yet recv() that reply.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:31:47 +02:00
Huw Davies be0765ac26 nsiproxy: Pass the listen request off to a separate thread.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:31:47 +02:00
Huw Davies 20fb14bf27 nsiproxy: Introduce a unix-side handle returned by icmp_send_echo().
This represents the state of the icmp request for use on the PE-side.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 15:51:24 +02:00
Huw Davies aa4e0d466b nsiproxy: Actually send the ICMP ECHO request.
However, don't yet wait for the reply.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 15:51:02 +02:00
Huw Davies f59a64144b nsiproxy: Introduce IOCTL_NSIPROXY_WINE_ICMP_ECHO.
With this patch the irp is simply marked as pending and transferred to
the request thread which completes the irp with STATUS_NOT_SUPPORTED.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 15:50:34 +02:00
Huw Davies 7ed25b6c16 nsiproxy: Let the general dispatch function update the irp's status.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 15:50:18 +02:00
Huw Davies ef45e11918 nsiproxy: Rename private unixlib header to unix_private.h.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 15:50:08 +02:00
Huw Davies 37097b9687 nsiproxy: Build with msvcrt.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 16:43:26 +02:00
Huw Davies f6917badf1 nsiproxy: Switch memory allocations to malloc().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 16:39:55 +02:00
Huw Davies 280999aee2 nsiproxy: Use an ascii version of str(n)casecmp() instead of _strnicmp().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 16:39:53 +02:00
Huw Davies 7199f32c0b nsiproxy: Use a pthread_mutex to guard the interface list.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 16:39:50 +02:00
Alexandre Julliard 6ba7773121 makefiles: Add a -mcygwin flag to specify the inverse of -mno-cygwin.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:45:48 +02:00
Zebediah Figura f18d72ac18 nsiproxy: Return the IOSB status from nsi_ioctl().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-13 11:30:25 +02:00
Gerald Pfeifer fa6e791ca5 nsiproxy: Include sys/param.h from udp.c.
udp.c features specific code to handle versions of FreeBSD past early
12.0 snapshots. This is guarded by a check on __FreeBSD_version which
is defined in sys/param.h. Actually including that, like tcp.c already
does, activates that check and adjusted code and unbreaks the build.

Signed-off-by: Gerald Pfeifer <gerald@FreeBSD.org>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-07 10:17:07 +02:00
Zebediah Figura bd1aed5319 nsiproxy: Return STATUS_BUFFER_OVERFLOW to signal short buffers.
STATUS_MORE_ENTRIES is used for directory enumeration APIs, and signals that a
continuation will be returned on the next call.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:57:23 +02:00
Gerald Pfeifer a1cc71207c nsiproxy: Include sys/queue.h from tcp.c.
In what looks like a change between FreeBSD 11 and later versions
(FreeBSD 12 and 13), we now need to explicitly include sys/queue.h
to avoid

  In file included from dlls/nsiproxy.sys/tcp.c:42:
  /usr/include/netinet/tcp_var.h:516:2: error:
  expected specifier-qualifier-list before 'TAILQ_ENTRY'
  516 | TAILQ_ENTRY(tcptw)  tw_2msl;

Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-25 10:39:41 +02:00
Gerald Pfeifer f153ce2dab nsiproxy: Include netinet/in.h in udp.c.
This is necessary to define struct in_addr which is used by
netinet/ip.h on FreeBSD.

Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 11:48:54 +02:00
Gerald Pfeifer c5d9f2f7c6 nsiproxy: Add $(PROCSTAT_LIBS) to EXTRALIBS.
We try to use libprocstat on non-Linux platforms and detect its
presence in the configure phase. Make sure we actually link this
library in that case by adding $(PROCSTAT_LIBS) to EXTRALIBS.

Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-20 17:34:56 +02:00
Gerald Pfeifer 070185c341 nsiproxy: Include sys/types.h from udp.c.
This addresses failures like

  In file included from dlls/nsiproxy.sys/udp.c:34:
  In file included from /usr/include/sys/socketvar.h:38:
  In file included from /usr/include/sys/selinfo.h:36:
  /usr/include/sys/event.h:77:2: error: unknown type name 'u_short'

on non-Linux platforms.

Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-20 17:34:56 +02:00
Gerald Pfeifer b13c024d64 nsiproxy: Include stddef.h.
This is needed for size_t, which on FreeBSD is used by sys/sysctl.h.

Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 11:15:59 +02:00
Gerald Pfeifer 823532bd3a nsiproxy: Include netinet/in_pcb.h.
Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 11:15:52 +02:00
Gerald Pfeifer 20c4149e72 nsiproxy: Include sys/param.h.
This fixes

  In file included from dlls/nsiproxy.sys/tcp.c:70:
  /usr/include/libprocstat.h:130:36: error: 'SPECNAMELEN' undeclared here
  130 |         char            vn_devname[SPECNAMELEN + 1];

on FreeBSD 11 and presumably other targets.

Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 11:15:32 +02:00
Huw Davies d6278ea021 nsiproxy: Implement UDP stats get_all_parameters.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-18 11:07:39 +02:00
Huw Davies 7841c8af1a nsiproxy: Implement UDP endpoint enumerate_all.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-18 11:07:20 +02:00
Huw Davies e152d40641 nsiproxy: Add support for TCP pid lookup.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-17 11:43:20 +02:00
Huw Davies 40a60061d7 nsiproxy: Add support for IPv6 scope ids.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-17 11:43:18 +02:00
Huw Davies 14fc764756 nsiproxy: Implement TCP connections enumerate_all.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-17 11:43:15 +02:00
Damjan Jovanovic 047da144c7 nsiproxy: Include netinet/ip_var.h.
netinet/tcp_var.h has an undefined TAILQ_ENTRY macro on FreeBSD otherwise.

Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:38:30 +02:00