Author: akhaldi
Date: Fri Dec  4 10:57:44 2015
New Revision: 70262

URL: http://svn.reactos.org/svn/reactos?rev=70262&view=rev
Log:
[ICMP][IPHLPAPI] Move the icmp functions to iphlpapi where they belong. Brought 
to you by Tim Crawford with my fixes. CORE-10498

Added:
    trunk/reactos/dll/win32/iphlpapi/icmp.c
      - copied, changed from r70261, trunk/reactos/dll/win32/icmp/icmp_main.c
    trunk/reactos/dll/win32/iphlpapi/ip.h
      - copied unchanged from r70261, trunk/reactos/dll/win32/icmp/ip.h
    trunk/reactos/dll/win32/iphlpapi/ip_icmp.h
      - copied unchanged from r70261, trunk/reactos/dll/win32/icmp/ip_icmp.h
Removed:
    trunk/reactos/dll/win32/icmp/icmp_main.c
    trunk/reactos/dll/win32/icmp/ip.h
    trunk/reactos/dll/win32/icmp/ip_icmp.h
Modified:
    trunk/reactos/dll/win32/icmp/CMakeLists.txt
    trunk/reactos/dll/win32/icmp/icmp.rc
    trunk/reactos/dll/win32/icmp/icmp.spec
    trunk/reactos/dll/win32/iphlpapi/CMakeLists.txt
    trunk/reactos/dll/win32/iphlpapi/iphlpapi.spec
    trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c
    trunk/reactos/media/doc/README.WINE

Modified: trunk/reactos/dll/win32/icmp/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/CMakeLists.txt?rev=70262&r1=70261&r2=70262&view=diff
==============================================================================
--- trunk/reactos/dll/win32/icmp/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/icmp/CMakeLists.txt [iso-8859-1] Fri Dec  4 
10:57:44 2015
@@ -1,15 +1,12 @@
 
-include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
-spec2def(icmp.dll icmp.spec ADD_IMPORTLIB)
+spec2def(icmp.dll icmp.spec)
 
 list(APPEND SOURCE
-    icmp_main.c
     icmp.rc
     ${CMAKE_CURRENT_BINARY_DIR}/icmp_stubs.c
     ${CMAKE_CURRENT_BINARY_DIR}/icmp.def)
 
 add_library(icmp SHARED ${SOURCE})
 set_module_type(icmp win32dll)
-target_link_libraries(icmp wine)
-add_importlibs(icmp ws2_32 msvcrt kernel32 ntdll)
+add_importlibs(icmp iphlpapi msvcrt kernel32 ntdll)
 add_cd_file(TARGET icmp DESTINATION reactos/system32 FOR all)

