service: Simplify nameserver route adding and removing
[framework/connectivity/connman.git] / tools / resolv-test.c
index 637c9e3..9867a4b 100644 (file)
@@ -2,7 +2,7 @@
  *
  *  Connection Manager
  *
- *  Copyright (C) 2007-2010  Intel Corporation. All rights reserved.
+ *  Copyright (C) 2007-2012  Intel Corporation. All rights reserved.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License version 2 as
 #include <string.h>
 #include <signal.h>
 
-#include <gresolv/gresolv.h>
+#include <gweb/gresolv.h>
 
-static GMainLoop *main_loop = NULL;
+static GTimer *timer;
+
+static GMainLoop *main_loop;
 
 static void resolv_debug(const char *str, void *data)
 {
@@ -42,12 +44,41 @@ static void sig_term(int sig)
        g_main_loop_quit(main_loop);
 }
 
+static const char *status2str(GResolvResultStatus status)
+{
+       switch (status) {
+       case G_RESOLV_RESULT_STATUS_SUCCESS:
+               return "success";
+       case G_RESOLV_RESULT_STATUS_ERROR:
+               return "error";
+       case G_RESOLV_RESULT_STATUS_NO_RESPONSE:
+               return "no response";
+       case G_RESOLV_RESULT_STATUS_FORMAT_ERROR:
+               return "format error";
+       case G_RESOLV_RESULT_STATUS_SERVER_FAILURE:
+               return "server failure";
+       case G_RESOLV_RESULT_STATUS_NAME_ERROR:
+               return "name error";
+       case G_RESOLV_RESULT_STATUS_NOT_IMPLEMENTED:
+               return "not implemented";
+       case G_RESOLV_RESULT_STATUS_REFUSED:
+               return "refused";
+       }
+
+       return NULL;
+}
+
 static void resolv_result(GResolvResultStatus status,
                                        char **results, gpointer user_data)
 {
+       gdouble elapsed;
        int i;
 
-       g_print("status: %d\n", status);
+       elapsed = g_timer_elapsed(timer, NULL);
+
+       g_print("elapse: %f seconds\n", elapsed);
+
+       g_print("status: %s\n", status2str(status));
 
        if (results != NULL) {
                for (i = 0; results[i]; i++)
@@ -108,10 +139,15 @@ int main(int argc, char *argv[])
 
                for (i = 2; i < argc; i++)
                        g_resolv_add_nameserver(resolv, argv[i], 53, 0);
-       } else
-               g_resolv_add_nameserver(resolv, "127.0.0.1", 53, 0);
+       }
+
+       timer = g_timer_new();
 
-       g_resolv_lookup_hostname(resolv, argv[1], resolv_result, NULL);
+       if (g_resolv_lookup_hostname(resolv, argv[1],
+                                       resolv_result, NULL) == 0) {
+               printf("failed to start lookup\n");
+               return 1;
+       }
 
        memset(&sa, 0, sizeof(sa));
        sa.sa_handler = sig_term;
@@ -120,6 +156,8 @@ int main(int argc, char *argv[])
 
        g_main_loop_run(main_loop);
 
+       g_timer_destroy(timer);
+
        g_resolv_unref(resolv);
 
        g_main_loop_unref(main_loop);