fix headers, clang-format, favor llarp::Addr

pull/19/head
Ryan Tharp 6 years ago
parent f032a83e37
commit 6bfd55f3f4

@ -1,8 +1,8 @@
#ifndef LIBLLARP_DNSC_HPP
#define LIBLLARP_DNSC_HPP
#include <llarp/ev.h> // for sockaadr
#include "dns.hpp" // get protocol structs
#include <llarp/ev.h> // for sockaadr
#include <llarp/dns.hpp> // get protocol structs
// internal, non-public functions
// well dnsc init/stop are public...
@ -27,7 +27,7 @@ struct dnsc_answer_request
dnsc_answer_hook_func resolved;
/// result
bool found;
struct sockaddr result;
llarp::Addr result;
std::string revDNS;
// a reference to dnsc_context incase of multiple contexts
struct dnsc_context *context;
@ -35,14 +35,19 @@ struct dnsc_answer_request
/// event handler for processing DNS responses
void
llarp_handle_dnsc_recvfrom(struct llarp_udp_io *udp,
llarp_handle_dnsc_recvfrom(struct llarp_udp_io *const udp,
const struct sockaddr *addr, const void *buf,
ssize_t sz);
const ssize_t sz);
/// generic handler for processing DNS responses
/// this doesn't look like it exists
/// that's because raw_resolve_host calls generic_handle_dnsc_recvfrom directly
/// because we don't need a callback like recvfrom
/// because we're not evented
/// however daemon/dns expects this
void
raw_handle_recvfrom(int *sockfd, const struct sockaddr *addr, const void *buf,
ssize_t sz);
const ssize_t sz);
/// DNS client context (one needed per upstream DNS server)
struct dnsc_context
@ -61,27 +66,28 @@ struct dnsc_context
/// async resolve a hostname using generic socks
void
raw_resolve_host(struct dnsc_context *dnsc, const char *url,
dnsc_answer_hook_func resolved, void *user);
raw_resolve_host(struct dnsc_context *const dnsc, const char *url,
dnsc_answer_hook_func resolved, void *const user);
/// async resolve a hostname using llarp platform framework
bool
llarp_resolve_host(struct dnsc_context *dns, const char *url,
dnsc_answer_hook_func resolved, void *user);
llarp_resolve_host(struct dnsc_context *const dns, const char *url,
dnsc_answer_hook_func resolved, void *const user);
/// cleans up request structure allocations
void
llarp_host_resolved(dnsc_answer_request *request);
llarp_host_resolved(dnsc_answer_request *const request);
/// initialize dns subsystem and bind socket
/// returns true on bind success otherwise returns false
bool
llarp_dnsc_init(struct dnsc_context *dnsc, struct llarp_logic *logic,
struct llarp_ev_loop *netloop,
llarp_dnsc_init(struct dnsc_context *const dnsc,
struct llarp_logic *const logic,
struct llarp_ev_loop *const netloop,
const llarp::Addr &dnsc_sockaddr);
/// shutdowns any events, and deallocates for this context
bool
llarp_dnsc_stop(struct dnsc_context *dnsc);
llarp_dnsc_stop(struct dnsc_context *const dnsc);
#endif

@ -133,7 +133,8 @@ answer_request_alloc(struct dnsc_context *dnsc, void *sock, const char *url,
if(id == 65535)
id = 0;
// conflict: do we need this?
//tracker->client_request[id] = std::unique_ptr< dnsc_answer_request >(request);
// tracker->client_request[id] = std::unique_ptr< dnsc_answer_request
// >(request);
dns_query *dns_packet = build_dns_packet(
(char *)request->question.name.c_str(), id, request->question.type);
@ -264,8 +265,8 @@ generic_handle_dnsc_recvfrom(dnsc_answer_request *request,
llarp::LogDebug("Read answer, bytes left ", diff);
if(diff > sz)
{
llarp::LogWarn("Would read past end of dns packet. for ",
request->question.name);
// llarp::LogWarn("Would read past end of dns packet. for ",
// request->question.name);
break;
}
}
@ -319,7 +320,8 @@ generic_handle_dnsc_recvfrom(dnsc_answer_request *request,
if(answer == nullptr)
{
llarp::LogWarn("nameserver ", upstreamAddr, " didnt return any answers:");
llarp::LogWarn("nameserver ", upstreamAddr,
" didnt return any answers for ", question->name);
request->resolved(request);
return;
}
@ -370,6 +372,7 @@ generic_handle_dnsc_recvfrom(dnsc_answer_request *request,
if(answer->rdLen == 4)
{
/*
request->result.sa_family = AF_INET;
#if((__APPLE__ && __MACH__) || __FreeBSD__)
request->result.sa_len = sizeof(in_addr);
@ -382,9 +385,12 @@ generic_handle_dnsc_recvfrom(dnsc_answer_request *request,
ip[1] = answer->rData[1];
ip[2] = answer->rData[2];
ip[3] = answer->rData[3];
*/
request->result.from_4int(answer->rData[0], answer->rData[1],
answer->rData[2], answer->rData[3]);
llarp::Addr test(request->result);
llarp::LogDebug(test);
// llarp::Addr test(request->result);
// llarp::LogDebug(request->result);
request->found = true;
request->resolved(request);
return;
@ -408,8 +414,8 @@ generic_handle_dnsc_recvfrom(dnsc_answer_request *request,
}
void
raw_resolve_host(struct dnsc_context *dnsc, const char *url,
dnsc_answer_hook_func resolved, void *user)
raw_resolve_host(struct dnsc_context *const dnsc, const char *url,
dnsc_answer_hook_func resolved, void *const user)
{
dns_query *dns_packet =
answer_request_alloc(dnsc, nullptr, url, resolved, user);
@ -451,13 +457,8 @@ raw_resolve_host(struct dnsc_context *dnsc, const char *url,
// hexdump("sending packet", &dnsQuery.request, dnsQuery.length);
#ifdef _WIN32
ret = sendto(sockfd, (const char *)dns_packet->request, dns_packet->length, 0,
(struct sockaddr *)&addr, size);
#else
ret = sendto(sockfd, (const char *)dns_packet->request, dns_packet->length, 0,
(struct sockaddr *)&addr, size);
#endif
delete dns_packet;
if(ret < 0)
@ -502,9 +503,9 @@ raw_resolve_host(struct dnsc_context *dnsc, const char *url,
/// intermediate udp_io handler
void
llarp_handle_dnsc_recvfrom(struct llarp_udp_io *udp,
llarp_handle_dnsc_recvfrom(struct llarp_udp_io *const udp,
const struct sockaddr *saddr, const void *buf,
ssize_t sz)
const ssize_t sz)
{
unsigned char *castBuf = (unsigned char *)buf;
// auto buffer = llarp::StackBuffer< decltype(castBuf) >(castBuf);
@ -528,8 +529,8 @@ llarp_handle_dnsc_recvfrom(struct llarp_udp_io *udp,
}
bool
llarp_resolve_host(struct dnsc_context *dnsc, const char *url,
dnsc_answer_hook_func resolved, void *user)
llarp_resolve_host(struct dnsc_context *const dnsc, const char *url,
dnsc_answer_hook_func resolved, void *const user)
{
// FIXME: probably can be stack allocated
dns_query *dns_packet =
@ -594,7 +595,7 @@ llarp_resolve_host(struct dnsc_context *dnsc, const char *url,
}
void
llarp_host_resolved(dnsc_answer_request *request)
llarp_host_resolved(dnsc_answer_request *const request)
{
dns_tracker *tracker = (dns_tracker *)request->context->tracker;
auto val = std::find_if(
@ -612,8 +613,10 @@ llarp_host_resolved(dnsc_answer_request *request)
}
bool
llarp_dnsc_init(struct dnsc_context *dnsc, struct llarp_logic *logic,
struct llarp_ev_loop *netloop, const llarp::Addr &dnsc_sockaddr)
llarp_dnsc_init(struct dnsc_context *const dnsc,
struct llarp_logic *const logic,
struct llarp_ev_loop *const netloop,
const llarp::Addr &dnsc_sockaddr)
{
// create client socket
if(netloop)
@ -640,7 +643,7 @@ llarp_dnsc_init(struct dnsc_context *dnsc, struct llarp_logic *logic,
}
bool
llarp_dnsc_stop(struct dnsc_context *dnsc)
llarp_dnsc_stop(struct dnsc_context *const dnsc)
{
// delete(sockaddr_in *)dnsc->server; // deallocation
return true;

Loading…
Cancel
Save