GNUnet  0.20.0
gnunet-resolver.c File Reference

tool to test resolver More...

#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_resolver_service.h"
Include dependency graph for gnunet-resolver.c:

Go to the source code of this file.

Macros

#define GET_TIMEOUT   GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5)
 

Functions

static void print_hostname (void *cls, const char *hostname)
 Prints each hostname obtained from DNS. More...
 
static void print_sockaddr (void *cls, const struct sockaddr *addr, socklen_t addrlen)
 Callback function to display address. More...
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
 Main function that will be run by the scheduler. More...
 
int main (int argc, char *const *argv)
 The main function to access GNUnet's DNS resolver. More...
 

Variables

static int reverse
 Flag for reverse lookup. More...
 

Detailed Description

tool to test resolver

Author
Christian Grothoff

Definition in file gnunet-resolver.c.

Macro Definition Documentation

◆ GET_TIMEOUT

Definition at line 31 of file gnunet-resolver.c.

Function Documentation

◆ print_hostname()

static void print_hostname ( void *  cls,
const char *  hostname 
)
static

Prints each hostname obtained from DNS.

Parameters
clsclosure (unused)
hostnameone of the names for the host, NULL on the last call to the callback

Definition at line 47 of file gnunet-resolver.c.

49 {
50  (void) cls;
51  if (NULL == hostname)
52  return;
53  fprintf (stdout,
54  "%s\n",
55  hostname);
56 }
static char * hostname
Our hostname; we give this to all the peers we start.

References hostname.

Referenced by run().

Here is the caller graph for this function:

◆ print_sockaddr()

static void print_sockaddr ( void *  cls,
const struct sockaddr *  addr,
socklen_t  addrlen 
)
static

Callback function to display address.

Parameters
clsclosure (unused)
addrone of the addresses of the host, NULL for the last address
addrlenlength of the address

Definition at line 67 of file gnunet-resolver.c.

70 {
71  (void) cls;
72  if (NULL == addr)
73  return;
74  fprintf (stdout,
75  "%s\n",
76  GNUNET_a2s (addr,
77  addrlen));
78 }
const char * GNUNET_a2s(const struct sockaddr *addr, socklen_t addrlen)
Convert a "struct sockaddr*" (IPv4 or IPv6 address) to a string (for printing debug messages).

References GNUNET_a2s().

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run()

static void run ( void *  cls,
char *const *  args,
const char *  cfgfile,
const struct GNUNET_CONFIGURATION_Handle cfg 
)
static

Main function that will be run by the scheduler.

Parameters
clsclosure
argsremaining command-line arguments
cfgfilename of the configuration file used (for saving, can be NULL!)
cfgconfiguration

Definition at line 90 of file gnunet-resolver.c.

