The Pedigree Project 0.1
dns.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008-2014, Pedigree Developers
3 *
4 * Please see the CONTRIB file in the root of the source tree for a full
5 * list of contributors.
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
58#ifndef LWIP_HDR_DNS_H
59#define LWIP_HDR_DNS_H
60
61#include "lwip/opt.h"
62#include "lwip/err.h"
63
64#if LWIP_DNS
65
66#include "lwip/ip_addr.h"
67
68#ifdef __cplusplus
69extern "C" {
70#endif
71
73#define DNS_TMR_INTERVAL 1000
74
75/* DNS resolve types: */
76#define LWIP_DNS_ADDRTYPE_IPV4 0
77#define LWIP_DNS_ADDRTYPE_IPV6 1
78#define LWIP_DNS_ADDRTYPE_IPV4_IPV6 2 /* try to resolve IPv4 first, try IPv6 if IPv4 fails only */
79#define LWIP_DNS_ADDRTYPE_IPV6_IPV4 3 /* try to resolve IPv6 first, try IPv4 if IPv6 fails only */
80#if LWIP_IPV4 && LWIP_IPV6
81#ifndef LWIP_DNS_ADDRTYPE_DEFAULT
82#define LWIP_DNS_ADDRTYPE_DEFAULT LWIP_DNS_ADDRTYPE_IPV4_IPV6
83#endif
84#elif LWIP_IPV4
85#define LWIP_DNS_ADDRTYPE_DEFAULT LWIP_DNS_ADDRTYPE_IPV4
86#else
87#define LWIP_DNS_ADDRTYPE_DEFAULT LWIP_DNS_ADDRTYPE_IPV6
88#endif
89
90#if DNS_LOCAL_HOSTLIST
92struct local_hostlist_entry {
94 const char *name;
96 ip_addr_t addr;
97 struct local_hostlist_entry *next;
98};
99#define DNS_LOCAL_HOSTLIST_ELEM(name, addr_init) {name, addr_init, NULL}
100#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
101#ifndef DNS_LOCAL_HOSTLIST_MAX_NAMELEN
102#define DNS_LOCAL_HOSTLIST_MAX_NAMELEN DNS_MAX_NAME_LENGTH
103#endif
104#define LOCALHOSTLIST_ELEM_SIZE ((sizeof(struct local_hostlist_entry) + DNS_LOCAL_HOSTLIST_MAX_NAMELEN + 1))
105#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
106#endif /* DNS_LOCAL_HOSTLIST */
107
108#if LWIP_IPV4
109extern const ip_addr_t dns_mquery_v4group;
110#endif /* LWIP_IPV4 */
111#if LWIP_IPV6
112extern const ip_addr_t dns_mquery_v6group;
113#endif /* LWIP_IPV6 */
114
122typedef void (*dns_found_callback)(const char *name, const ip_addr_t *ipaddr, void *callback_arg);
123
124void dns_init(void);
125void dns_tmr(void);
126void dns_setserver(u8_t numdns, const ip_addr_t *dnsserver);
127const ip_addr_t* dns_getserver(u8_t numdns);
128err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr,
129 dns_found_callback found, void *callback_arg);
130err_t dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr,
131 dns_found_callback found, void *callback_arg,
132 u8_t dns_addrtype);
133
134
135#if DNS_LOCAL_HOSTLIST
136size_t dns_local_iterate(dns_found_callback iterator_fn, void *iterator_arg);
137err_t dns_local_lookup(const char *hostname, ip_addr_t *addr, u8_t dns_addrtype);
138#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC
139int dns_local_removehost(const char *hostname, const ip_addr_t *addr);
140err_t dns_local_addhost(const char *hostname, const ip_addr_t *addr);
141#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */
142#endif /* DNS_LOCAL_HOSTLIST */
143
144#ifdef __cplusplus
145}
146#endif
147
148#endif /* LWIP_DNS */
149
150#endif /* LWIP_HDR_DNS_H */
s8_t err_t
Definition err.h:76