VirtualBox

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


Ignore:
Timestamp:
Apr 27, 2010 6:36:48 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
60675
Message:

NAT: introduces management routines of NAT libalias core. (see xTracker/#4843 for details)

Location:
trunk/src/VBox/Devices/Network
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/DrvNAT.cpp

    r28440 r28787  
    10811081                              "PassDomain\0TFTPPrefix\0BootFile\0Network"
    10821082                              "\0NextServer\0DNSProxy\0BindIP\0UseHostResolver\0"
    1083                               "SlirpMTU\0"
     1083                              "SlirpMTU\0AliasMode\0"
    10841084                              "SockRcv\0SockSnd\0TcpRcv\0TcpSnd\0"))
    10851085        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES,
     
    11311131    GET_S32(rc, pThis, pCfg, "SlirpMTU", MTU);
    11321132#endif
    1133 
     1133    int i32AliasMode = 0;
     1134    int i32MainAliasMode = 0;
     1135    GET_S32(rc, pThis, pCfg, "AliasMode", i32MainAliasMode);
     1136
     1137    i32AliasMode |= (i32MainAliasMode & 0x1 ? 0x1 : 0);
     1138    i32AliasMode |= (i32MainAliasMode & 0x2 ? 0x40 : 0);
     1139    i32AliasMode |= (i32MainAliasMode & 0x4 ? 0x4 : 0);
    11341140    /*
    11351141     * Query the network port interface.
     
    11661172     */
    11671173    rc = slirp_init(&pThis->pNATState, RT_H2N_U32(Network), Netmask,
    1168                     fPassDomain, !!fUseHostResolver, pThis);
     1174                    fPassDomain, !!fUseHostResolver, i32AliasMode, pThis);
    11691175    if (RT_SUCCESS(rc))
    11701176    {
  • trunk/src/VBox/Devices/Network/slirp/ext.h

    r28449 r28787  
    6262static void vbox_slirp_printV(char *format, va_list args)
    6363{
    64 # ifdef LOG_ENABLED
    6564    char buffer[1024];
    6665    memset(buffer, 0, 1024);
    6766    RTStrPrintfV(buffer, 1024, format, args);
    6867
    69     Log2(("NAT:EXT: %s\n", buffer));
    70 # endif
     68    LogRel(("NAT:EXT: %s\n", buffer));
    7169}
    7270#endif
     
    7573static void vbox_slirp_printf(char *format, ...)
    7674{
    77 # ifdef LOG_ENABLED
    7875    va_list args;
    7976    va_start(args, format);
    8077    vbox_slirp_printV(format, args);
    8178    va_end(args);
    82 # endif
    8379}
    8480#endif
  • trunk/src/VBox/Devices/Network/slirp/libslirp.h

    r28449 r28787  
    5050#endif
    5151
    52 int slirp_init(PNATState *, uint32_t, uint32_t, bool, bool, void *);
     52int slirp_init(PNATState *, uint32_t, uint32_t, bool, bool, int, void *);
    5353void slirp_register_statistics(PNATState pData, PPDMDRVINS pDrvIns);
    5454void slirp_deregister_statistics(PNATState pData, PPDMDRVINS pDrvIns);
  • trunk/src/VBox/Devices/Network/slirp/slirp.c

    r28502 r28787  
    571571
    572572int slirp_init(PNATState *ppData, uint32_t u32NetAddr, uint32_t u32Netmask,
    573                bool fPassDomain, bool fUseHostResolver, void *pvUser)
     573               bool fPassDomain, bool fUseHostResolver, int i32AliasMode, void *pvUser)
    574574{
    575575    int fNATfailed = 0;
     
    641641        dnsproxy_init(pData);
    642642    }
    643 
     643    if (i32AliasMode & ~(PKT_ALIAS_LOG|PKT_ALIAS_SAME_PORTS|PKT_ALIAS_PROXY_ONLY))
     644    {
     645        LogRel(("NAT: alias mode %x is ignored\n", i32AliasMode));
     646        i32AliasMode = 0;
     647    }
     648    pData->i32AliasMode = i32AliasMode;
    644649    getouraddr(pData);
    645650    {
     
    656661        flags |= PKT_ALIAS_PUNCH_FW;
    657662#endif
    658         flags |= PKT_ALIAS_PROXY_ONLY; /* do transparent proxying */
    659         flags |= PKT_ALIAS_LOG; /* set logging */
     663        flags |= pData->i32AliasMode; /* do transparent proxying */
    660664        flags = LibAliasSetMode(pData->proxy_alias, flags, ~0);
    661665        proxy_addr.s_addr = RT_H2N_U32(RT_N2H_U32(pData->special_addr.s_addr) | CTL_ALIAS);
     
    17811785        lib = LibAliasInit(pData, NULL);
    17821786        flags = LibAliasSetMode(lib, 0, 0);
    1783         flags |= PKT_ALIAS_LOG; /* set logging */
    1784         flags |= PKT_ALIAS_PROXY_ONLY; /* do transparent proxying */
    1785         flags |= PKT_ALIAS_REVERSE; /* set logging */
     1787        flags |= pData->i32AliasMode;
     1788        flags |= PKT_ALIAS_REVERSE; /* set reverse  */
    17861789        flags = LibAliasSetMode(lib, flags, ~0);
    17871790
  • trunk/src/VBox/Devices/Network/slirp/slirp_state.h

    r28449 r28787  
    313313
    314314    LIST_HEAD(RT_NOTHING, libalias) instancehead;
     315    int    i32AliasMode;
    315316    struct libalias *proxy_alias;
    316317    struct libalias *dns_alias;
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