VirtualBox

Ignore:
Timestamp:
Oct 10, 2011 8:28:30 AM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
74342
Message:

NAT: configuration of limit of ICMP cache and moving icmp finilization and other ICMP's resources to icmp_finit routine.

Location:
trunk/src/VBox/Devices/Network/slirp
Files:
4 edited

Legend:

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

    r38968 r38971  
    8989};
    9090
    91 static int icmp_cache_count(PNATState pData);
    9291static void icmp_cache_clean(PNATState pData, int iEntries);
    9392
    9493int
    95 icmp_init(PNATState pData)
     94icmp_init(PNATState pData, int iIcmpCacheLimit)
    9695{
    9796    pData->icmp_socket.so_type = IPPROTO_ICMP;
    9897    pData->icmp_socket.so_state = SS_ISFCONNECTED;
    99     pData->iIcmpCacheLimit = 100;
     98    if (iIcmpCacheLimit < 0)
     99    {
     100        LogRel(("NAT: iIcmpCacheLimit is invalid %d, will be alter to default value 100\n", iIcmpCacheLimit));
     101        iIcmpCacheLimit = 100;
     102    }
     103    pData->iIcmpCacheLimit = iIcmpCacheLimit;
    100104#ifndef RT_OS_WINDOWS
    101105# ifndef RT_OS_DARWIN
     
    162166    LIST_INIT(&pData->icmp_msg_head);
    163167    return 0;
     168}
     169
     170/**
     171 * Cleans ICMP cache.
     172 */
     173int
     174icmp_finit(PNATState pData)
     175{
     176    icmp_cache_clean(pData, -1);
     177#ifdef RT_OS_WINDOWS
     178    pData->pfIcmpCloseHandle(pData->icmp_socket.sh);
     179    FreeLibrary(pData->hmIcmpLibrary);
     180    RTMemFree(pData->pvIcmpBuffer);
     181#else
     182    closesocket(pData->icmp_socket.s);
     183#endif
    164184}
    165185
  • trunk/src/VBox/Devices/Network/slirp/ip_icmp.h

    r28800 r38971  
    199199LIST_HEAD(icmp_storage, icmp_msg);
    200200
    201 int icmp_init (PNATState );
     201int icmp_init (PNATState , int);
     202int icmp_finit (PNATState );
    202203struct icmp_msg * icmp_find_original_mbuf (PNATState , struct ip *);
    203204
  • trunk/src/VBox/Devices/Network/slirp/libslirp.h

    r38111 r38971  
    4747#endif
    4848
    49 int slirp_init(PNATState *, uint32_t, uint32_t, bool, bool, int, void *);
     49int slirp_init(PNATState *, uint32_t, uint32_t, bool, bool, int, int, void *);
    5050void slirp_register_statistics(PNATState pData, PPDMDRVINS pDrvIns);
    5151void slirp_deregister_statistics(PNATState pData, PPDMDRVINS pDrvIns);
  • trunk/src/VBox/Devices/Network/slirp/slirp.c

    r38170 r38971  
    584584
    585585int slirp_init(PNATState *ppData, uint32_t u32NetAddr, uint32_t u32Netmask,
    586                bool fPassDomain, bool fUseHostResolver, int i32AliasMode, void *pvUser)
     586               bool fPassDomain, bool fUseHostResolver, int i32AliasMode,
     587               int iIcmpCacheLimit, void *pvUser)
    587588{
    588589    int fNATfailed = 0;
     
    635636    if_init(pData);
    636637    ip_init(pData);
    637     icmp_init(pData);
     638    icmp_init(pData, iIcmpCacheLimit);
    638639
    639640    /* Initialise mbufs *after* setting the MTU */
     
    772773    if (pData == NULL)
    773774        return;
    774 #ifdef RT_OS_WINDOWS
    775     pData->pfIcmpCloseHandle(pData->icmp_socket.sh);
    776     FreeLibrary(pData->hmIcmpLibrary);
    777     RTMemFree(pData->pvIcmpBuffer);
    778 #else
    779     closesocket(pData->icmp_socket.s);
    780 #endif
     775    icmp_finit(pData);
    781776
    782777    slirp_link_down(pData);
Note: See TracChangeset for help on using the changeset viewer.

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