mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			[nsapi] Restructured nsapi_dns.h to have clear separation between C/C++
- Separated overloads based on language - Removed NSAPI_C_LINKAGE definitionpull/2497/head
							parent
							
								
									a3ecdf3b71
								
							
						
					
					
						commit
						4ffeec1797
					
				| 
						 | 
					@ -35,8 +35,7 @@ nsapi_addr_t dns_servers[DNS_SERVERS_SIZE] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DNS server configuration
 | 
					// DNS server configuration
 | 
				
			||||||
NSAPI_C_LINKAGE
 | 
					extern "C" int nsapi_dns_add_server(nsapi_addr_t addr)
 | 
				
			||||||
int nsapi_dns_add_server(nsapi_addr_t addr)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    memmove(&dns_servers[1], &dns_servers[0],
 | 
					    memmove(&dns_servers[1], &dns_servers[0],
 | 
				
			||||||
            (DNS_SERVERS_SIZE-1)*sizeof(nsapi_addr_t));
 | 
					            (DNS_SERVERS_SIZE-1)*sizeof(nsapi_addr_t));
 | 
				
			||||||
| 
						 | 
					@ -45,16 +44,6 @@ int nsapi_dns_add_server(nsapi_addr_t addr)
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int nsapi_dns_add_server(const SocketAddress &address)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return nsapi_dns_add_server(address.get_addr());
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int nsapi_dns_add_server(const char *address)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return nsapi_dns_add_server(SocketAddress(address));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DNS packet parsing
 | 
					// DNS packet parsing
 | 
				
			||||||
static void dns_append_byte(uint8_t **p, uint8_t byte)
 | 
					static void dns_append_byte(uint8_t **p, uint8_t byte)
 | 
				
			||||||
| 
						 | 
					@ -272,8 +261,7 @@ static int nsapi_dns_query_multiple(NetworkStack *stack,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// convenience functions for other forms of queries
 | 
					// convenience functions for other forms of queries
 | 
				
			||||||
NSAPI_C_LINKAGE
 | 
					extern "C" int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
				
			||||||
int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
					 | 
				
			||||||
        nsapi_addr_t *addr, unsigned addr_count,
 | 
					        nsapi_addr_t *addr, unsigned addr_count,
 | 
				
			||||||
        const char *host, nsapi_version_t version)
 | 
					        const char *host, nsapi_version_t version)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -281,14 +269,6 @@ int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
				
			||||||
    return nsapi_dns_query_multiple(nstack, addr, addr_count, host, version);
 | 
					    return nsapi_dns_query_multiple(nstack, addr, addr_count, host, version);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
					 | 
				
			||||||
        nsapi_addr_t *addr, unsigned addr_count,
 | 
					 | 
				
			||||||
        const char *host)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NetworkStack *nstack = nsapi_create_stack(stack);
 | 
					 | 
				
			||||||
    return nsapi_dns_query_multiple(nstack, addr, addr_count, host, NSAPI_IPv4);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int nsapi_dns_query_multiple(NetworkStack *stack,
 | 
					int nsapi_dns_query_multiple(NetworkStack *stack,
 | 
				
			||||||
        SocketAddress *addresses, unsigned addr_count,
 | 
					        SocketAddress *addresses, unsigned addr_count,
 | 
				
			||||||
        const char *host, nsapi_version_t version)
 | 
					        const char *host, nsapi_version_t version)
 | 
				
			||||||
