[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