1 //
2 // Copyright (C) 2011 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #include "shill/shill_ares.h"
18 
19 namespace shill {
20 
21 namespace {
22 base::LazyInstance<Ares> g_ares = LAZY_INSTANCE_INITIALIZER;
23 }  // namespace
24 
Ares()25 Ares::Ares() { }
26 
~Ares()27 Ares::~Ares() { }
28 
GetInstance()29 Ares* Ares::GetInstance() {
30   return g_ares.Pointer();
31 }
32 
Destroy(ares_channel channel)33 void Ares::Destroy(ares_channel channel) {
34   ares_destroy(channel);
35 }
36 
GetHostByName(ares_channel channel,const char * hostname,int family,ares_host_callback callback,void * arg)37 void Ares::GetHostByName(ares_channel channel,
38                          const char* hostname,
39                          int family,
40                          ares_host_callback callback,
41                          void* arg) {
42   ares_gethostbyname(channel, hostname, family, callback, arg);
43 }
44 
GetSock(ares_channel channel,ares_socket_t * socks,int numsocks)45 int Ares::GetSock(ares_channel channel,
46                   ares_socket_t* socks,
47                   int numsocks) {
48   return ares_getsock(channel, socks, numsocks);
49 }
50 
InitOptions(ares_channel * channelptr,struct ares_options * options,int optmask)51 int Ares::InitOptions(ares_channel* channelptr,
52                       struct ares_options* options,
53                       int optmask) {
54   return ares_init_options(channelptr, options, optmask);
55 }
56 
57 
ProcessFd(ares_channel channel,ares_socket_t read_fd,ares_socket_t write_fd)58 void Ares::ProcessFd(ares_channel channel,
59                      ares_socket_t read_fd,
60                      ares_socket_t write_fd) {
61   return ares_process_fd(channel, read_fd, write_fd);
62 }
63 
SetLocalDev(ares_channel channel,const char * local_dev_name)64 void Ares::SetLocalDev(ares_channel channel, const char* local_dev_name) {
65   ares_set_local_dev(channel, local_dev_name);
66 }
67 
Timeout(ares_channel channel,struct timeval * maxtv,struct timeval * tv)68 struct timeval* Ares::Timeout(ares_channel channel,
69                               struct timeval* maxtv,
70                               struct timeval* tv) {
71   return ares_timeout(channel, maxtv, tv);
72 }
73 
SetServersCsv(ares_channel channel,const char * servers)74 int Ares::SetServersCsv(ares_channel channel, const char* servers) {
75   return ares_set_servers_csv(channel, servers);
76 }
77 
78 }  // namespace shill
79