//gets static member m_DomainName void OsSocket::getDomainName(UtlString &domain_name) { if (m_DomainName == NULL) { #ifdef __pingtel_on_posix__ char nameBuffer[DOMAIN_NAME_LENGTH]; if (0 == getdomainname(nameBuffer, DOMAIN_NAME_LENGTH - 1)) { m_DomainName = nameBuffer; } #endif //__pingtel_on_posix__ #ifdef _VXWORKS RESOLV_PARAMS_S resolvParams; resolvParamsGet(&resolvParams); m_DomainName = resolvParams.domainName; #endif //VXWORKS #ifdef WIN32 char domain[DOMAIN_NAME_LENGTH]; getWindowsDomainName (domain); m_DomainName = domain; #endif //WIN32 } domain_name = m_DomainName; }
// Returns TRUE if this host has a default DNS domain UtlBoolean OsSocket::hasDefaultDnsDomain() { #ifdef _VXWORKS RESOLV_PARAMS_S resolvParams; resolvParamsGet(&resolvParams); return (strlen(resolvParams.domainName) != 0); #else // For now, on non-vxWorks platforms, assume that the host has a // default domain name. return TRUE; #endif }
/* Read /etc/resolv.conf and configure the resolver from it. */ Boolean ssh_dns_resolver_read_resolv_conf(SshDNSResolver resolver, unsigned char *name) { #ifndef VXWORKS unsigned char *buffer, *p, *q, c; SshIpAddrStruct address[1]; size_t buffer_len; int i; if (!ssh_read_file_with_limit((char *)name, 65536, &buffer, &buffer_len)) return FALSE; ssh_dns_resolver_safety_belt_clear(resolver); i = 0; p = buffer; while (buffer_len > 0) { SKIP_SPACE(p, buffer_len); if (buffer_len < 10) break; if (strncasecmp((char *)p, "nameserver", 9) == 0 && isspace(p[10])) { p += 10; buffer_len -= 10; SKIP_SPACE(p, buffer_len); q = p; FIND_SPACE(q, buffer_len); c = *q; *q = '\0'; if (ssh_ipaddr_parse(address, p)) { ssh_dns_resolver_safety_belt_add(resolver, 1, address); i++; } *q = c; p = q; } FIND_NEWLINE(p, buffer_len); } ssh_free(buffer); if (i == 0) return FALSE; return TRUE; #else /* VXWORKS */ /* Get name server addresses from VxWorks name resolver. VxWorks resolver is enabled by defining: #define INCLUDE_DNS_RESOLVER #define RESOLVER_DOMAIN_SERVER "90.0.0.3" #define RESOLVER_DOMAIN "wrs.com" In $WIND_BASE/target/config/xxx/config.h or $WIND_BASEtarget/config/all/configAll.h. If INCLUDE_DNS_RESOLVER is not defined, VxWorks returns name server address 0.0.0.0. */ int i, addr_cnt; RESOLV_PARAMS_S resolv_params; SshIpAddrStruct address[1]; ssh_dns_resolver_safety_belt_clear(resolver); resolvParamsGet(&resolv_params); for(addr_cnt = i = 0; i < MAXNS; i++) { if (ssh_ipaddr_parse(address, resolv_params.nameServersAddr[i])) { ssh_dns_resolver_safety_belt_add(resolver, 1, address); addr_cnt++; } } return addr_cnt > 0; #endif }