mirror of
https://git.savannah.nongnu.org/git/lwip.git
synced 2026-05-22 08:06:51 +08:00
worked on task #12243 (Add support for AAAA/IPv6 records to DNS)
This commit is contained in:
@@ -149,6 +149,15 @@ enum netconn_igmp {
|
||||
};
|
||||
#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */
|
||||
|
||||
#if LWIP_DNS
|
||||
/* Used for netconn_gethostbyname_addrtype(), these should match the DNS_ADDRTYPE defines in dns.h */
|
||||
#define NETCONN_DNS_DEFAULT NETCONN_DNS_IPV4_IPV6
|
||||
#define NETCONN_DNS_IPV4 0
|
||||
#define NETCONN_DNS_IPV6 1
|
||||
#define NETCONN_DNS_IPV4_IPV6 2 /* try to resolve IPv4 first, try IPv6 if IPv4 fails only */
|
||||
#define NETCONN_DNS_IPV6_IPV4 3 /* try to resolve IPv6 first, try IPv4 if IPv6 fails only */
|
||||
#endif /* LWIP_DNS */
|
||||
|
||||
/* forward-declare some structs to avoid to include their headers */
|
||||
struct ip_pcb;
|
||||
struct tcp_pcb;
|
||||
@@ -283,7 +292,13 @@ LWIP_NETCONN_SCOPE err_t netconn_join_leave_group(struct netconn *conn, const
|
||||
const ip_addr_t *netif_addr, enum netconn_igmp join_or_leave);
|
||||
#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */
|
||||
#if LWIP_DNS
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
err_t netconn_gethostbyname_addrtype(const char *name, ip_addr_t *addr, u8_t dns_addrtype);
|
||||
#define netconn_gethostbyname(name, addr) netconn_gethostbyname_addrtype(name, addr, NETCONN_DNS_DEFAULT)
|
||||
#else /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
err_t netconn_gethostbyname(const char *name, ip_addr_t *addr);
|
||||
#define netconn_gethostbyname_addrtype(name, addr, dns_addrtype netconn_gethostbyname(name, addr)
|
||||
#endif /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
#endif /* LWIP_DNS */
|
||||
|
||||
#define netconn_err(conn) ((conn)->last_err)
|
||||
|
||||
@@ -171,6 +171,10 @@ struct dns_api_msg {
|
||||
#endif /* LWIP_MPU_COMPATIBLE */
|
||||
/** The resolved address is stored here */
|
||||
ip_addr_t API_MSG_M_DEF(addr);
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
/** Type of resolve call */
|
||||
u8_t dns_addrtype;
|
||||
#endif /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
/** This semaphore is posted when the name is resolved, the application thread
|
||||
should wait on it. */
|
||||
sys_sem_t API_MSG_M_DEF(sem);
|
||||
|
||||
@@ -45,37 +45,11 @@ extern "C" {
|
||||
/** DNS timer period */
|
||||
#define DNS_TMR_INTERVAL 1000
|
||||
|
||||
/** DNS field TYPE used for "Resource Records" */
|
||||
#define DNS_RRTYPE_A 1 /* a host address */
|
||||
#define DNS_RRTYPE_NS 2 /* an authoritative name server */
|
||||
#define DNS_RRTYPE_MD 3 /* a mail destination (Obsolete - use MX) */
|
||||
#define DNS_RRTYPE_MF 4 /* a mail forwarder (Obsolete - use MX) */
|
||||
#define DNS_RRTYPE_CNAME 5 /* the canonical name for an alias */
|
||||
#define DNS_RRTYPE_SOA 6 /* marks the start of a zone of authority */
|
||||
#define DNS_RRTYPE_MB 7 /* a mailbox domain name (EXPERIMENTAL) */
|
||||
#define DNS_RRTYPE_MG 8 /* a mail group member (EXPERIMENTAL) */
|
||||
#define DNS_RRTYPE_MR 9 /* a mail rename domain name (EXPERIMENTAL) */
|
||||
#define DNS_RRTYPE_NULL 10 /* a null RR (EXPERIMENTAL) */
|
||||
#define DNS_RRTYPE_WKS 11 /* a well known service description */
|
||||
#define DNS_RRTYPE_PTR 12 /* a domain name pointer */
|
||||
#define DNS_RRTYPE_HINFO 13 /* host information */
|
||||
#define DNS_RRTYPE_MINFO 14 /* mailbox or mail list information */
|
||||
#define DNS_RRTYPE_MX 15 /* mail exchange */
|
||||
#define DNS_RRTYPE_TXT 16 /* text strings */
|
||||
#define DNS_RRTYPE_AAAA 28 /* IPv6 address */
|
||||
|
||||
/** DNS field CLASS used for "Resource Records" */
|
||||
#define DNS_RRCLASS_IN 1 /* the Internet */
|
||||
#define DNS_RRCLASS_CS 2 /* the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */
|
||||
#define DNS_RRCLASS_CH 3 /* the CHAOS class */
|
||||
#define DNS_RRCLASS_HS 4 /* Hesiod [Dyer 87] */
|
||||
#define DNS_RRCLASS_FLUSH 0x800 /* Flush bit */
|
||||
|
||||
/* DNS resolve types: */
|
||||
#define LWIP_DNS_ADDRTYPE_IPV4_IPV6 0 /* try to resolve IPv4 first, try IPv6 if IPv4 fails only */
|
||||
#define LWIP_DNS_ADDRTYPE_IPV6_IPV4 0xFF /* try to resolve IPv6 first, try IPv4 if IPv6 fails only */
|
||||
#define LWIP_DNS_ADDRTYPE_IPV4 DNS_RRTYPE_A
|
||||
#define LWIP_DNS_ADDRTYPE_IPV6 DNS_RRTYPE_AAAA
|
||||
#define LWIP_DNS_ADDRTYPE_IPV4 0
|
||||
#define LWIP_DNS_ADDRTYPE_IPV6 1
|
||||
#define LWIP_DNS_ADDRTYPE_IPV4_IPV6 2 /* try to resolve IPv4 first, try IPv6 if IPv4 fails only */
|
||||
#define LWIP_DNS_ADDRTYPE_IPV6_IPV4 3 /* try to resolve IPv6 first, try IPv4 if IPv6 fails only */
|
||||
|
||||
#if DNS_LOCAL_HOSTLIST
|
||||
/** struct used for local host-list */
|
||||
|
||||
@@ -44,15 +44,19 @@ extern "C" {
|
||||
|
||||
/* some rarely used options */
|
||||
#ifndef LWIP_DNS_API_DECLARE_H_ERRNO
|
||||
#define LWIP_DNS_API_DECLARE_H_ERRNO 1
|
||||
#define LWIP_DNS_API_DECLARE_H_ERRNO 1
|
||||
#endif
|
||||
|
||||
#ifndef LWIP_DNS_API_DEFINE_ERRORS
|
||||
#define LWIP_DNS_API_DEFINE_ERRORS 1
|
||||
#define LWIP_DNS_API_DEFINE_ERRORS 1
|
||||
#endif
|
||||
|
||||
#ifndef LWIP_DNS_API_DEFINE_FLAGS
|
||||
#define LWIP_DNS_API_DEFINE_FLAGS 1
|
||||
#endif
|
||||
|
||||
#ifndef LWIP_DNS_API_DECLARE_STRUCTS
|
||||
#define LWIP_DNS_API_DECLARE_STRUCTS 1
|
||||
#define LWIP_DNS_API_DECLARE_STRUCTS 1
|
||||
#endif
|
||||
|
||||
#if LWIP_DNS_API_DEFINE_ERRORS
|
||||
@@ -69,6 +73,17 @@ extern "C" {
|
||||
#define TRY_AGAIN 213
|
||||
#endif /* LWIP_DNS_API_DEFINE_ERRORS */
|
||||
|
||||
#if LWIP_DNS_API_DEFINE_FLAGS
|
||||
/* input flags for struct addrinfo */
|
||||
#define AI_PASSIVE 0x01
|
||||
#define AI_CANONNAME 0x02
|
||||
#define AI_NUMERICHOST 0x04
|
||||
#define AI_NUMERICSERV 0x08
|
||||
#define AI_V4MAPPED 0x10
|
||||
#define AI_ALL 0x20
|
||||
#define AI_ADDRCONFIG 0x40
|
||||
#endif /* LWIP_DNS_API_DEFINE_FLAGS */
|
||||
|
||||
#if LWIP_DNS_API_DECLARE_STRUCTS
|
||||
struct hostent {
|
||||
char *h_name; /* Official name of the host. */
|
||||
|
||||
Reference in New Issue
Block a user