[PATCH 2/4] iphlpapi: Implement icmpv6 create function
Marko Hauptvogel
marko.hauptvogel at googlemail.com
Thu Sep 11 14:41:10 CDT 2014
---
dlls/iphlpapi/icmp.c | 31 +++++++++++++++++++++++++++++++
dlls/iphlpapi/iphlpapi.spec | 2 +-
2 files changed, 32 insertions(+), 1 deletion(-)
-------------- next part --------------
From 2decd9a8266d142ac3d9e95047fa5d8abfd53e92 Mon Sep 17 00:00:00 2001
From: Marko Hauptvogel <marko.hauptvogel at googlemail.com>
Date: Sun, 7 Sep 2014 19:03:20 +0200
Subject: iphlpapi: Implement icmpv6 create function
---
dlls/iphlpapi/icmp.c | 31 +++++++++++++++++++++++++++++++
dlls/iphlpapi/iphlpapi.spec | 2 +-
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/dlls/iphlpapi/icmp.c b/dlls/iphlpapi/icmp.c
index abd8ddc..5ce758b 100644
--- a/dlls/iphlpapi/icmp.c
+++ b/dlls/iphlpapi/icmp.c
@@ -148,6 +148,37 @@ static int in_cksum(u_short *addr, int len)
*/
/***********************************************************************
+ * Icmp6CreateFile (IPHLPAPI.@)
+ */
+HANDLE WINAPI Icmp6CreateFile(VOID)
+{
+ icmp_t* icp;
+
+ int sid=socket(AF_INET6,SOCK_RAW,IPPROTO_ICMPV6);
+ if (sid < 0)
+ {
+ /* Mac OS X supports non-privileged ICMP via SOCK_DGRAM type. */
+ sid=socket(AF_INET6,SOCK_DGRAM,IPPROTO_ICMPV6);
+ }
+ if (sid < 0) {
+ ERR_(winediag)("Failed to use ICMPV6 (network ping), this requires special permissions.\n");
+ SetLastError(ERROR_ACCESS_DENIED);
+ return INVALID_HANDLE_VALUE;
+ }
+
+ icp=HeapAlloc(GetProcessHeap(), 0, sizeof(*icp));
+ if (icp==NULL) {
+ close(sid);
+ SetLastError(IP_NO_RESOURCES);
+ return INVALID_HANDLE_VALUE;
+ }
+ icp->sid=sid;
+ icp->default_opts.OptionsSize=IP_OPTS_UNKNOWN;
+ return (HANDLE)icp;
+}
+
+
+/***********************************************************************
* IcmpCreateFile (IPHLPAPI.@)
*/
HANDLE WINAPI IcmpCreateFile(VOID)
diff --git a/dlls/iphlpapi/iphlpapi.spec b/dlls/iphlpapi/iphlpapi.spec
index 9e66d67..9fb8ada 100644
--- a/dlls/iphlpapi/iphlpapi.spec
+++ b/dlls/iphlpapi/iphlpapi.spec
@@ -150,7 +150,7 @@
#@ stub GetUnicastIpAddressEntry
#@ stub GetUnicastIpAddressTable
@ stdcall GetUniDirectionalAdapterInfo( ptr ptr )
-#@ stub Icmp6CreateFile
+@ stdcall Icmp6CreateFile()
#@ stub Icmp6ParseReplies
#@ stub Icmp6SendEcho2
@ stdcall IcmpCloseHandle(ptr)
--
2.1.0
More information about the wine-patches
mailing list