Commit Graph

67 Commits

Author SHA1 Message Date
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
Huw Davies c9680e8991 nsiproxy: Implement TCP stats get_all_parameters.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-13 11:38:12 +02:00
Huw Davies ab31bf5d8c nsiproxy: Add an #ifdef guard for SIN_ROUTER.
It's not defined in FreeBSD.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-13 11:38:08 +02:00
Huw Davies 8f37560faf nsiproxy: Don't use the key size to determine the address family as it can be zero.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:30:21 +02:00
Huw Davies cf434fa313 nsiproxy: Implement IPv6 icmpstats get_all_parameters on linux.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:30:21 +02:00
Huw Davies 23ee1ebea6 nsiproxy: Implement IPv4 icmpstats get_all_parameters.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:30:21 +02:00
Huw Davies a784950260 nsiproxy: Implement IP compartment get_all_paramters.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 23:00:50 +02:00
Huw Davies 68498fc3e9 nsiproxy: Implement IPv6 ipstats get_all_parameters on linux.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 23:00:50 +02:00