- Timestamp:
- Sep 19, 2009 7:19:33 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 52575
- Location:
- trunk/src/VBox/Devices/Network
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DrvNAT.cpp
r23141 r23158 805 805 if (!CFGMR3AreValuesValid(pCfgHandle, 806 806 "PassDomain\0TFTPPrefix\0BootFile\0Network" 807 "\0NextServer\0DNSProxy\0BindIP\0 "807 "\0NextServer\0DNSProxy\0BindIP\0UseHostResolver\0" 808 808 "SocketRcvBuf\0SocketSndBuf\0TcpRcvSpace\0TcpSndSpace\0")) 809 809 return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES, … … 839 839 int fDNSProxy = 0; 840 840 GET_S32(rc, pThis, pCfgHandle, "DNSProxy", fDNSProxy); 841 int fUseHostResolver = 0; 842 GET_S32(rc, pThis, pCfgHandle, "UseHostResolver", fUseHostResolver); 841 843 842 844 /* … … 880 882 * Initialize slirp. 881 883 */ 882 rc = slirp_init(&pThis->pNATState, &szNetAddr[0], Netmask, fPassDomain, pThis);884 rc = slirp_init(&pThis->pNATState, &szNetAddr[0], Netmask, fPassDomain, !!fUseHostResolver, pThis); 883 885 if (RT_SUCCESS(rc)) 884 886 { -
trunk/src/VBox/Devices/Network/slirp/bootp.c
r23154 r23158 270 270 FILL_BOOTP_EXT(q, RFC1533_GATEWAY, 4, &saddr); 271 271 272 if (pData->use_dns_proxy )272 if (pData->use_dns_proxy || pData->use_host_resolver) 273 273 { 274 274 uint32_t addr = htonl(ntohl(special_addr.s_addr) | CTL_DNS); … … 298 298 FILL_BOOTP_EXT(q, RFC1533_DOMAINNAME, 1, " "); 299 299 } 300 if (pData->fPassDomain )300 if (pData->fPassDomain && !pData->use_host_resolver) 301 301 { 302 302 LIST_FOREACH(dd, &pData->dns_domain_list_head, dd_list) -
trunk/src/VBox/Devices/Network/slirp/libslirp.h
r22206 r23158 29 29 30 30 #ifndef VBOX_WITH_NAT_SERVICE 31 int slirp_init(PNATState *, const char *, uint32_t, bool, void *);31 int slirp_init(PNATState *, const char *, uint32_t, bool, bool, void *); 32 32 #else 33 33 int slirp_init(PNATState *, uint32_t, uint32_t, bool, void *); -
trunk/src/VBox/Devices/Network/slirp/slirp.c
r23154 r23158 503 503 #ifndef VBOX_WITH_NAT_SERVICE 504 504 int slirp_init(PNATState *ppData, const char *pszNetAddr, uint32_t u32Netmask, 505 bool fPassDomain, void *pvUser)505 bool fPassDomain, bool fUseHostResolver, void *pvUser) 506 506 #else 507 507 int slirp_init(PNATState *ppData, uint32_t u32NetAddr, uint32_t u32Netmask, … … 518 518 /* CTL is x.x.x.15, bootp passes up to 16 IPs (15..31) */ 519 519 return VERR_INVALID_PARAMETER; 520 pData->fPassDomain = fPassDomain; 520 pData->fPassDomain = !fUseHostResolver ? fPassDomain : false; 521 pData->use_host_resolver = fUseHostResolver; 521 522 pData->pvUser = pvUser; 522 523 pData->netmask = u32Netmask; … … 573 574 /* set default addresses */ 574 575 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 } 581 583 582 584 getouraddr(pData); … … 600 602 ftp_alias_load(pData); 601 603 nbt_alias_load(pData); 602 dns_alias_load(pData); 604 if (pData->use_host_resolver) 605 dns_alias_load(pData); 603 606 } 604 607 return fNATfailed ? VINF_NAT_DNS : VINF_SUCCESS; … … 679 682 ftp_alias_unload(pData); 680 683 nbt_alias_unload(pData); 681 dns_alias_unload(pData); 684 if (pData->use_host_resolver) 685 dns_alias_unload(pData); 682 686 while(!LIST_EMPTY(&instancehead)) 683 687 { … … 1890 1894 void slirp_set_dhcp_dns_proxy(PNATState pData, bool fDNSProxy) 1891 1895 { 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 } 1894 1905 } 1895 1906 -
trunk/src/VBox/Devices/Network/slirp/slirp_state.h
r23154 r23158 261 261 uma_zone_t zone_ext_refcnt; 262 262 #endif 263 263 int use_host_resolver; 264 264 /* from dnsproxy/dnsproxy.h*/ 265 265 unsigned int authoritative_port; -
trunk/src/VBox/Devices/Network/slirp/udp.c
r23154 r23158 257 257 * DNS proxy 258 258 */ 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)) 261 261 && (ntohs(uh->uh_dport) == 53)) 262 262 { … … 264 264 goto done; 265 265 } 266 #endif267 266 268 267 iphlen += sizeof(struct udphdr);
Note:
See TracChangeset
for help on using the changeset viewer.