haiku/headers/private/net/dns_resolver.h
2012-08-16 03:41:29 +02:00

59 lines
1.1 KiB
C

/*
* Copyright 2012 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Paweł Dziepak, pdziepak@quarnos.org
*/
#ifndef DNS_RESOLVER_H
#define DNS_RESOLVER_H
#include <netdb.h>
#include <stdlib.h>
#include <module.h>
#define DNS_RESOLVER_MODULE_NAME "network/dns_resolver/v1"
struct dns_resolver_module {
module_info module;
status_t (*getaddrinfo)(const char* node, const char* service,
const struct addrinfo* hints, struct addrinfo** res);
};
static inline int
kgetaddrinfo(const char* node, const char* service,
const struct addrinfo* hints, struct addrinfo** res)
{
dns_resolver_module* dns;
status_t result = get_module(DNS_RESOLVER_MODULE_NAME,
reinterpret_cast<module_info**>(&dns));
if (result != B_OK)
return result;
result = dns->getaddrinfo(node, service, hints, res);
put_module(DNS_RESOLVER_MODULE_NAME);
return result;
}
static inline void
kfreeaddrinfo(struct addrinfo* res)
{
free(res);
}
#define getaddrinfo kgetaddrinfo
#define freeaddrinfo kfreeaddrinfo
#endif // DNS_RESOLVER_H