svn path=/trunk/; revision=72747
HANDLE WINAPI Icmp6CreateFile(VOID)
{
icmp_t* icp;
HANDLE WINAPI Icmp6CreateFile(VOID)
{
icmp_t* icp;
+ int sid;
+#ifdef __REACTOS__
+ WSADATA wsaData;
- int sid=socket(AF_INET6,SOCK_RAW,IPPROTO_ICMPV6);
+ if (WSAStartup(MAKEWORD(2, 2), &wsaData) != ERROR_SUCCESS)
+ {
+ ERR_(winediag)("Failed to use ICMPV6 (network ping), this requires special permissions.\n");
+ return INVALID_HANDLE_VALUE;
+ }
+#endif
+
+ sid=socket(AF_INET6,SOCK_RAW,IPPROTO_ICMPV6);
#ifndef __REACTOS__
if (sid < 0)
{
#ifndef __REACTOS__
if (sid < 0)
{
if (icp==NULL) {
#ifdef __REACTOS__
closesocket(sid);
if (icp==NULL) {
#ifdef __REACTOS__
closesocket(sid);
static int once;
#endif
icmp_t* icp;
static int once;
#endif
icmp_t* icp;
+ int sid;
+#ifdef __REACTOS__
+ WSADATA wsaData;
- int sid=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
+ if (WSAStartup(MAKEWORD(2, 2), &wsaData) != ERROR_SUCCESS)
+ {
+ ERR_(winediag)("Failed to use ICMPV6 (network ping), this requires special permissions.\n");
+ return INVALID_HANDLE_VALUE;
+ }
+#endif
+ sid=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
#ifdef __REACTOS__
if (sid < 0) {
ERR_(winediag)("Failed to use ICMP (network ping), this requires special permissions.\n");
#ifdef __REACTOS__
if (sid < 0) {
ERR_(winediag)("Failed to use ICMP (network ping), this requires special permissions.\n");
if (icp==NULL) {
#ifdef __REACTOS__
closesocket(sid);
if (icp==NULL) {
#ifdef __REACTOS__
closesocket(sid);
#else
if (sid >= 0) close(sid);
#endif
#else
if (sid >= 0) close(sid);
#endif
if (icp->sid >= 0) close(icp->sid);
#endif
HeapFree(GetProcessHeap (), 0, icp);
if (icp->sid >= 0) close(icp->sid);
#endif
HeapFree(GetProcessHeap (), 0, icp);
+#ifdef __REACTOS__
+ WSACleanup();
+#endif
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls( hinstDLL );
interfaceMapInit();
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls( hinstDLL );
interfaceMapInit();
- WSAStartup(MAKEWORD(2, 2), &wsaData);
break;
case DLL_PROCESS_DETACH:
break;
case DLL_PROCESS_DETACH:
interfaceMapFree();
break;
}
interfaceMapFree();
break;
}