Modified: trunk/reactos/dll/win32/icmp/icmp.rc
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/icmp.rc?rev=70262&r1=70261&r2=70262&view=diff
==============================================================================
--- trunk/reactos/dll/win32/icmp/icmp.rc        [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/icmp/icmp.rc        [iso-8859-1] Fri Dec  4 
10:57:44 2015
@@ -1 +1,5 @@
-#include <wine/wine_common_ver.rc>
+#define REACTOS_VERSION_DLL
+#define REACTOS_STR_FILE_DESCRIPTION "ICMP DLL"
+#define REACTOS_STR_INTERNAL_NAME "icmp.dll"
+#define REACTOS_STR_ORIGINAL_FILENAME "icmp.dll"
+#include <reactos/version.rc>

Modified: trunk/reactos/dll/win32/icmp/icmp.spec
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/icmp.spec?rev=70262&r1=70261&r2=70262&view=diff
==============================================================================
--- trunk/reactos/dll/win32/icmp/icmp.spec      [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/icmp/icmp.spec      [iso-8859-1] Fri Dec  4 
10:57:44 2015
@@ -1,8 +1,9 @@
-@ stdcall IcmpCloseHandle(ptr)
-@ stdcall IcmpCreateFile()
-@ stub  IcmpParseReplies
-@ stub  IcmpSendEcho2
-@ stdcall IcmpSendEcho(ptr long ptr long ptr ptr long long)
-@ stub  do_echo_rep
-@ stub  do_echo_req
-@ stub  register_icmp
+
+1 stdcall IcmpCloseHandle(ptr) iphlpapi.IcmpCloseHandle
+2 stdcall IcmpCreateFile() iphlpapi.IcmpCreateFile
+3 stdcall IcmpParseReplies(ptr long) iphlpapi.IcmpParseReplies
+4 stdcall IcmpSendEcho2(ptr ptr ptr ptr long ptr long ptr ptr long long) 
iphlpapi.IcmpSendEcho2
+5 stdcall IcmpSendEcho(ptr long ptr long ptr ptr long long) 
iphlpapi.IcmpSendEcho
+6 stub do_echo_rep
+7 stub do_echo_req
+8 stub register_icmp

Removed: trunk/reactos/dll/win32/icmp/icmp_main.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/icmp_main.c?rev=70261
==============================================================================
--- trunk/reactos/dll/win32/icmp/icmp_main.c    [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/icmp/icmp_main.c    (removed)
@@ -1,536 +0,0 @@
-/*
- * ICMP
- *
- * Francois Gouget, 1999, based on the work of
- *   RW Hall, 1999, based on public domain code PING.C by Mike Muus (1983)
- *   and later works (c) 1989 Regents of Univ. of California - see copyright
- *   notice at end of source-code.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-/* Future work:
- * - Systems like FreeBSD don't seem to support the IP_TTL option and maybe 
others.
- *   But using IP_HDRINCL and building the IP header by hand might work.
- * - Not all IP options are supported.
- * - Are ICMP handles real handles, i.e. inheritable and all? There might be 
some
- *   more work to do here, including server side stuff with synchronization.
- * - Is it correct to use malloc for the internal buffer, for allocating the
- *   handle's structure?
- * - This API should probably be thread safe. Is it really?
- * - Using the winsock functions has not been tested.
- */
-
-#define WIN32_NO_STATUS
-#define _INC_WINDOWS
-#define COM_NO_WINDOWS_H
-
-#include <config.h>
-
-#include <sys/types.h>
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_NETINET_IN_SYSTM_H
-# include <netinet/in_systm.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
-#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-#endif
-#include <stdarg.h>
-//#include <string.h>
-//#include <errno.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-
-#include <windef.h>
-#include <winbase.h>
-//#include "winerror.h"
-#include <ipexport.h>
-//#include <ws2tcpip.h>
-//#include "icmpapi.h"
-#include <wine/debug.h>
-
-/* Set up endiannes macros for the ip and ip_icmp BSD headers */
-#ifndef BIG_ENDIAN
-#define BIG_ENDIAN       4321
-#endif
-#ifndef LITTLE_ENDIAN
-#define LITTLE_ENDIAN    1234
-#endif
-#ifndef BYTE_ORDER
-#ifdef WORDS_BIGENDIAN
-#define BYTE_ORDER       BIG_ENDIAN
-#else
-#define BYTE_ORDER       LITTLE_ENDIAN
-#endif
-#endif /* BYTE_ORDER */
-
-#define u_int16_t  WORD
-#define u_int32_t  DWORD
-
-/* These are BSD headers. We use these here because they are needed on
- * libc5 Linux systems. On other platforms they are usually simply more
- * complete than the native stuff, and cause less portability problems
- * so we use them anyway.
- */
-#include "ip.h"
-#include "ip_icmp.h"
-
-
-WINE_DEFAULT_DEBUG_CHANNEL(icmp);
-
-
-typedef struct {
-    int sid;
-    IP_OPTION_INFORMATION default_opts;
-} icmp_t;
-
-#define IP_OPTS_UNKNOWN     0
-#define IP_OPTS_DEFAULT     1
-#define IP_OPTS_CUSTOM      2
-
-/* The sequence number is unique process wide, so that all threads
- * have a distinct sequence number.
- */
-static LONG icmp_sequence=0;
-
-static int in_cksum(u_short *addr, int len)
-{
-    int nleft=len;
-    u_short *w = addr;
-    int sum = 0;
-    u_short answer = 0;
-
-    while (nleft > 1) {
-        sum += *w++;
-        nleft -= 2;
-    }
-
-    if (nleft == 1) {
-        *(u_char *)(&answer) = *(u_char *)w;
-        sum += answer;
-    }
-
-    sum = (sum >> 16) + (sum & 0xffff);
-    sum  += (sum >> 16);
-    answer = ~sum;
-    return(answer);
-}
-
-
-
-/*
- * Exported Routines.
- */
-
-BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
-{
-  WSADATA wsaData;
-
-  switch (fdwReason) {
-    case DLL_PROCESS_ATTACH:
-      WSAStartup(MAKEWORD(2, 2), &wsaData);
-      break;
-
-    case DLL_PROCESS_DETACH:
-      WSACleanup();
-      break;
-  }
-  return TRUE;
-}
-
-/***********************************************************************
- *             IcmpCreateFile (ICMP.@)
- */
-HANDLE WINAPI IcmpCreateFile(VOID)
-{
-    icmp_t* icp;
-
-    int sid=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
-    if (sid < 0) {
-        MESSAGE("WARNING: Trying to use ICMP (network ping) will fail unless 
running as root\n");
-        SetLastError(ERROR_ACCESS_DENIED);
-        return INVALID_HANDLE_VALUE;
-    }
-
-    icp=HeapAlloc(GetProcessHeap(), 0, sizeof(*icp));
-    if (icp==NULL) {
-        closesocket(sid);
-        SetLastError(IP_NO_RESOURCES);
-        return INVALID_HANDLE_VALUE;
-    }
-    icp->sid=sid;
-    icp->default_opts.OptionsSize=IP_OPTS_UNKNOWN;
-    return (HANDLE)icp;
-}
-
-
-/***********************************************************************
- *             IcmpCloseHandle (ICMP.@)
- */
-BOOL WINAPI IcmpCloseHandle(HANDLE  IcmpHandle)
-{
-    icmp_t* icp=(icmp_t*)IcmpHandle;
-    if (IcmpHandle==INVALID_HANDLE_VALUE) {
-        /* FIXME: in fact win98 seems to ignore the handle value !!! */
-        SetLastError(ERROR_INVALID_HANDLE);
-        return FALSE;
-    }
-
-    shutdown(icp->sid,2);
-    HeapFree(GetProcessHeap (), 0, icp);
-    return TRUE;
-}
-
-
-/***********************************************************************
- *             IcmpSendEcho (ICMP.@)
- */
-DWORD WINAPI IcmpSendEcho(
-    HANDLE                   IcmpHandle,
-    IPAddr                   DestinationAddress,
-    LPVOID                   RequestData,
-    WORD                     RequestSize,
-    PIP_OPTION_INFORMATION   RequestOptions,
-    LPVOID                   ReplyBuffer,
-    DWORD                    ReplySize,
-    DWORD                    Timeout
-    )
-{
-    icmp_t* icp=(icmp_t*)IcmpHandle;
-    unsigned char* reqbuf;
-    int reqsize;
-
-    struct icmp_echo_reply* ier;
-    struct ip* ip_header;
-    struct icmp* icmp_header;
-    char* endbuf;
-    int ip_header_len;
-    int maxlen;
-    fd_set fdr;
-    struct timeval timeout;
-    DWORD send_time,recv_time;
-    struct sockaddr_in addr;
-    unsigned int addrlen;
-    unsigned short id,seq,cksum;
-    int res;
-
-    if (IcmpHandle==INVALID_HANDLE_VALUE) {
-        /* FIXME: in fact win98 seems to ignore the handle value !!! */
-        SetLastError(ERROR_INVALID_HANDLE);
-        return 0;
-    }
-
-    if (ReplySize<sizeof(ICMP_ECHO_REPLY)+ICMP_MINLEN) {
-        SetLastError(IP_BUF_TOO_SMALL);
-        return 0;
-    }
-    /* check the request size against SO_MAX_MSG_SIZE using getsockopt */
-
-    /* Prepare the request */
-    id=GetCurrentProcessId() & 0xFFFF;
-    seq=InterlockedIncrement(&icmp_sequence) & 0xFFFF;
-
-    reqsize=ICMP_MINLEN+RequestSize;
-    reqbuf=HeapAlloc(GetProcessHeap(), 0, reqsize);
-    if (reqbuf==NULL) {
-        SetLastError(ERROR_OUTOFMEMORY);
-        return 0;
-    }
-
-    icmp_header=(struct icmp*)reqbuf;
-    icmp_header->icmp_type=ICMP_ECHO;
-    icmp_header->icmp_code=0;
-    icmp_header->icmp_cksum=0;
-    icmp_header->icmp_id=id;
-    icmp_header->icmp_seq=seq;
-    memcpy(reqbuf+ICMP_MINLEN, RequestData, RequestSize);
-    icmp_header->icmp_cksum=cksum=in_cksum((u_short*)reqbuf,reqsize);
-
-    addr.sin_family=AF_INET;
-    addr.sin_addr.s_addr=DestinationAddress;
-    addr.sin_port=0;
-
-    if (RequestOptions!=NULL) {
-        int val;
-        if (icp->default_opts.OptionsSize==IP_OPTS_UNKNOWN) {
-            int len;
-            /* Before we mess with the options, get the default values */
-            len=sizeof(val);
-            getsockopt(icp->sid,IPPROTO_IP,IP_TTL,(char *)&val,&len);
-            icp->default_opts.Ttl=val;
-
-            len=sizeof(val);
-            getsockopt(icp->sid,IPPROTO_IP,IP_TOS,(char *)&val,&len);
-            icp->default_opts.Tos=val;
-            /* FIXME: missing: handling of IP 'flags', and all the other 
options */
-        }
-
-        val=RequestOptions->Ttl;
-        setsockopt(icp->sid,IPPROTO_IP,IP_TTL,(char *)&val,sizeof(val));
-        val=RequestOptions->Tos;
-        setsockopt(icp->sid,IPPROTO_IP,IP_TOS,(char *)&val,sizeof(val));
-        /* FIXME:  missing: handling of IP 'flags', and all the other options 
*/
-
-        icp->default_opts.OptionsSize=IP_OPTS_CUSTOM;
-    } else if (icp->default_opts.OptionsSize==IP_OPTS_CUSTOM) {
-        int val;
-
-        /* Restore the default options */
-        val=icp->default_opts.Ttl;
-        setsockopt(icp->sid,IPPROTO_IP,IP_TTL,(char *)&val,sizeof(val));
-        val=icp->default_opts.Tos;
-        setsockopt(icp->sid,IPPROTO_IP,IP_TOS,(char *)&val,sizeof(val));
-        /* FIXME: missing: handling of IP 'flags', and all the other options */
-
-        icp->default_opts.OptionsSize=IP_OPTS_DEFAULT;
-    }
-
-    /* Get ready for receiving the reply
-     * Do it before we send the request to minimize the risk of introducing 
delays
-     */
-    FD_ZERO(&fdr);
-    FD_SET(icp->sid,&fdr);
-    timeout.tv_sec=Timeout/1000;
-    timeout.tv_usec=(Timeout % 1000)*1000;
-    addrlen=sizeof(addr);
-    ier=ReplyBuffer;
-    ip_header=(struct ip *) ((char *) ReplyBuffer+sizeof(ICMP_ECHO_REPLY));
-    endbuf=(char *) ReplyBuffer+ReplySize;
-    maxlen=ReplySize-sizeof(ICMP_ECHO_REPLY);
-
-    /* Send the packet */
-    TRACE("Sending %d bytes (RequestSize=%d) to %s\n", reqsize, RequestSize, 
inet_ntoa(addr.sin_addr));
-#if 0
-    if (TRACE_ON(icmp)){
-        unsigned char* buf=(unsigned char*)reqbuf;
-        int i;
-        printf("Output buffer:\n");
-        for (i=0;i<reqsize;i++)
-            printf("%2x,", buf[i]);
-        printf("\n");
-    }
-#endif
-
-    send_time = GetTickCount();
-    res=sendto(icp->sid, (const char*)reqbuf, reqsize, 0, (struct 
sockaddr*)&addr, sizeof(addr));
-    HeapFree(GetProcessHeap (), 0, reqbuf);
-    if (res<0) {
-        if (WSAGetLastError()==WSAEMSGSIZE)
-            SetLastError(IP_PACKET_TOO_BIG);
-        else {
-            switch (WSAGetLastError()) {
-            case WSAENETUNREACH:
-                SetLastError(IP_DEST_NET_UNREACHABLE);
-                break;
-            case WSAEHOSTUNREACH:
-                SetLastError(IP_DEST_HOST_UNREACHABLE);
-                break;
-            default:
-                TRACE("unknown error: errno=%d\n",WSAGetLastError());
-                SetLastError(IP_GENERAL_FAILURE);
-            }
-        }
-        return 0;
-    }
-
-    /* Get the reply */
-    ip_header_len=0; /* because gcc was complaining */
-    while ((res=select(icp->sid+1,&fdr,NULL,NULL,&timeout))>0) {
-        recv_time = GetTickCount();
-        res=recvfrom(icp->sid, (char*)ip_header, maxlen, 0, (struct 
sockaddr*)&addr,(int*)&addrlen);
-        TRACE("received %d bytes from %s\n",res, inet_ntoa(addr.sin_addr));
-        ier->Status=IP_REQ_TIMED_OUT;
-
-        /* Check whether we should ignore this packet */
-        if ((ip_header->ip_p==IPPROTO_ICMP) && (res>=sizeof(struct 
ip)+ICMP_MINLEN)) {
-            ip_header_len=ip_header->ip_hl << 2;
-            icmp_header=(struct icmp*)(((char*)ip_header)+ip_header_len);
-            TRACE("received an ICMP packet of 
type,code=%d,%d\n",icmp_header->icmp_type,icmp_header->icmp_code);
-            if (icmp_header->icmp_type==ICMP_ECHOREPLY) {
-                if ((icmp_header->icmp_id==id) && (icmp_header->icmp_seq==seq))
-                    ier->Status=IP_SUCCESS;
-            } else {
-                switch (icmp_header->icmp_type) {
-                case ICMP_UNREACH:
-                    switch (icmp_header->icmp_code) {
-                    case ICMP_UNREACH_HOST:
-#ifdef ICMP_UNREACH_HOST_UNKNOWN
-                    case ICMP_UNREACH_HOST_UNKNOWN:
-#endif
-#ifdef ICMP_UNREACH_ISOLATED
-                    case ICMP_UNREACH_ISOLATED:
-#endif
-#ifdef ICMP_UNREACH_HOST_PROHIB
-                   case ICMP_UNREACH_HOST_PROHIB:
-#endif
-#ifdef ICMP_UNREACH_TOSHOST
-                    case ICMP_UNREACH_TOSHOST:
-#endif
-                        ier->Status=IP_DEST_HOST_UNREACHABLE;
-                        break;
-                    case ICMP_UNREACH_PORT:
-                        ier->Status=IP_DEST_PORT_UNREACHABLE;
-                        break;
-                    case ICMP_UNREACH_PROTOCOL:
-                        ier->Status=IP_DEST_PROT_UNREACHABLE;
-                        break;
-                    case ICMP_UNREACH_SRCFAIL:
-                        ier->Status=IP_BAD_ROUTE;
-                        break;
-                    default:
-                        ier->Status=IP_DEST_NET_UNREACHABLE;
-                    }
-                    break;
-                case ICMP_TIMXCEED:
-                    if (icmp_header->icmp_code==ICMP_TIMXCEED_REASS)
-                        ier->Status=IP_TTL_EXPIRED_REASSEM;
-                    else
-                        ier->Status=IP_TTL_EXPIRED_TRANSIT;
-                    break;
-                case ICMP_PARAMPROB:
-                    ier->Status=IP_PARAM_PROBLEM;
-                    break;
-                case ICMP_SOURCEQUENCH:
-                    ier->Status=IP_SOURCE_QUENCH;
-                    break;
-                }
-                if (ier->Status!=IP_REQ_TIMED_OUT) {
-                    struct ip* rep_ip_header;
-                    struct icmp* rep_icmp_header;
-                    /* The ICMP header size of all the packets we accept is 
the same */
-                    rep_ip_header=(struct 
ip*)(((char*)icmp_header)+ICMP_MINLEN);
-                    rep_icmp_header=(struct 
icmp*)(((char*)rep_ip_header)+(rep_ip_header->ip_hl << 2));
-
-                   /* Make sure that this is really a reply to our packet */
-                    if (ip_header_len+ICMP_MINLEN+(rep_ip_header->ip_hl << 
2)+ICMP_MINLEN>ip_header->ip_len) {
-                       ier->Status=IP_REQ_TIMED_OUT;
-                    } else if ((rep_icmp_header->icmp_type!=ICMP_ECHO) ||
-                        (rep_icmp_header->icmp_code!=0) ||
-                        (rep_icmp_header->icmp_id!=id) ||
-                        /* windows doesn't check this checksum, else tracert */
-                        /* behind a Linux 2.2 masquerading firewall would 
fail*/
-                        /* (rep_icmp_header->icmp_cksum!=cksum) || */
-                        (rep_icmp_header->icmp_seq!=seq)) {
-                        /* This was not a reply to one of our packets after 
all */
-                        TRACE("skipping type,code=%d,%d id,seq=%d,%d 
cksum=%d\n",
-                            
rep_icmp_header->icmp_type,rep_icmp_header->icmp_code,
-                            rep_icmp_header->icmp_id,rep_icmp_header->icmp_seq,
-                            rep_icmp_header->icmp_cksum);
-                        TRACE("expected type,code=8,0 id,seq=%d,%d cksum=%d\n",
-                            id,seq,
-                            cksum);
-                       ier->Status=IP_REQ_TIMED_OUT;
-                   }
-                }
-           }
-       }
-
-        if (ier->Status==IP_REQ_TIMED_OUT) {
-            /* This packet was not for us.
-             * Decrease the timeout so that we don't enter an endless loop even
-             * if we get flooded with ICMP packets that are not for us.
-             */
-            int t = Timeout - (recv_time - send_time);
-            if (t < 0) t = 0;
-            timeout.tv_sec = t / 1000;
-            timeout.tv_usec = (t % 1000) * 1000;
-            continue;
-        } else {
-            /* This is a reply to our packet */
-            memcpy(&ier->Address,&ip_header->ip_src,sizeof(IPAddr));
-            /* Status is already set */
-            ier->RoundTripTime= recv_time - send_time;
-            ier->DataSize=res-ip_header_len-ICMP_MINLEN;
-            ier->Reserved=0;
-            ier->Data=endbuf-ier->DataSize;
-            
memmove(ier->Data,((char*)ip_header)+ip_header_len+ICMP_MINLEN,ier->DataSize);
-            ier->Options.Ttl=ip_header->ip_ttl;
-            ier->Options.Tos=ip_header->ip_tos;
-            ier->Options.Flags=ip_header->ip_off >> 13;
-            ier->Options.OptionsSize=ip_header_len-sizeof(struct ip);
-            if (ier->Options.OptionsSize!=0) {
-                ier->Options.OptionsData=(unsigned char *) 
ier->Data-ier->Options.OptionsSize;
-                /* FIXME: We are supposed to rearrange the option's 'source 
route' data */
-                
memmove(ier->Options.OptionsData,((char*)ip_header)+ip_header_len,ier->Options.OptionsSize);
-                endbuf=(char*)ier->Options.OptionsData;
-            } else {
-                ier->Options.OptionsData=NULL;
-                endbuf=ier->Data;
-            }
-
-            /* Prepare for the next packet */
-            ier++;
-            ip_header=(struct ip*)(((char*)ip_header)+sizeof(ICMP_ECHO_REPLY));
-            maxlen=endbuf-(char*)ip_header;
-
-            /* Check out whether there is more but don't wait this time */
-            timeout.tv_sec=0;
-            timeout.tv_usec=0;
-        }
-        FD_ZERO(&fdr);
-        FD_SET(icp->sid,&fdr);
-    }
-    res=ier-(ICMP_ECHO_REPLY*)ReplyBuffer;
-    if (res==0)
-        SetLastError(IP_REQ_TIMED_OUT);
-    TRACE("received %d replies\n",res);
-    return res;
-}
-
-/*
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Mike Muuss.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */

Removed: trunk/reactos/dll/win32/icmp/ip.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/ip.h?rev=70261
==============================================================================
--- trunk/reactos/dll/win32/icmp/ip.h   [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/icmp/ip.h   (removed)
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)ip.h        8.2 (Berkeley) 6/1/94
- * $FreeBSD: src/sys/netinet/ip.h,v 1.16 1999/08/28 00:49:19 peter Exp $
- */
-
-#ifndef _NETINET_IP_H_
-#define _NETINET_IP_H_
-
-/*
- * Definitions for internet protocol version 4.
- * Per RFC 791, September 1981.
- */
-#define        IPVERSION       4
-
-/* A little magic to make the Windows build happy. */
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#include <time.h>
-
-typedef u_short n_short;
-typedef u_int n_long;
-typedef u_int n_time;
-
-#define EMSGSIZE WSAEMSGSIZE
-#define ENETUNREACH WSAENETUNREACH
-#define EHOSTUNREACH WSAEHOSTUNREACH
-#endif
-
-/*
- * Structure of an internet header, naked of options.
- */
-struct ip {
-#ifdef _IP_VHL
-       u_char  ip_vhl;                 /* version << 4 | header length >> 2 */
-#else
-#if BYTE_ORDER == LITTLE_ENDIAN
-       u_int   ip_hl:4,                /* header length */
-               ip_v:4;                 /* version */
-#endif
-#if BYTE_ORDER == BIG_ENDIAN
-       u_int   ip_v:4,                 /* version */
-               ip_hl:4;                /* header length */
-#endif
-#endif /* not _IP_VHL */
-       u_char  ip_tos;                 /* type of service */
-       u_short ip_len;                 /* total length */
-       u_short ip_id;                  /* identification */
-       u_short ip_off;                 /* fragment offset field */
-#define        IP_RF 0x8000                    /* reserved fragment flag */
-#define        IP_DF 0x4000                    /* don't fragment flag */
-#define        IP_MF 0x2000                    /* more fragments flag */
-#define        IP_OFFMASK 0x1fff               /* mask for fragmenting bits */
-       u_char  ip_ttl;                 /* time to live */
-       u_char  ip_p;                   /* protocol */
-       u_short ip_sum;                 /* checksum */
-       struct  in_addr ip_src,ip_dst;  /* source and dest address */
-};
-
-#ifdef _IP_VHL
-#define        IP_MAKE_VHL(v, hl)      ((v) << 4 | (hl))
-#define        IP_VHL_HL(vhl)          ((vhl) & 0x0f)
-#define        IP_VHL_V(vhl)           ((vhl) >> 4)
-#define        IP_VHL_BORING           0x45
-#endif
-
-#define        IP_MAXPACKET    65535           /* maximum packet size */
-
-/*
- * Definitions for IP type of service (ip_tos)
- */
-#define        IPTOS_LOWDELAY          0x10
-#define        IPTOS_THROUGHPUT        0x08
-#define        IPTOS_RELIABILITY       0x04
-#define        IPTOS_MINCOST           0x02
-
-/*
- * Definitions for IP precedence (also in ip_tos) (hopefully unused)
- */
-#define        IPTOS_PREC_NETCONTROL           0xe0
-#define        IPTOS_PREC_INTERNETCONTROL      0xc0
-#define        IPTOS_PREC_CRITIC_ECP           0xa0
-#define        IPTOS_PREC_FLASHOVERRIDE        0x80
-#define        IPTOS_PREC_FLASH                0x60
-#define        IPTOS_PREC_IMMEDIATE            0x40
-#define        IPTOS_PREC_PRIORITY             0x20
-#define        IPTOS_PREC_ROUTINE              0x00
-
-/*
- * Definitions for options.
- */
-#define        IPOPT_COPIED(o)         ((o)&0x80)
-#define        IPOPT_CLASS(o)          ((o)&0x60)
-#define        IPOPT_NUMBER(o)         ((o)&0x1f)
-
-#define        IPOPT_CONTROL           0x00
-#define        IPOPT_RESERVED1         0x20
-#define        IPOPT_DEBMEAS           0x40
-#define        IPOPT_RESERVED2         0x60
-
-#define        IPOPT_EOL               0               /* end of option list */
-#define        IPOPT_NOP               1               /* no operation */
-
-#define        IPOPT_RR                7               /* record packet route 
*/
-#define        IPOPT_TS                68              /* timestamp */
-#define        IPOPT_SECURITY          130             /* provide s,c,h,tcc */
-#define        IPOPT_LSRR              131             /* loose source route */
-#define        IPOPT_SATID             136             /* satnet id */
-#define        IPOPT_SSRR              137             /* strict source route 
*/
-#define        IPOPT_RA                148             /* router alert */
-
-/*
- * Offsets to fields in options other than EOL and NOP.
- */
-#define        IPOPT_OPTVAL            0               /* option ID */
-#define        IPOPT_OLEN              1               /* option length */
-#define IPOPT_OFFSET           2               /* offset within option */
-#define        IPOPT_MINOFF            4               /* min value of above */
-
-/*
- * Time stamp option structure.
- */
-struct ip_timestamp {
-       u_char  ipt_code;               /* IPOPT_TS */
-       u_char  ipt_len;                /* size of structure (variable) */
-       u_char  ipt_ptr;                /* index of current entry */
-#if BYTE_ORDER == LITTLE_ENDIAN
-       u_int   ipt_flg:4,              /* flags, see below */
-               ipt_oflw:4;             /* overflow counter */
-#endif
-#if BYTE_ORDER == BIG_ENDIAN
-       u_int   ipt_oflw:4,             /* overflow counter */
-               ipt_flg:4;              /* flags, see below */
-#endif
-       union ipt_timestamp {
-               n_long  ipt_time[1];
-               struct  ipt_ta {
-                       struct in_addr ipt_addr;
-                       n_long ipt_time;
-               } ipt_ta[1];
-       } ipt_timestamp;
-};
-
-/* flag bits for ipt_flg */
-#define        IPOPT_TS_TSONLY         0               /* timestamps only */
-#define        IPOPT_TS_TSANDADDR      1               /* timestamps and 
addresses */
-#define        IPOPT_TS_PRESPEC        3               /* specified modules 
only */
-
-/* bits for security (not byte swapped) */
-#define        IPOPT_SECUR_UNCLASS     0x0000
-#define        IPOPT_SECUR_CONFID      0xf135
-#define        IPOPT_SECUR_EFTO        0x789a
-#define        IPOPT_SECUR_MMMM        0xbc4d
-#define        IPOPT_SECUR_RESTR       0xaf13
-#define        IPOPT_SECUR_SECRET      0xd788
-#define        IPOPT_SECUR_TOPSECRET   0x6bc5
-
-/*
- * Internet implementation parameters.
- */
-#define        MAXTTL          255             /* maximum time to live 
(seconds) */
-#define        IPDEFTTL        64              /* default ttl, from RFC 1340 */
-#define        IPFRAGTTL       60              /* time to live for frags, 
slowhz */
-#define        IPTTLDEC        1               /* subtracted when forwarding */
-
-#define        IP_MSS          576             /* default maximum segment size 
*/
-
-#endif

Removed: trunk/reactos/dll/win32/icmp/ip_icmp.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/ip_icmp.h?rev=70261
==============================================================================
--- trunk/reactos/dll/win32/icmp/ip_icmp.h      [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/icmp/ip_icmp.h      (removed)
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)ip_icmp.h   8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/netinet/ip_icmp.h,v 1.13 1999/08/28 00:49:24 peter Exp $
- */
-
-#ifndef _NETINET_IP_ICMP_H_
-#define _NETINET_IP_ICMP_H_
-
-/*
- * Interface Control Message Protocol Definitions.
- * Per RFC 792, September 1981.
- */
-
-/*
- * Internal of an ICMP Router Advertisement
- */
-struct icmp_ra_addr {
-       u_int32_t ira_addr;
-       u_int32_t ira_preference;
-};
-
-/*
- * Structure of an icmp header.
- */
-struct icmp {
-       u_char  icmp_type;              /* type of message, see below */
-       u_char  icmp_code;              /* type sub code */
-       u_short icmp_cksum;             /* ones complement cksum of struct */
-       union {
-               u_char ih_pptr;                 /* ICMP_PARAMPROB */
-               struct in_addr ih_gwaddr;       /* ICMP_REDIRECT */
-               struct ih_idseq {
-                       n_short icd_id;
-                       n_short icd_seq;
-               } ih_idseq;
-               int ih_void;
-
-               /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
-               struct ih_pmtu {
-                       n_short ipm_void;
-                       n_short ipm_nextmtu;
-               } ih_pmtu;
-
-               struct ih_rtradv {
-                       u_char irt_num_addrs;
-                       u_char irt_wpa;
-                       u_int16_t irt_lifetime;
-               } ih_rtradv;
-       } icmp_hun;
-#define        icmp_pptr       icmp_hun.ih_pptr
-#define        icmp_gwaddr     icmp_hun.ih_gwaddr
-#define        icmp_id         icmp_hun.ih_idseq.icd_id
-#define        icmp_seq        icmp_hun.ih_idseq.icd_seq
-#define        icmp_void       icmp_hun.ih_void
-#define        icmp_pmvoid     icmp_hun.ih_pmtu.ipm_void
-#define        icmp_nextmtu    icmp_hun.ih_pmtu.ipm_nextmtu
-#define        icmp_num_addrs  icmp_hun.ih_rtradv.irt_num_addrs
-#define        icmp_wpa        icmp_hun.ih_rtradv.irt_wpa
-#define        icmp_lifetime   icmp_hun.ih_rtradv.irt_lifetime
-       union {
-               struct id_ts {
-                       n_time its_otime;
-                       n_time its_rtime;
-                       n_time its_ttime;
-               } id_ts;
-               struct id_ip  {
-                       struct ip idi_ip;
-                       /* options and then 64 bits of data */
-               } id_ip;
-               struct icmp_ra_addr id_radv;
-               u_int32_t id_mask;
-               char    id_data[1];
-       } icmp_dun;
-#define        icmp_otime      icmp_dun.id_ts.its_otime
-#define        icmp_rtime      icmp_dun.id_ts.its_rtime
-#define        icmp_ttime      icmp_dun.id_ts.its_ttime
-#define        icmp_ip         icmp_dun.id_ip.idi_ip
-#define        icmp_radv       icmp_dun.id_radv
-#define        icmp_mask       icmp_dun.id_mask
-#define        icmp_data       icmp_dun.id_data
-};
-
-/*
- * Lower bounds on packet lengths for various types.
- * For the error advice packets must first insure that the
- * packet is large enough to contain the returned ip header.
- * Only then can we do the check to see if 64 bits of packet
- * data have been returned, since we need to check the returned
- * ip header length.
- */
-#define        ICMP_MINLEN     8                               /* abs minimum 
*/
-#define        ICMP_TSLEN      (8 + 3 * sizeof (n_time))       /* timestamp */
-#define        ICMP_MASKLEN    12                              /* address mask 
*/
-#define        ICMP_ADVLENMIN  (8 + sizeof (struct ip) + 8)    /* min */
-#ifndef _IP_VHL
-#define        ICMP_ADVLEN(p)  (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
-       /* N.B.: must separately check that ip_hl >= 5 */
-#else
-#define        ICMP_ADVLEN(p)  (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8)
-       /* N.B.: must separately check that header length >= 5 */
-#endif
-
-/*
- * Definition of type and code field values.
- */
-#define        ICMP_ECHOREPLY          0               /* echo reply */
-#define        ICMP_UNREACH            3               /* dest unreachable, 
codes: */
-#define                ICMP_UNREACH_NET        0               /* bad net */
-#define                ICMP_UNREACH_HOST       1               /* bad host */
-#define                ICMP_UNREACH_PROTOCOL   2               /* bad protocol 
*/
-#define                ICMP_UNREACH_PORT       3               /* bad port */
-#define                ICMP_UNREACH_NEEDFRAG   4               /* IP_DF caused 
drop */
-#define                ICMP_UNREACH_SRCFAIL    5               /* src route 
failed */
-#define                ICMP_UNREACH_NET_UNKNOWN 6              /* unknown net 
*/
-#define                ICMP_UNREACH_HOST_UNKNOWN 7             /* unknown host 
*/
-#define                ICMP_UNREACH_ISOLATED   8               /* src host 
isolated */
-#define                ICMP_UNREACH_NET_PROHIB 9               /* prohibited 
access */
-#define                ICMP_UNREACH_HOST_PROHIB 10             /* ditto */
-#define                ICMP_UNREACH_TOSNET     11              /* bad tos for 
net */
-#define                ICMP_UNREACH_TOSHOST    12              /* bad tos for 
host */
-#define                ICMP_UNREACH_FILTER_PROHIB 13           /* admin prohib 
*/
-#define                ICMP_UNREACH_HOST_PRECEDENCE 14         /* host prec 
vio. */
-#define                ICMP_UNREACH_PRECEDENCE_CUTOFF 15       /* prec cutoff 
*/
-#define        ICMP_SOURCEQUENCH       4               /* packet lost, slow 
down */
-#define        ICMP_REDIRECT           5               /* shorter route, 
codes: */
-#define                ICMP_REDIRECT_NET       0               /* for network 
*/
-#define                ICMP_REDIRECT_HOST      1               /* for host */
-#define                ICMP_REDIRECT_TOSNET    2               /* for tos and 
net */
-#define                ICMP_REDIRECT_TOSHOST   3               /* for tos and 
host */
-#define        ICMP_ECHO               8               /* echo service */
-#define        ICMP_ROUTERADVERT       9               /* router advertisement 
*/
-#define        ICMP_ROUTERSOLICIT      10              /* router solicitation 
*/
-#define        ICMP_TIMXCEED           11              /* time exceeded, code: 
*/
-#define                ICMP_TIMXCEED_INTRANS   0               /* ttl==0 in 
transit */
-#define                ICMP_TIMXCEED_REASS     1               /* ttl==0 in 
reass */
-#define        ICMP_PARAMPROB          12              /* ip header bad */
-#define                ICMP_PARAMPROB_OPTABSENT 1              /* req. opt. 
absent */
-#define        ICMP_TSTAMP             13              /* timestamp request */
-#define        ICMP_TSTAMPREPLY        14              /* timestamp reply */
-#define        ICMP_IREQ               15              /* information request 
*/
-#define        ICMP_IREQREPLY          16              /* information reply */
-#define        ICMP_MASKREQ            17              /* address mask request 
*/
-#define        ICMP_MASKREPLY          18              /* address mask reply */
-
-#define        ICMP_MAXTYPE            18
-
-#define        ICMP_INFOTYPE(type) \
-       ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
-       (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
-       (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
-       (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
-       (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
-
-#ifdef KERNEL
-void   icmp_error __P((struct mbuf *, int, int, n_long, struct ifnet *));
-void   icmp_input __P((struct mbuf *, int));
-#endif
-
-#endif

Modified: trunk/reactos/dll/win32/iphlpapi/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/CMakeLists.txt?rev=70262&r1=70261&r2=70262&view=diff
==============================================================================
--- trunk/reactos/dll/win32/iphlpapi/CMakeLists.txt     [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/iphlpapi/CMakeLists.txt     [iso-8859-1] Fri Dec  4 
10:57:44 2015
@@ -10,6 +10,7 @@
 list(APPEND SOURCE
     address.c
     dhcp_reactos.c
+    icmp.c
     ifenum_reactos.c
     ipstats_reactos.c
     iphlpapi_reactos.c
@@ -28,6 +29,6 @@
 
 set_module_type(iphlpapi win32dll UNICODE)
 target_link_libraries(iphlpapi wine tdilib)
-add_importlibs(iphlpapi icmp dhcpcsvc advapi32 ws2_32 msvcrt kernel32 ntdll)
+add_importlibs(iphlpapi dhcpcsvc advapi32 ws2_32 msvcrt kernel32 ntdll)
 add_pch(iphlpapi iphlpapi_private.h SOURCE)
 add_cd_file(TARGET iphlpapi DESTINATION reactos/system32 FOR all)

Copied: trunk/reactos/dll/win32/iphlpapi/icmp.c (from r70261, 
trunk/reactos/dll/win32/icmp/icmp_main.c)
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/icmp.c?p2=trunk/reactos/dll/win32/iphlpapi/icmp.c&p1=trunk/reactos/dll/win32/icmp/icmp_main.c&r1=70261&r2=70262&rev=70262&view=diff
==============================================================================
--- trunk/reactos/dll/win32/icmp/icmp_main.c    [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/iphlpapi/icmp.c     [iso-8859-1] Fri Dec  4 
10:57:44 2015
@@ -146,22 +146,6 @@
 /*
  * Exported Routines.
  */
-
-BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
-{
-  WSADATA wsaData;
-
-  switch (fdwReason) {
-    case DLL_PROCESS_ATTACH:
-      WSAStartup(MAKEWORD(2, 2), &wsaData);
-      break;
-
-    case DLL_PROCESS_DETACH:
-      WSACleanup();
-      break;
-  }
-  return TRUE;
-}
 
 /***********************************************************************
  *             IcmpCreateFile (ICMP.@)

Modified: trunk/reactos/dll/win32/iphlpapi/iphlpapi.spec
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/iphlpapi.spec?rev=70262&r1=70261&r2=70262&view=diff
==============================================================================
--- trunk/reactos/dll/win32/iphlpapi/iphlpapi.spec      [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/iphlpapi/iphlpapi.spec      [iso-8859-1] Fri Dec  4 
10:57:44 2015
@@ -82,11 +82,11 @@
 @ stub Icmp6CreateFile
 @ stub Icmp6ParseReplies
 @ stub Icmp6SendEcho2
-@ stdcall IcmpCloseHandle(ptr) icmp.IcmpCloseHandle
-@ stdcall IcmpCreateFile() icmp.IcmpCreateFile
-@ stdcall IcmpParseReplies(ptr long) icmp.IcmpParseReplies
-@ stdcall IcmpSendEcho(ptr long ptr long ptr ptr long long) icmp.IcmpSendEcho
-@ stdcall IcmpSendEcho2(ptr ptr ptr ptr long ptr long ptr ptr long long) 
icmp.IcmpSendEcho2
+@ stdcall IcmpCloseHandle(ptr)
+@ stdcall IcmpCreateFile()
+@ stdcall -stub IcmpParseReplies(ptr long)
+@ stdcall -stub IcmpSendEcho2(ptr ptr ptr ptr long ptr long ptr ptr long long)
+@ stdcall IcmpSendEcho(ptr long ptr long ptr ptr long long)
 @ stub InternalCreateIpForwardEntry
 @ stub InternalCreateIpNetEntry
 @ stub InternalDeleteIpForwardEntry

Modified: trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c?rev=70262&r1=70261&r2=70262&view=diff
==============================================================================
--- trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c    [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/iphlpapi/iphlpapi_main.c    [iso-8859-1] Fri Dec  4 
10:57:44 2015
@@ -35,13 +35,17 @@
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
+  WSADATA wsaData;
+
   switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
       DisableThreadLibraryCalls( hinstDLL );
       interfaceMapInit();
+      WSAStartup(MAKEWORD(2, 2), &wsaData);
       break;
 
     case DLL_PROCESS_DETACH:
+      WSACleanup();
       interfaceMapFree();
       break;
   }

Modified: trunk/reactos/media/doc/README.WINE
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=70262&r1=70261&r2=70262&view=diff
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Fri Dec  4 10:57:44 2015
@@ -74,7 +74,6 @@
 reactos/dll/win32/hnetcfg             # Synced to WineStaging-1.7.55
 reactos/dll/win32/httpapi             # Synced to WineStaging-1.7.55
 reactos/dll/win32/iccvid              # Synced to WineStaging-1.7.55
-reactos/dll/win32/icmp                # Out of sync
 reactos/dll/win32/ieframe             # Synced to WineStaging-1.7.55
 reactos/dll/win32/imaadp32.acm        # Synced to WineStaging-1.7.55
 reactos/dll/win32/imagehlp            # Synced to WineStaging-1.7.55
@@ -267,6 +266,9 @@
 gdi32 -
   reactos/dll/win32/gdi32/objects/linedda.c     # Synced at 20090410
 
+iphlpapi -
+  reactos/dll/win32/iphlpapi/icmp.c # Out of Sync
+
 kernel32 -
   reactos/dll/win32/kernel32/wine/actctx.c               # Partly synced with 
Wine 1.7.55
   reactos/dll/win32/kernel32/wine/comm.c                 # Synced in r52754


Reply via email to