/***************************************************************************** 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; }
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; }