26 #include <netcomm/utils/resolver.h> 27 #include <utils/system/signal.h> 28 #include <utils/system/argparser.h> 30 #include <netcomm/dns-sd/avahi_thread.h> 33 #include <netinet/in.h> 34 #include <arpa/inet.h> 54 printf(
"Instantiating Avahi thread\n");
57 at->wait_initialized();
63 printf(
"Avahi not available at compile time\n");
84 struct sockaddr_in *s = NULL;
87 char *test = (
char *)malloc(strlen(
"127.0.0.1") + 1);
88 strcpy(test,
"127.0.0.1");
89 r->resolve_name(test, (
struct sockaddr **)&s, &slen);
92 while ( ! quit && ! r->resolve_name(
"127.0.0.1", (
struct sockaddr **)&s, &slen) ) {
98 printf(
"Successfully resolved to 0x%x\n", s->sin_addr.s_addr);
100 if ( ! r->resolve_name(
"127.0.0.1", (
struct sockaddr **)&s, &slen) ) {
101 printf(
"A second try to resolve failed after first success, cache broken\n");
103 printf(
"Successfully resolved to 0x%x again\n", s->sin_addr.s_addr);
107 if ( ! r->resolve_address((
struct sockaddr *)s, slen, name) ) {
110 printf(
"Successfully resolved address to '%s'\n", name.c_str());
114 if ( (atmp = argp->
arg(
"h")) != NULL ) {
115 printf(
"Trying to resolve %s\n", atmp);
116 while ( ! quit && ! r->resolve_name(atmp, (
struct sockaddr **)&s, &slen) ) {
122 char addrp[INET_ADDRSTRLEN];
123 inet_ntop(AF_INET, &(s->sin_addr), addrp,
sizeof(addrp));
124 printf(
"Successfully resolved to 0x%x (%s)\n", s->sin_addr.s_addr, addrp);
126 struct sockaddr_in so;
129 so.sin_addr.s_addr = s->sin_addr.s_addr;
130 r->resolve_address((
struct sockaddr *)&so, slen, tmp);
131 printf(
"Waiting one second to allow resolver thread to suceed\n");
133 if ( r->resolve_address((
struct sockaddr *)&so, slen, tmp) ) {
134 printf(
"Successfully resolved 0x%x to %s\n", so.sin_addr.s_addr, tmp.c_str());
138 if ( (atmp = argp->
arg(
"i")) != NULL ) {
139 printf(
"Resolving %s, press Ctrl-C to end...\n", atmp);
141 if (inet_pton(AF_INET, atmp, &ia) == 1) {
143 struct sockaddr_in so;
144 so.sin_addr.s_addr = ia.s_addr;
146 if ( r->resolve_address((
struct sockaddr *)&so,
sizeof(so), name) ) {
151 printf(
"Result: %s\n", name.c_str());
156 printf(
"Address could not be converted to binary form. Skipping.\n");
161 virtual void handle_signal(
int signum)
176 main(
int argc,
char **argv)
180 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.