VirtualBox

Changeset 23158 in vbox for trunk/src


Ignore:
Timestamp:
Sep 19, 2009 7:19:33 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
52575
Message:

NAT: UseHostResolver extradata was introduced
and its relations with PassDomain and UseDNSProxy
have been clarified.

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

Legend:

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

    r23141 r23158  
    805805    if (!CFGMR3AreValuesValid(pCfgHandle,
    806806                              "PassDomain\0TFTPPrefix\0BootFile\0Network"
    807                               "\0NextServer\0DNSProxy\0BindIP\0"
     807                              "\0NextServer\0DNSProxy\0BindIP\0UseHostResolver\0"
    808808                              "SocketRcvBuf\0SocketSndBuf\0TcpRcvSpace\0TcpSndSpace\0"))
    809809        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES,
     
    839839    int fDNSProxy = 0;
    840840    GET_S32(rc, pThis, pCfgHandle, "DNSProxy", fDNSProxy);
     841    int fUseHostResolver = 0;
     842    GET_S32(rc, pThis, pCfgHandle, "UseHostResolver", fUseHostResolver);
    841843
    842844    /*
     
    880882     * Initialize slirp.
    881883     */
    882     rc = slirp_init(&pThis->pNATState, &szNetAddr[0], Netmask, fPassDomain, pThis);
     884    rc = slirp_init(&pThis->pNATState, &szNetAddr[0], Netmask, fPassDomain, !!fUseHostResolver, pThis);
    883885    if (RT_SUCCESS(rc))
    884886    {
  • trunk/src/VBox/Devices/Network/slirp/bootp.c

    r23154 r23158  
    270270    FILL_BOOTP_EXT(q, RFC1533_GATEWAY, 4, &saddr);
    271271   
    272     if (pData->use_dns_proxy)
     272    if (pData->use_dns_proxy || pData->use_host_resolver)
    273273    {
    274274        uint32_t addr = htonl(ntohl(special_addr.s_addr) | CTL_DNS);
     
    298298            FILL_BOOTP_EXT(q, RFC1533_DOMAINNAME, 1, " ");
    299299    }
    300     if (pData->fPassDomain)
     300    if (pData->fPassDomain && !pData->use_host_resolver)
    301301    {
    302302        LIST_FOREACH(dd, &pData->dns_domain_list_head, dd_list)
  • trunk/src/VBox/Devices/Network/slirp/libslirp.h

    r22206 r23158  
    2929
    3030#ifndef VBOX_WITH_NAT_SERVICE
    31 int slirp_init(PNATState *, const char *, uint32_t, bool, void *);
     31int slirp_init(PNATState *, const char *, uint32_t, bool, bool, void *);
    3232#else
    3333int slirp_init(PNATState *, uint32_t, uint32_t, bool, void *);
  • trunk/src/VBox/Devices/Network/slirp/slirp.c

    r23154 r23158  
    503503#ifndef VBOX_WITH_NAT_SERVICE
    504504int slirp_init(PNATState *ppData, const char *pszNetAddr, uint32_t u32Netmask,
    505                bool fPassDomain, void *pvUser)
     505               bool fPassDomain, bool fUseHostResolver, void *pvUser)
    506506#else
    507507int slirp_init(PNATState *ppData, uint32_t u32NetAddr, uint32_t u32Netmask,
     
    518518        /* CTL is x.x.x.15, bootp passes up to 16 IPs (15..31) */
    519519        return VERR_INVALID_PARAMETER;
    520     pData->fPassDomain = fPassDomain;
     520    pData->fPassDomain = !fUseHostResolver ? fPassDomain : false;
     521    pData->use_host_resolver = fUseHostResolver;
    521522    pData->pvUser = pvUser;
    522523    pData->netmask = u32Netmask;
     
    573574    /* set default addresses */
    574575    inet_aton("127.0.0.1", &loopback_addr);
    575     if (slirp_init_dns_list(pData) < 0)
    576         fNATfailed = 1;
    577 
    578 #ifndef VBOX_WITH_SLIRP_BSD_MBUF
    579     dnsproxy_init(pData);
    580 #endif
     576    if (!pData->use_host_resolver)
     577    {
     578        if (slirp_init_dns_list(pData) < 0)
     579            fNATfailed = 1;
     580
     581        dnsproxy_init(pData);
     582    }
    581583
    582584    getouraddr(pData);
     
    600602        ftp_alias_load(pData);
    601603        nbt_alias_load(pData);
    602         dns_alias_load(pData);
     604        if (pData->use_host_resolver)
     605            dns_alias_load(pData);
    603606    }
    604607    return fNATfailed ? VINF_NAT_DNS : VINF_SUCCESS;
     
    679682    ftp_alias_unload(pData);
    680683    nbt_alias_unload(pData);
    681     dns_alias_unload(pData);
     684    if (pData->use_host_resolver)
     685        dns_alias_unload(pData);
    682686    while(!LIST_EMPTY(&instancehead))
    683687    {
     
    18901894void slirp_set_dhcp_dns_proxy(PNATState pData, bool fDNSProxy)
    18911895{
    1892     Log2(("NAT: DNS proxy switched %s\n", (fDNSProxy ? "on" : "off")));
    1893     pData->use_dns_proxy = fDNSProxy;
     1896    if (!pData->use_host_resolver)
     1897    {
     1898        Log2(("NAT: DNS proxy switched %s\n", (fDNSProxy ? "on" : "off")));
     1899        pData->use_dns_proxy = fDNSProxy;
     1900    }
     1901    else
     1902    {
     1903        LogRel(("NAT: Host Resolver conflicts with DNS proxy, the last one was forcely ignored\n"));
     1904    }
    18941905}
    18951906
  • trunk/src/VBox/Devices/Network/slirp/slirp_state.h

    r23154 r23158  
    261261    uma_zone_t zone_ext_refcnt;
    262262#endif
    263 
     263    int use_host_resolver;
    264264    /* from dnsproxy/dnsproxy.h*/
    265265    unsigned int authoritative_port;
  • trunk/src/VBox/Devices/Network/slirp/udp.c

    r23154 r23158  
    257257     * DNS proxy
    258258     */
    259 #if 0
    260     if (  (ip->ip_dst.s_addr == htonl(ntohl(special_addr.s_addr) | CTL_DNS))
     259    if (   pData->use_dns_proxy
     260        && (ip->ip_dst.s_addr == htonl(ntohl(special_addr.s_addr) | CTL_DNS))
    261261        && (ntohs(uh->uh_dport) == 53))
    262262    {
     
    264264        goto done;
    265265    }
    266 #endif
    267266
    268267    iphlen += sizeof(struct udphdr);
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