windoze sucks
authorNathan S. Evans <evans@in.tum.de>
Wed, 18 Aug 2010 14:10:54 +0000 (14:10 +0000)
committerNathan S. Evans <evans@in.tum.de>
Wed, 18 Aug 2010 14:10:54 +0000 (14:10 +0000)
src/transport/gnunet-nat-server-windows.c

index 6f2529ebb19387004c6a57e0f0ed0d22b74ef028..a093d341ec73348cea7c02f314d23b53a530c705 100644 (file)
@@ -139,6 +139,26 @@ calc_checksum(const uint16_t *data,
   return sum;
 }
 
+#if WIN32
+/**
+ * @param af address family
+ * @param cp the address to print
+ * @param buf where to write the address result
+ */
+static int inet_pton (int af, const char *cp, void *buf)
+{
+  int ret;
+  int ssize;
+
+  ssize = sizeof(buf);
+  ret = WSAStringToAddress (cp, af, NULL, (LPSOCKADDR)buf, &ssize);
+
+  if (retval == 0)
+    return 1;
+  else
+    return 0;
+}
+#endif
 
 static void
 make_echo (const struct in_addr *src_ip,
@@ -292,12 +312,19 @@ process_icmp_response ()
   else if (have_udp)
     {
       memcpy(&udp_pkt, &buf[off], sizeof(udp_pkt));
+
+#ifdef WIN32
+      DWORD ssize = sizeof(buf);
+      WSAAddressToString((LPSOCKADDR)&sip, sizeof(sip), NULL, buf, &ssize);
+      fprintf (stdout, "%s:%d\n", buf, ntohl(udp_pkt.length));
+#else
       fprintf (stdout,
                "%s:%d\n",
                inet_ntop (AF_INET,
                           &sip,
                           buf,
                           sizeof (buf)), ntohl(udp_pkt.length));
+#endif
     }
   else
     {
@@ -406,6 +433,7 @@ main (int argc, char *const *argv)
               "This program must be started with our (internal NAT) IP as the only argument.\n");
       return 1;
     }
+
   if (1 != inet_pton (AF_INET, argv[1], &external))
     {
       fprintf (stderr,
@@ -413,6 +441,7 @@ main (int argc, char *const *argv)
               strerror (errno));
       return 1;
     }
+
   if (1 != inet_pton (AF_INET, DUMMY_IP, &dummy)) abort ();
   while (1)
     {