Linux's unprivileged ICMP sockets are completely broken in Wine, and radically differ from MacOS's. Linux doesn't provide IP headers but reports some of the IP header data in the recvmsg() ancillary data, overwrites icmp_id with its own value (a "port" number you can bind() to but can't getsockname()), and on error MSG_ERRQUEUE reads the offending packet's ICMP instead of the reply's while ancillary data provides some of the reply's ICMP fields.
This patch fixes these issues and gets Linux's parody implementation to a largely functional level.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=8332 Signed-off-by: Damjan Jovanovic damjan.jov@gmail.com --- dlls/iphlpapi/icmp.c | 173 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 168 insertions(+), 5 deletions(-)