/* * 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 #include #include #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(&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