コード例 #1
0
/*****************************************************************************
  Function:
	void DNSResolve(uint8_t* Hostname, DNS_RESOLVE_TYPE Type)

  Summary:
	Begins resolution of an address.
	
  Description:
	This function attempts to resolve a host name to an IP address.  When 
	called, it starts the DNS state machine.  Call DNSIsResolved repeatedly
	to determine if the resolution is complete.
	
	Only one DNS resoultion may be executed at a time.  The Hostname must 
	not be modified in memory until the resolution is complete.

  Precondition:
	DNSBeginUsage returned DNS_RES_OK on a previous call.

  Parameters:
	Hostname - A pointer to the null terminated string specifiying the
		host for which to resolve an IP.
	RecordType - DNS_TYPE_A or DNS_TYPE_MX depending on what type of
		record resolution is desired.

  Returns:
  	DNS_RES_OK
  	
  Remarks:
	This function requires access to one UDP socket.  If none are available,
	UDP_MAX_SOCKETS may need to be increased.

  ***************************************************************************/
DNS_RESULT DNSResolve(const char* Hostname, DNS_RESOLVE_TYPE Type)
{
	if(TCPIP_HELPER_StringToIPAddress(Hostname, &ResolvedAddress.ipv4Address))
	{
		Flags.bits.AddressValid = true;
		smDNS = DNS_DONE;
        Flags.bits.AddressType = IP_ADDRESS_TYPE_IPV4;
	}
#if defined (TCPIP_STACK_USE_IPV6)
    else if (TCPIP_HELPER_StringToIPv6Address ((uint8_t *)Hostname, &ResolvedAddress.ipv6Address))
    {
        Flags.bits.AddressValid = true;
        Flags.bits.AddressType = IP_ADDRESS_TYPE_IPV6;
        smDNS = DNS_DONE;
    }
#endif
	else
	{	
		smDNS = DNS_START;
		RecordType = (uint8_t)Type;
		Flags.bits.AddressValid = false;
    }

    DNSHostName = Hostname;
    return DNS_RES_OK;
}
コード例 #2
0
bool Ping6 (char * target)
{
    if (pingState != STATE_IDLE)
        return false;

    pNetIf = (NET_CONFIG*)TCPIP_STACK_GetDefaultNet();

    pingCount = 0;

    if (TCPIP_HELPER_StringToIPv6Address ((uint8_t *)target, &targetAddressIPv6))
    {
        // The user passed in a valid IPv6 address
        pingState = STATE_SEND_ECHO_REQUEST_IPV6;
    }
    else
    {
        // The user passed in a host name
        targetHostName = target;
        pingState = STATE_DNS_SEND_QUERY_IPV6;
    }

    return true;
}