- htons => htonl
[oweals/gnunet.git] / src / vpn / gnunet-vpn.c
index 61d145c6e6516f418ecf7ec02ca45ec00718e403..d2e5eec4e229d2e4d3d032d1ec64060727354e2f 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "platform.h"
 #include "gnunet_util_lib.h"
+#include "gnunet_tun_lib.h"
 #include "gnunet_vpn_service.h"
 
 
@@ -79,11 +80,6 @@ static int udp;
  */
 static int verbosity;
 
-/**
- * Option '-a':  Notify only once the tunnel is connected?
- */
-static int nac;
-
 /**
  * Global return value.
  */
@@ -92,7 +88,7 @@ static int ret;
 /**
  * Option '-d': duration of the mapping
  */
-static unsigned long long duration = 5 * 60;
+static struct GNUNET_TIME_Relative duration = { 5 * 60 * 1000} ;
 
 
 /**
@@ -127,7 +123,7 @@ do_disconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
  *                will match 'result_af' from the request
  * @param address IP address (struct in_addr or struct in_addr6, depending on 'af')
  *                that the VPN allocated for the redirection;
- *                traffic to this IP will now be redirected to the 
+ *                traffic to this IP will now be redirected to the
  *                specified target peer; NULL on error
  */
 static void
@@ -172,7 +168,7 @@ run (void *cls, char *const *args, const char *cfgfile,
 {
   int dst_af;
   int req_af;
-  struct GNUNET_PeerIdentity peer; 
+  struct GNUNET_PeerIdentity peer;
   struct GNUNET_HashCode sd;
   const void *addr;
   struct in_addr v4;
@@ -180,8 +176,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   uint8_t protocol;
   struct GNUNET_TIME_Absolute etime;
 
-  etime = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
-                                                                          (unsigned int) duration));
+  etime = GNUNET_TIME_relative_to_absolute (duration);
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                &do_disconnect, NULL);
   handle = GNUNET_VPN_connect (cfg);
@@ -200,7 +195,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   }
   if (ipv6)
     req_af = AF_INET6;
-  
+
   if (NULL == target_ip)
   {
     if (NULL == service_name)
@@ -232,22 +227,22 @@ run (void *cls, char *const *args, const char *cfgfile,
     if (udp)
       protocol = IPPROTO_UDP;
     if (GNUNET_OK !=
-       GNUNET_CRYPTO_hash_from_string (peer_id,
-                                       &peer.hashPubKey))
+       GNUNET_CRYPTO_eddsa_public_key_from_string (peer_id,
+                                                    strlen (peer_id),
+                                                    &peer.public_key))
     {
-      FPRINTF (stderr, _("`%s' is not a valid peer identifier.\n"),
+      FPRINTF (stderr,
+               _("`%s' is not a valid peer identifier.\n"),
                peer_id);
       goto error;
-    }    
-    GNUNET_CRYPTO_hash (service_name,
-                       strlen (service_name),
-                       &sd);
+    }
+    GNUNET_TUN_service_name_to_hash (service_name,
+                                     &sd);
     request = GNUNET_VPN_redirect_to_peer (handle,
                                           req_af,
                                           protocol,
                                           &peer,
                                           &sd,
-                                          nac,
                                           etime,
                                           &allocation_cb, NULL);
   }
@@ -271,12 +266,11 @@ run (void *cls, char *const *args, const char *cfgfile,
     {
       dst_af = AF_INET6;
       addr = &v6;
-    }    
+    }
     request = GNUNET_VPN_redirect_to_ip (handle,
                                         req_af,
                                         dst_af,
                                         addr,
-                                        nac,
                                         etime,
                                         &allocation_cb, NULL);
   }
@@ -298,12 +292,9 @@ main (int argc, char *const *argv)
     {'6', "ipv6", NULL,
      gettext_noop ("request that result should be an IPv6 address"),
      0, &GNUNET_GETOPT_set_one, &ipv6},
-    {'a', "after-connect", NULL,
-     gettext_noop ("print IP address only after mesh tunnel has been created"),
-     0, &GNUNET_GETOPT_set_one, &ipv6},
-    {'d', "duration", "SECONDS",
+    {'d', "duration", "TIME",
      gettext_noop ("how long should the mapping be valid for new tunnels?"),
-     1, &GNUNET_GETOPT_set_ulong, &duration},
+     1, &GNUNET_GETOPT_set_relative_time, &duration},
     {'i', "ip", "IP",
      gettext_noop ("destination IP for the tunnel"),
      1, &GNUNET_GETOPT_set_string, &target_ip},