GNUnet  0.17.6
Macros | Functions | Variables
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.




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...


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

Detailed Description

tool to test resolver

Christian Grothoff

Definition in file gnunet-resolver.c.

Macro Definition Documentation


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

Function Documentation

◆ print_hostname()

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

Prints each hostname obtained from DNS.

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

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

48 {
49  (void) cls;
50  if (NULL == hostname)
51  return;
52  fprintf (stdout,
53  "%s\n",
54  hostname);
55 }
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 

Callback function to display address.

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

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

69 {
70  (void) cls;
71  if (NULL == addr)
72  return;
73  fprintf (stdout,
74  "%s\n",
75  GNUNET_a2s (addr,
76  addrlen));
77 }
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 

Main function that will be run by the scheduler.

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

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

93 {
94  const struct sockaddr *sa;
95  socklen_t salen;
96  struct sockaddr_in v4;
97  struct sockaddr_in6 v6;
99  (void) cls;
100  (void) cfgfile;
101  (void) cfg;
102  if (NULL == args[0])
103  return;
104  if (! reverse)
105  {
110  NULL);
111  return;
112  }
114  sa = NULL;
115  memset (&v4, 0, sizeof(v4));
116  v4.sin_family = AF_INET;
118  v4.sin_len = sizeof(v4);
119 #endif
120  if (1 == inet_pton (AF_INET,
121  args[0],
122  &v4.sin_addr))
123  {
124  sa = (struct sockaddr *) &v4;
125  salen = sizeof(v4);
126  }
127  memset (&v6, 0, sizeof(v6));
128  v6.sin6_family = AF_INET6;
130  v6.sin6_len = sizeof(v6);
131 #endif
132  if (1 == inet_pton (AF_INET6,
133  args[0],
134  &v6.sin6_addr))
135  {
136  sa = (struct sockaddr *) &v6;
137  salen = sizeof(v6);
138  }
139  if (NULL == sa)
140  {
141  fprintf (stderr,
142  "`%s' is not a valid IP: %s\n",
143  args[0],
144  strerror (errno));
145  return;
146  }
147  GNUNET_RESOLVER_hostname_get (sa, salen,
151  NULL);
152 }
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.
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:939
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.

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

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

164 {
167  "reverse",
168  gettext_noop ("perform a reverse lookup"),
169  &reverse),
171  };
172  int ret;
174  if (GNUNET_OK !=
175  GNUNET_STRINGS_get_utf8_args (argc, argv,
176  &argc, &argv))
177  return 2;
179  ret = (GNUNET_OK ==
180  GNUNET_PROGRAM_run (argc, argv,
181  "gnunet-resolver [hostname]",
182  gettext_noop ("Use built-in GNUnet stub resolver"),
183  options,
184  &run, NULL)) ? 0 : 1;
185  GNUNET_free_nz ((void *) argv);
186  return ret;
187 }
Definition: 002.c:13
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define gettext_noop(String)
Definition: gettext.h:69
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.
Definition: gnunet_common.h:99
#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:399
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:1223
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

Flag for reverse lookup.

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

Referenced by main(), and run().