Beispiel #1
0
//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;
}
Beispiel #2
0
// 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
}