Tiny DNS Resolver

Dependencies:   EthernetNetIf mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TinyResolver.h Source File

TinyResolver.h

Go to the documentation of this file.
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