94 {
95  const struct sockaddr *sa;
96  socklen_t salen;
97  struct sockaddr_in v4;
98  struct sockaddr_in6 v6;
99 
100  (void) cls;
101  (void) cfgfile;
102  (void) cfg;
103  if (NULL == args[0])
104  return;
105  if (! reverse)
106  {
108  AF_UNSPEC,
109  GET_TIMEOUT,
111  NULL);
112  return;
113  }
114 
115  sa = NULL;
116  memset (&v4, 0, sizeof(v4));
117  v4.sin_family = AF_INET;
118 #if HAVE_SOCKADDR_IN_SIN_LEN
119  v4.sin_len = sizeof(v4);
120 #endif
121  if (1 == inet_pton (AF_INET,
122  args[0],
123  &v4.sin_addr))
124  {
125  sa = (struct sockaddr *) &v4;
126  salen = sizeof(v4);
127  }
128  memset (&v6, 0, sizeof(v6));
129  v6.sin6_family = AF_INET6;
130 #if HAVE_SOCKADDR_IN_SIN_LEN
131  v6.sin6_len = sizeof(v6);
132 #endif
133  if (1 == inet_pton (AF_INET6,
134  args[0],
135  &v6.sin6_addr))
136  {
137  sa = (struct sockaddr *) &v6;
138  salen = sizeof(v6);
139  }
140  if (NULL == sa)
141  {
142  fprintf (stderr,
143  "`%s' is not a valid IP: %s\n",
144  args[0],
145  strerror (errno));
146  return;
147  }
148  GNUNET_RESOLVER_hostname_get (sa, salen,
149  GNUNET_YES,
150  GET_TIMEOUT,
152  NULL);
153 }
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
Definition: gnunet-abd.c:36
static void print_sockaddr(void *cls, const struct sockaddr *addr, socklen_t addrlen)
Callback function to display address.
static void print_hostname(void *cls, const char *hostname)
Prints each hostname obtained from DNS.
static int reverse
Flag for reverse lookup.
#define GET_TIMEOUT
@ GNUNET_YES
struct GNUNET_RESOLVER_RequestHandle * GNUNET_RESOLVER_ip_get(const char *hostname, int af, struct GNUNET_TIME_Relative timeout, GNUNET_RESOLVER_AddressCallback callback, void *callback_cls)
Convert a string to one or more IP addresses.
Definition: resolver_api.c:940
struct GNUNET_RESOLVER_RequestHandle * GNUNET_RESOLVER_hostname_get(const struct sockaddr *sa, socklen_t salen, int do_resolve, struct GNUNET_TIME_Relative timeout, GNUNET_RESOLVER_HostnameCallback callback, void *cls)
Perform a reverse DNS lookup.

References consensus-simulation::args, cfg, GET_TIMEOUT, GNUNET_RESOLVER_hostname_get(), GNUNET_RESOLVER_ip_get(), GNUNET_YES, print_hostname(), print_sockaddr(), and reverse.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *const *  argv 
)

The main function to access GNUnet's DNS resolver.

Parameters
argcnumber of arguments from the command line
argvcommand line arguments
Returns
0 ok, 1 on error

Definition at line 164 of file gnunet-resolver.c.

165 {
168  "reverse",
169  gettext_noop ("perform a reverse lookup"),
170  &reverse),
172  };
173  int ret;
174 
175  if (GNUNET_OK !=
176  GNUNET_STRINGS_get_utf8_args (argc, argv,
177  &argc, &argv))
178  return 2;
179 
180  ret = (GNUNET_OK ==
181  GNUNET_PROGRAM_run (argc, argv,
182  "gnunet-resolver [hostname]",
183  gettext_noop ("Use built-in GNUnet stub resolver"),
184  options,
185  &run, NULL)) ? 0 : 1;
186  GNUNET_free_nz ((void *) argv);
187  return ret;
188 }
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
Definition: 002.c:13
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define gettext_noop(String)
Definition: gettext.h:70
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
Main function that will be run by the scheduler.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_flag(char shortName, const char *name, const char *description, int *val)
Allow user to specify a flag (which internally means setting an integer to 1/GNUNET_YES/GNUNET_OK.
@ GNUNET_OK
#define GNUNET_free_nz(ptr)
Wrapper around free.
enum GNUNET_GenericReturnValue GNUNET_PROGRAM_run(int argc, char *const *argv, const char *binaryName, const char *binaryHelp, const struct GNUNET_GETOPT_CommandLineOption *options, GNUNET_PROGRAM_Main task, void *task_cls)
Run a standard GNUnet command startup sequence (initialize loggers and configuration,...
Definition: program.c:400
enum GNUNET_GenericReturnValue GNUNET_STRINGS_get_utf8_args(int argc, char *const *argv, int *u8argc, char *const **u8argv)
Returns utf-8 encoded arguments.
Definition: strings.c:1222
Definition of a command line option.

References gettext_noop, GNUNET_free_nz, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_OK, GNUNET_PROGRAM_run(), GNUNET_STRINGS_get_utf8_args(), options, ret, reverse, and run().

Here is the call graph for this function:

Variable Documentation

◆ reverse

int reverse
static

Flag for reverse lookup.

Definition at line 36 of file gnunet-resolver.c.

Referenced by main(), and run().