26 #include <netcomm/utils/resolver.h> 27 #include <utils/system/argparser.h> 28 #include <utils/system/signal.h> 30 # include <netcomm/dns-sd/avahi_thread.h> 33 #include <arpa/inet.h> 34 #include <netinet/in.h> 55 printf(
"Instantiating Avahi thread\n");
58 at->wait_initialized();
64 printf(
"Avahi not available at compile time\n");
85 struct sockaddr_in *s = NULL;
88 char *test = (
char *)malloc(strlen(
"127.0.0.1") + 1);
89 strcpy(test,
"127.0.0.1");
90 r->resolve_name(test, (
struct sockaddr **)&s, &slen);
93 while (!quit && !r->resolve_name(
"127.0.0.1", (
struct sockaddr **)&s, &slen)) {
99 printf(
"Successfully resolved to 0x%x\n", s->sin_addr.s_addr);
101 if (!r->resolve_name(
"127.0.0.1", (
struct sockaddr **)&s, &slen)) {
102 printf(
"A second try to resolve failed after first success, cache broken\n");
104 printf(
"Successfully resolved to 0x%x again\n", s->sin_addr.s_addr);
108 if (!r->resolve_address((
struct sockaddr *)s, slen, name)) {
111 printf(
"Successfully resolved address to '%s'\n", name.c_str());
115 if ((atmp = argp->
arg(
"h")) != NULL) {
116 printf(
"Trying to resolve %s\n", atmp);
117 while (!quit && !r->resolve_name(atmp, (
struct sockaddr **)&s, &slen)) {
123 char addrp[INET_ADDRSTRLEN];
124 inet_ntop(AF_INET, &(s->sin_addr), addrp,
sizeof(addrp));
125 printf(
"Successfully resolved to 0x%x (%s)\n", s->sin_addr.s_addr, addrp);
127 struct sockaddr_in so;
130 so.sin_addr.s_addr = s->sin_addr.s_addr;
131 r->resolve_address((
struct sockaddr *)&so, slen, tmp);
132 printf(
"Waiting one second to allow resolver thread to suceed\n");
134 if (r->resolve_address((
struct sockaddr *)&so, slen, tmp)) {
135 printf(
"Successfully resolved 0x%x to %s\n", so.sin_addr.s_addr, tmp.c_str());
139 if ((atmp = argp->
arg(
"i")) != NULL) {
140 printf(
"Resolving %s, press Ctrl-C to end...\n", atmp);
142 if (inet_pton(AF_INET, atmp, &ia) == 1) {
144 struct sockaddr_in so;
145 so.sin_addr.s_addr = ia.s_addr;
147 if (r->resolve_address((
struct sockaddr *)&so,
sizeof(so), name)) {
152 printf(
"Result: %s\n", name.c_str());
157 printf(
"Address could not be converted to binary form. Skipping.\n");
163 handle_signal(
int signum)
178 main(
int argc,
char **argv)
182 ResolverQAMain m(&argp);
static void finalize()
Finalize (and free) the SignalManager instance, this does NOT implicitly delete the signal handlers,...
const char * arg(const char *argn)
Get argument value.
Fawkes library namespace.
Interface for signal handling.
Parse command line arguments.
static void ignore(int signum)
Ignore a signal.
static SignalHandler * register_handler(int signum, SignalHandler *handler)
Register a SignalHandler for a signal.
Network name and address resolver.
bool has_arg(const char *argn)
Check if argument has been supplied.