VirtualBox

Changeset 53298 in vbox for trunk/src/VBox/Devices/Network


Ignore:
Timestamp:
Nov 11, 2014 4:51:45 AM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
96877
Message:

NAT: Start untangling Windows ICMP API code out of ip_icmp.c.
Add new file ip_icmpwin.c and move icmp init/fini into it as-is.

Location:
trunk/src/VBox/Devices/Network/slirp
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/ip_icmp.c

    r53292 r53298  
    119119
    120120#else /* RT_OS_WINDOWS */
    121     /* Resolve symbols we need. */
    122     {
    123         RTLDRMOD hLdrMod;
    124         int rc = RTLdrLoadSystem("Iphlpapi.dll", true /*fNoUnload*/, &hLdrMod);
    125         if (RT_SUCCESS(rc))
    126         {
    127             pData->pfIcmpParseReplies = (long (WINAPI *)(void *, long))RTLdrGetFunction(hLdrMod, "IcmpParseReplies");
    128             pData->pfIcmpCloseHandle = (BOOL (WINAPI *)(HANDLE))RTLdrGetFunction(hLdrMod, "IcmpCloseHandle");
    129             RTLdrClose(hLdrMod);
    130         }
    131 
    132         if (pData->pfIcmpParseReplies == NULL)
    133         {
    134             int rc = RTLdrLoadSystem("Icmp.dll", true /*fNoUnload*/, &hLdrMod);
    135             if (RT_FAILURE(rc))
    136             {
    137                 LogRel(("NAT: Icmp.dll could not be loaded: %Rrc\n", rc));
    138                 return 1;
    139             }
    140             pData->pfIcmpParseReplies = (long (WINAPI *)(void *, long))RTLdrGetFunction(hLdrMod, "IcmpParseReplies");
    141             pData->pfIcmpCloseHandle = (BOOL (WINAPI *)(HANDLE))RTLdrGetFunction(hLdrMod, "IcmpCloseHandle");
    142             RTLdrClose(hLdrMod);
    143         }
    144     }
    145     if (pData->pfIcmpParseReplies == NULL)
    146     {
    147         LogRel(("NAT: Can't find IcmpParseReplies symbol\n"));
     121    if (icmpwin_init(pData) != 0)
    148122        return 1;
    149     }
    150     if (pData->pfIcmpCloseHandle == NULL)
    151     {
    152         LogRel(("NAT: Can't find IcmpCloseHandle symbol\n"));
    153         return 1;
    154     }
    155 
    156     pData->icmp_socket.sh = IcmpCreateFile();
    157     pData->phEvents[VBOX_ICMP_EVENT_INDEX] = CreateEvent(NULL, FALSE, FALSE, NULL);
    158     pData->cbIcmpBuffer = sizeof(ICMP_ECHO_REPLY) * 10;
    159     pData->pvIcmpBuffer = RTMemAlloc(pData->cbIcmpBuffer);
    160123#endif /* RT_OS_WINDOWS */
    161124
     
    172135    icmp_cache_clean(pData, -1);
    173136#ifdef RT_OS_WINDOWS
    174     pData->pfIcmpCloseHandle(pData->icmp_socket.sh);
    175     RTMemFree(pData->pvIcmpBuffer);
     137    icmpwin_finit(pData);
    176138#else
    177139    closesocket(pData->icmp_socket.s);
  • trunk/src/VBox/Devices/Network/slirp/ip_icmp.h

    r44528 r53298  
    203203struct icmp_msg * icmp_find_original_mbuf (PNATState , struct ip *);
    204204
     205#ifdef RT_OS_WINDOWS
     206/* Windows ICMP API code in ip_icmpwin.c */
     207int icmpwin_init (PNATState);
     208void icmpwin_finit (PNATState);
    205209#endif
     210
     211#endif
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette