VirtualBox

Changeset 22856 in vbox for trunk


Ignore:
Timestamp:
Sep 9, 2009 8:22:32 AM (15 years ago)
Author:
vboxsync
Message:

NAT: backed r52078 (slirp.c only)

File:
1 edited

Legend:

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

    r22843 r22856  
    207207};
    208208
    209 
    210209#ifdef RT_OS_WINDOWS
    211210static int get_dns_addr_domain(PNATState pData, bool fVerbose,
     
    341340    int found = 0;
    342341    struct in_addr tmp_addr;
    343     int nameservers = 0;
    344342
    345343#ifdef RT_OS_OS2
     
    443441
    444442#endif
    445 
    446 static void alias_init(PNATState pData, struct libalias **pla, int la_flags, struct in_addr addr)
    447 {
    448         int flags = 0;
    449         struct libalias *la;
    450         la = LibAliasInit(pData, NULL);
    451         if (la == NULL)
    452         {
    453             LogRel(("NAT: LibAlias default rule wasn't initialized\n"));
    454             AssertMsgFailed(("NAT: LibAlias default rule wasn't initialized\n"));
    455         }
    456         flags = LibAliasSetMode(la, 0, 0);
    457 #ifndef NO_FW_PUNCH
    458         flags |= PKT_ALIAS_PUNCH_FW;
    459 #endif
    460 #ifdef DEBUG
    461         flags |= PKT_ALIAS_LOG; /* set logging */
    462 #endif
    463         flags |= la_flags;
    464         flags = LibAliasSetMode(la, flags, ~0);
    465         LibAliasSetAddress(la, addr);
    466         *pla = la;
    467 }
    468443
    469444static int slirp_init_dns_list(PNATState pData)
     
    564539
    565540    /* set default addresses */
    566     loopback_addr.s_addr = INADDR_LOOPBACK;
     541    inet_aton("127.0.0.1", &loopback_addr);
    567542    if (slirp_init_dns_list(pData) < 0)
    568543        fNATfailed = 1;
     
    572547    getouraddr(pData);
    573548    {
     549        int flags = 0;
    574550        struct in_addr proxy_addr;
     551        pData->proxy_alias = LibAliasInit(pData, NULL);
     552        if (pData->proxy_alias == NULL)
     553        {
     554            LogRel(("NAT: LibAlias default rule wasn't initialized\n"));
     555            AssertMsgFailed(("NAT: LibAlias default rule wasn't initialized\n"));
     556        }
     557        flags = LibAliasSetMode(pData->proxy_alias, 0, 0);
     558#ifndef NO_FW_PUNCH
     559        flags |= PKT_ALIAS_PUNCH_FW;
     560#endif
     561        flags |= PKT_ALIAS_LOG; /* set logging */
     562        flags = LibAliasSetMode(pData->proxy_alias, flags, ~0);
    575563        proxy_addr.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_ALIAS);
    576         alias_init(pData, &pData->proxy_alias, 0, proxy_addr);
    577 
    578 #if 0
    579         proxy_addr.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_DNS);
    580         alias_init(pData, &pData->dns_alias, PKT_ALIAS_REVERSE, proxy_addr);
    581 #endif
    582 
     564        LibAliasSetAddress(pData->proxy_alias, proxy_addr);
    583565        ftp_alias_load(pData);
    584566        nbt_alias_load(pData);
    585         dns_alias_load(pData);
    586567    }
    587568    return fNATfailed ? VINF_NAT_DNS : VINF_SUCCESS;
     
    662643    ftp_alias_unload(pData);
    663644    nbt_alias_unload(pData);
    664     dns_alias_unload(pData);
    665645    while(!LIST_EMPTY(&instancehead))
    666646    {
     
    16571637        psin = (struct sockaddr_in *)&sa;
    16581638
     1639        lib = LibAliasInit(pData, NULL);
     1640        flags = LibAliasSetMode(lib, 0, 0);
     1641        flags |= PKT_ALIAS_LOG; /* set logging */
     1642        flags |= PKT_ALIAS_REVERSE; /* set logging */
     1643        flags = LibAliasSetMode(lib, flags, ~0);
    16591644
    16601645        alias.s_addr =  htonl(ntohl(guest_addr) | CTL_ALIAS);
    1661         alias_init(pData, &so->so_la, PKT_ALIAS_REVERSE, alias);
    1662         link = LibAliasRedirectPort(so->so_la, psin->sin_addr, htons(rule->host_port),
     1646        link = LibAliasRedirectPort(lib, psin->sin_addr, htons(rule->host_port),
    16631647            alias, htons(rule->guest_port),
    16641648            special_addr,  -1, /* not very clear for now*/
     
    16701654            goto remove_port_forwarding;
    16711655        }
     1656        so->so_la = lib;
    16721657        rule->activated = 1;
    16731658        continue;
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