Marko Hauptvogel : iphlpapi: Implement icmpv6 create function.

Alexandre Julliard julliard at wine.codeweavers.com
Sat Sep 13 03:20:52 CDT 2014


Module: wine
Branch: master
Commit: f3fa809e50fbe5e38be03923f30e8e982f42dbcc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f3fa809e50fbe5e38be03923f30e8e982f42dbcc

Author: Marko Hauptvogel <marko.hauptvogel at googlemail.com>
Date:   Sun Sep  7 19:03:20 2014 +0200

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)




More information about the wine-cvs mailing list