Added support for passing host/IP as command line option
authorAndreas Tonnesen <andreto@olsr.org>
Sun, 14 Nov 2004 13:23:14 +0000 (13:23 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Sun, 14 Nov 2004 13:23:14 +0000 (13:23 +0000)
gui/linux-gtk/bin/olsrd-gui
gui/linux-gtk/src/ipc.c
gui/linux-gtk/src/ipc.h
gui/linux-gtk/src/main.c

index 472c055..4c8322e 100755 (executable)
Binary files a/gui/linux-gtk/bin/olsrd-gui and b/gui/linux-gtk/bin/olsrd-gui differ
index 560e812..bae1857 100644 (file)
@@ -39,29 +39,9 @@ int ipc_socket = 0;
 int
 ipc_get_socket()
 {
-  struct hostent *hp;
-  char *addr;
-  struct in_addr *in;
   int sock;
   //int flags;
 
-  
-  if ((hp = gethostbyname("localhost")) == 0) 
-    {
-      perror("gethostbyname");
-      exit(1);
-    }
-
-  in = (struct in_addr *) hp->h_addr;
-  addr = inet_ntoa(*in);
-  printf("Address: %s\n", addr);
-
-  /* fill in the socket structure with host information */
-  memset(&pin, 0, sizeof(pin));
-  pin.sin_family = AF_INET;
-  pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
-  pin.sin_port = htons(IPC_PORT);
-
   /* grab an UNIX domain socket */
   if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
     {
@@ -106,7 +86,7 @@ ipc_close()
 
 
 int
-ipc_connect()
+ipc_connect(struct sockaddr_in *pin)
 {
 #ifdef WIN32
   int On = 1;
@@ -117,13 +97,13 @@ ipc_connect()
 
   connected = 0;
 
-  printf("Attempting connect...");
-
   if(!ipc_socket)
     ipc_socket = ipc_get_socket();
 
+  printf("Attempting connect...");
+
   /* connect to PORT on HOST */
-  if (connect(ipc_socket,(struct sockaddr *)  &pin, sizeof(pin)) < 0) 
+  if (connect(ipc_socket,(struct sockaddr *) pin, sizeof(*pin)) < 0) 
     {
       fprintf(stderr, "Error connecting %d - %s\n", errno, strerror(errno));
       set_net_info_offline();
index cb9d02a..7345cd3 100644 (file)
@@ -38,7 +38,6 @@
 
 
 //int ipc_socket;
-struct sockaddr_in pin;
 int connected;
 
 
index d516e13..8fa208a 100644 (file)
 
 #include "common.h"
 #include "main.h"
+#include "ipc.h"
 
 int
 main (int argc, char *argv[])
 {
+  struct hostent *hp;
+  struct in_addr in;
+  struct sockaddr_in pin;
+
 #ifdef WIN32
   WSADATA WsaData;
 #endif
@@ -39,6 +44,23 @@ main (int argc, char *argv[])
     }
 #endif
 
+  
+  /* Get IP */
+  if ((hp = gethostbyname(argc > 1 ? argv[1] : "localhost")) == 0) 
+    {
+      perror("Not a valid host");
+      exit(1);
+    }
+  
+  in.s_addr=((struct in_addr *)(hp->h_addr))->s_addr;
+  printf("Address: %s\n", inet_ntoa(in));
+  
+  /* fill in the socket structure with host information */
+  memset(&pin, 0, sizeof(pin));
+  pin.sin_family = AF_INET;
+  pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
+  pin.sin_port = htons(IPC_PORT);
+  
   gtk_init (&argc, &argv);
 
   init_nodes();
@@ -65,7 +87,7 @@ main (int argc, char *argv[])
   nodes_timeout = NEIGHB_HOLD_TIME_NW;
   init_timer((olsr_u32_t) (nodes_timeout * 1000), &hold_time_nodes);
 
-  ipc_connect();
+  ipc_connect(&pin);
 
   add_timeouts();