Tiny DNS Resolver
Dependencies: EthernetNetIf mbed
TinyResolver.h
00001 /* 00002 * mbed Tiny DNS Resolver 00003 * Copyright (c) 2011 Hiroshi Suga 00004 * Released under the MIT License: http://mbed.org/license/mit 00005 */ 00006 00007 /** @file 00008 * @brief Tiny DNS Resolver 00009 */ 00010 00011 #ifndef TinyResolver_h 00012 #define TinyResolver_h 00013 00014 #include <inttypes.h> 00015 00016 #define DEBUG 00017 00018 #define DNS_PORT 53 00019 #define DNS_SRC_PORT 1234 00020 #define DNS_TIMEOUT 15000 // ms 00021 00022 // dns 00023 #define DNS_QUERY_A 1 00024 #define DNS_QUERY_NS 2 00025 #define DNS_QUERY_CNAME 5 00026 #define DNS_QUERY_PTR 12 00027 #define DNS_QUERY_MX 15 00028 #define DNS_QUERY_AAAA 28 00029 #define DNS_QUERY_ANY 255 00030 #define DNS_CLASS_IN 1 00031 00032 struct DnsHeader { 00033 uint16_t id; 00034 uint16_t flags; 00035 uint16_t questions; 00036 uint16_t answers; 00037 uint16_t authorities; 00038 uint16_t additional; 00039 }; 00040 00041 struct DnsQuestionEnd { 00042 uint16_t type; 00043 uint16_t clas; 00044 }; 00045 00046 struct DnsAnswer { 00047 uint16_t name; 00048 uint16_t type; 00049 uint16_t clas; 00050 uint32_t ttl; 00051 uint16_t length; 00052 } __attribute__((packed)); 00053 00054 int createDnsRequest (char *name, char *buf); 00055 int getDnsResponse (const char *buf, int len, uint32_t *addr); 00056 00057 /** resolv host by name 00058 * @param nameserver DNS server 00059 * @param name hostname 00060 * @param addr IP address (return) 00061 * @return 0:success, -1:failue 00062 */ 00063 int getHostByName (IpAddr nameserver, const char *name, uint32_t *addr); 00064 00065 #endif
Generated on Wed Jul 13 2022 09:29:18 by 1.7.2