5 #ifndef __bind_resolver_h__
6 #define __bind_resolver_h__
11 #include <boost/asio.hpp>
12 #include <boost/function.hpp>
16 typedef boost::function<void(uint8_t *, std::size_t)>
Callback;
29 const std::vector<DnsServer> &dns_servers,
30 uint16_t client_port,
Callback cb, uint8_t dscp);
33 bool DnsSend(uint8_t *pkt,
unsigned int dns_srv_index, std::size_t len);
34 bool DnsSend(uint8_t *pkt, boost::asio::ip::udp::endpoint ep,
39 static void Init(boost::asio::io_context &io,
40 const std::vector<DnsServer> &dns_servers,
41 uint16_t client_port,
Callback cb, uint8_t dscp);
49 std::size_t length, uint8_t *pkt);
55 boost::asio::ip::udp::socket
sock_;
56 std::vector<boost::asio::ip::udp::endpoint *>
dns_ep_;
63 #endif // __bind_resolver_h__
boost::asio::ip::udp::socket sock_
void SetDscpSocketOption()
static const int max_pkt_size
BindResolver(boost::asio::io_context &io, const std::vector< DnsServer > &dns_servers, uint16_t client_port, Callback cb, uint8_t dscp)
void SetDscpValue(uint8_t val)
static const uint8_t max_dns_servers
DISALLOW_COPY_AND_ASSIGN(BindResolver)
static BindResolver * resolver_
bool DnsSend(uint8_t *pkt, unsigned int dns_srv_index, std::size_t len)
static BindResolver * Resolver()
void DnsSendHandler(const boost::system::error_code &error, std::size_t length, uint8_t *pkt)
void SetupResolver(const DnsServer &server, uint8_t idx)
std::vector< boost::asio::ip::udp::endpoint * > dns_ep_
DnsServer(const std::string &ip, uint16_t port)
void DnsRcvHandler(const boost::system::error_code &error, std::size_t length)
static void Init(boost::asio::io_context &io, const std::vector< DnsServer > &dns_servers, uint16_t client_port, Callback cb, uint8_t dscp)
boost::function< void(uint8_t *, std::size_t)> Callback