| 
						 | 
					@ -306,8 +286,7 @@ int nsapi_dns_query_multiple(NetworkStack *stack,
 | 
				
			||||||
    return result;
 | 
					    return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NSAPI_C_LINKAGE
 | 
					extern "C" int nsapi_dns_query(nsapi_stack_t *stack,
 | 
				
			||||||
int nsapi_dns_query(nsapi_stack_t *stack,
 | 
					 | 
				
			||||||
        nsapi_addr_t *addr, const char *host, nsapi_version_t version)
 | 
					        nsapi_addr_t *addr, const char *host, nsapi_version_t version)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    NetworkStack *nstack = nsapi_create_stack(stack);
 | 
					    NetworkStack *nstack = nsapi_create_stack(stack);
 | 
				
			||||||
| 
						 | 
					@ -315,14 +294,6 @@ int nsapi_dns_query(nsapi_stack_t *stack,
 | 
				
			||||||
    return (result > 0) ? 0 : result;
 | 
					    return (result > 0) ? 0 : result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int nsapi_dns_query(nsapi_stack_t *stack,
 | 
					 | 
				
			||||||
        nsapi_addr_t *addr, const char *host)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    NetworkStack *nstack = nsapi_create_stack(stack);
 | 
					 | 
				
			||||||
    int result = nsapi_dns_query_multiple(nstack, addr, 1, host, NSAPI_IPv4);
 | 
					 | 
				
			||||||
    return (result > 0) ? 0 : result;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int nsapi_dns_query(NetworkStack *stack,
 | 
					int nsapi_dns_query(NetworkStack *stack,
 | 
				
			||||||
        SocketAddress *address, const char *host, nsapi_version_t version)
 | 
					        SocketAddress *address, const char *host, nsapi_version_t version)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,48 @@
 | 
				
			||||||
#define NSAPI_DNS_H
 | 
					#define NSAPI_DNS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "nsapi_types.h"
 | 
					#include "nsapi_types.h"
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
#include "network-socket/NetworkStack.h"
 | 
					#include "network-socket/NetworkStack.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __cplusplus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Query a domain name server for an IP address of a given hostname
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param stack    Network stack as target for DNS query
 | 
				
			||||||
 | 
					 *  @param addr     Destination for the host address
 | 
				
			||||||
 | 
					 *  @param host     Hostname to resolve
 | 
				
			||||||
 | 
					 *  @param version  IP version to resolve
 | 
				
			||||||
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 | 
					 *                  NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					int nsapi_dns_query(nsapi_stack_t *stack, nsapi_addr_t *addr,
 | 
				
			||||||
 | 
					        const char *host, nsapi_version_t version);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Query a domain name server for multiple IP address of a given hostname
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param stack      Network stack as target for DNS query
 | 
				
			||||||
 | 
					 *  @param addr       Array for the host addresses
 | 
				
			||||||
 | 
					 *  @param addr_count Number of addresses allocated in the array
 | 
				
			||||||
 | 
					 *  @param host       Hostname to resolve
 | 
				
			||||||
 | 
					 *  @param version    IP version to resolve
 | 
				
			||||||
 | 
					 *  @return           Number of addresses found on success, negative error code on failure
 | 
				
			||||||
 | 
					 *                    NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
				
			||||||
 | 
					        nsapi_addr_t *addr, unsigned addr_count,
 | 
				
			||||||
 | 
					        const char *host, nsapi_version_t version);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Add a domain name server to list of servers to query
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param addr     Destination for the host address
 | 
				
			||||||
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					int nsapi_dns_add_server(nsapi_addr_t addr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Query a domain name server for an IP address of a given hostname
 | 
					/** Query a domain name server for an IP address of a given hostname
 | 
				
			||||||
| 
						 | 
					@ -30,24 +71,36 @@
 | 
				
			||||||
 *  @return         0 on success, negative error code on failure
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 *                  NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
					 *                  NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
NSAPI_C_LINKAGE
 | 
					 | 
				
			||||||
int nsapi_dns_query(nsapi_stack_t *stack, nsapi_addr_t *addr,
 | 
					 | 
				
			||||||
        const char *host, nsapi_version_t version);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
int nsapi_dns_query(nsapi_stack_t *stack, nsapi_addr_t *addr,
 | 
					 | 
				
			||||||
        const char *host);
 | 
					 | 
				
			||||||
int nsapi_dns_query(NetworkStack *stack, SocketAddress *addr,
 | 
					int nsapi_dns_query(NetworkStack *stack, SocketAddress *addr,
 | 
				
			||||||
        const char *host, nsapi_version_t version = NSAPI_IPv4);
 | 
					        const char *host, nsapi_version_t version = NSAPI_IPv4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Query a domain name server for an IP address of a given hostname
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param stack    Network stack as target for DNS query
 | 
				
			||||||
 | 
					 *  @param addr     Destination for the host address
 | 
				
			||||||
 | 
					 *  @param host     Hostname to resolve
 | 
				
			||||||
 | 
					 *  @param version  IP version to resolve (defaults to NSAPI_IPv4)
 | 
				
			||||||
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 | 
					 *                  NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern "C" int nsapi_dns_query(nsapi_stack_t *stack, nsapi_addr_t *addr,
 | 
				
			||||||
 | 
					        const char *host, nsapi_version_t version = NSAPI_IPv4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Query a domain name server for an IP address of a given hostname
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param stack    Network stack as target for DNS query
 | 
				
			||||||
 | 
					 *  @param addr     Destination for the host address
 | 
				
			||||||
 | 
					 *  @param host     Hostname to resolve
 | 
				
			||||||
 | 
					 *  @param version  IP version to resolve (defaults to NSAPI_IPv4)
 | 
				
			||||||
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 | 
					 *                  NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
template <typename S>
 | 
					template <typename S>
 | 
				
			||||||
int nsapi_dns_query(S *stack, SocketAddress *addr,
 | 
					int nsapi_dns_query(S *stack, SocketAddress *addr,
 | 
				
			||||||
        const char *host, nsapi_version_t version = NSAPI_IPv4)
 | 
					        const char *host, nsapi_version_t version = NSAPI_IPv4)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return nsapi_dns_query(nsapi_create_stack(stack), addr, host, version);
 | 
					    return nsapi_dns_query(nsapi_create_stack(stack), addr, host, version);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Query a domain name server for multiple IP address of a given hostname
 | 
					/** Query a domain name server for multiple IP address of a given hostname
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -59,19 +112,34 @@ int nsapi_dns_query(S *stack, SocketAddress *addr,
 | 
				
			||||||
 *  @return           Number of addresses found on success, negative error code on failure
 | 
					 *  @return           Number of addresses found on success, negative error code on failure
 | 
				
			||||||
 *                    NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
					 *                    NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
NSAPI_C_LINKAGE
 | 
					 | 
				
			||||||
int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
					 | 
				
			||||||
        nsapi_addr_t *addr, unsigned addr_count,
 | 
					 | 
				
			||||||
        const char *host, nsapi_version_t version);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
					 | 
				
			||||||
        nsapi_addr_t *addr, unsigned addr_count,
 | 
					 | 
				
			||||||
        const char *host);
 | 
					 | 
				
			||||||
int nsapi_dns_query_multiple(NetworkStack *stack,
 | 
					int nsapi_dns_query_multiple(NetworkStack *stack,
 | 
				
			||||||
        SocketAddress *addr, unsigned addr_count,
 | 
					        SocketAddress *addr, unsigned addr_count,
 | 
				
			||||||
        const char *host, nsapi_version_t version = NSAPI_IPv4);
 | 
					        const char *host, nsapi_version_t version = NSAPI_IPv4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Query a domain name server for multiple IP address of a given hostname
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param stack      Network stack as target for DNS query
 | 
				
			||||||
 | 
					 *  @param addr       Array for the host addresses
 | 
				
			||||||
 | 
					 *  @param addr_count Number of addresses allocated in the array
 | 
				
			||||||
 | 
					 *  @param host       Hostname to resolve
 | 
				
			||||||
 | 
					 *  @param version    IP version to resolve (defaults to NSAPI_IPv4)
 | 
				
			||||||
 | 
					 *  @return           Number of addresses found on success, negative error code on failure
 | 
				
			||||||
 | 
					 *                    NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern "C" int nsapi_dns_query_multiple(nsapi_stack_t *stack,
 | 
				
			||||||
 | 
					        nsapi_addr_t *addr, unsigned addr_count,
 | 
				
			||||||
 | 
					        const char *host, nsapi_version_t version = NSAPI_IPv4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Query a domain name server for multiple IP address of a given hostname
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param stack      Network stack as target for DNS query
 | 
				
			||||||
 | 
					 *  @param addr       Array for the host addresses
 | 
				
			||||||
 | 
					 *  @param addr_count Number of addresses allocated in the array
 | 
				
			||||||
 | 
					 *  @param host       Hostname to resolve
 | 
				
			||||||
 | 
					 *  @param version    IP version to resolve (defaults to NSAPI_IPv4)
 | 
				
			||||||
 | 
					 *  @return           Number of addresses found on success, negative error code on failure
 | 
				
			||||||
 | 
					 *                    NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
template <typename S>
 | 
					template <typename S>
 | 
				
			||||||
int nsapi_dns_query_multiple(S *stack,
 | 
					int nsapi_dns_query_multiple(S *stack,
 | 
				
			||||||
        SocketAddress *addr, unsigned addr_count,
 | 
					        SocketAddress *addr, unsigned addr_count,
 | 
				
			||||||
| 
						 | 
					@ -80,24 +148,35 @@ int nsapi_dns_query_multiple(S *stack,
 | 
				
			||||||
    return nsapi_dns_query_multiple(nsapi_create_stack(stack),
 | 
					    return nsapi_dns_query_multiple(nsapi_create_stack(stack),
 | 
				
			||||||
                addr, addr_count, host, version);
 | 
					                addr, addr_count, host, version);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Add a domain name server to list of servers to query
 | 
					/** Add a domain name server to list of servers to query
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *  @param stack    Network stack as target for DNS query
 | 
					 | 
				
			||||||
 *  @param addr     Destination for the host address
 | 
					 *  @param addr     Destination for the host address
 | 
				
			||||||
 *  @param host     Hostname to resolve
 | 
					 | 
				
			||||||
 *  @return         0 on success, negative error code on failure
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 *                  NSAPI_ERROR_DNS_FAILURE indicates the host could not be found
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
NSAPI_C_LINKAGE
 | 
					extern "C" int nsapi_dns_add_server(nsapi_addr_t addr);
 | 
				
			||||||
int nsapi_dns_add_server(nsapi_addr_t addr);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					/** Add a domain name server to list of servers to query
 | 
				
			||||||
int nsapi_dns_add_server(const SocketAddress &address);
 | 
					 *
 | 
				
			||||||
int nsapi_dns_add_server(const char *address);
 | 
					 *  @param addr     Destination for the host address
 | 
				
			||||||
#endif
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static inline int nsapi_dns_add_server(const SocketAddress &address)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return nsapi_dns_add_server(address.get_addr());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Add a domain name server to list of servers to query
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  @param addr     Destination for the host address
 | 
				
			||||||
 | 
					 *  @return         0 on success, negative error code on failure
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static inline int nsapi_dns_add_server(const char *address)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return nsapi_dns_add_server(SocketAddress(address));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -148,18 +148,6 @@ typedef enum nsapi_option {
 | 
				
			||||||
} nsapi_option_t;
 | 
					} nsapi_option_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*  C linkage definition
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *  Attribute garuntees emitted function has C linkage.
 | 
					 | 
				
			||||||
 *  Available in both C and C++
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#ifdef __cplusplus
 | 
					 | 
				
			||||||
#define NSAPI_C_LINKAGE extern "C"
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define NSAPI_C_LINKAGE
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** nsapi_stack structure
 | 
					/** nsapi_stack structure
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *  Stack structure representing a specific instance of a stack.
 | 
					 *  Stack structure representing a specific instance of a stack.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue