projects
/
oweals
/
gnunet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
psyc/social: local join flag; social service: leave place, save _file
[oweals/gnunet.git]
/
src
/
nat
/
gnunet-helper-nat-server-windows.c
diff --git
a/src/nat/gnunet-helper-nat-server-windows.c
b/src/nat/gnunet-helper-nat-server-windows.c
index 8386a15b14aa3624d85137378a90fee7e8dbf111..bb9356d1df1b31dd3f7d1d666dba71743129f9f2 100644
(file)
--- a/
src/nat/gnunet-helper-nat-server-windows.c
+++ b/
src/nat/gnunet-helper-nat-server-windows.c
@@
-1,6
+1,6
@@
/*
This file is part of GNUnet.
/*
This file is part of GNUnet.
- (C) 2010 Christian Grothoff (and other contributing authors)
+
Copyright
(C) 2010 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@
-14,8
+14,8
@@
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 5
9 Temple Place - Suite 330
,
- Boston, MA 0211
1-1307
, USA.
+ Free Software Foundation, Inc., 5
1 Franklin Street, Fifth Floor
,
+ Boston, MA 0211
0-1301
, USA.
*/
/**
*/
/**
@@
-42,7
+42,7
@@
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
-
+#define FD_SETSIZE 1024
#include <winsock2.h>
#include <ws2tcpip.h>
#include <sys/time.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <sys/time.h>
@@
-70,6
+70,11
@@
*/
#define NAT_TRAV_PORT 22225
*/
#define NAT_TRAV_PORT 22225
+/**
+ * Must match packet ID used by gnunet-helper-nat-client.c
+ */
+#define PACKET_ID 256
+
/**
* TTL to use for our outgoing messages.
*/
/**
* TTL to use for our outgoing messages.
*/
@@
-182,6
+187,11
@@
struct udp_header
uint16_t crc;
};
uint16_t crc;
};
+/**
+ * Will this binary be run in permissions testing mode?
+ */
+static boolean privilege_testing = FALSE;
+
/**
* Socket we use to receive "fake" ICMP replies.
*/
/**
* Socket we use to receive "fake" ICMP replies.
*/
@@
-265,7
+275,7
@@
send_icmp_echo (const struct in_addr *my_ip)
ip_pkt.vers_ihl = 0x45;
ip_pkt.tos = 0;
ip_pkt.pkt_len = htons (sizeof (packet));
ip_pkt.vers_ihl = 0x45;
ip_pkt.tos = 0;
ip_pkt.pkt_len = htons (sizeof (packet));
- ip_pkt.id = htons (
256
);
+ ip_pkt.id = htons (
PACKET_ID
);
ip_pkt.flags_frag_offset = 0;
ip_pkt.ttl = IPDEFTTL;
ip_pkt.proto = IPPROTO_ICMP;
ip_pkt.flags_frag_offset = 0;
ip_pkt.ttl = IPDEFTTL;
ip_pkt.proto = IPPROTO_ICMP;
@@
-521,9
+531,18
@@
main (int argc, char *const *argv)
fd_set rs;
struct timeval tv;
WSADATA wsaData;
fd_set rs;
struct timeval tv;
WSADATA wsaData;
- unsigned int alt;
+ unsigned int alt = 0;
+
+ if ( (argc > 1) && (0 != strcmp (argv[1], "-d")))
+ {
+ privilege_testing = TRUE;
+ fprintf (stderr,
+ "%s",
+ "DEBUG: Running binary in privilege testing mode.");
+ argv++;
+ argc--;
+ }
- alt = 0;
if (2 != argc)
{
fprintf (stderr,
if (2 != argc)
{
fprintf (stderr,
@@
-561,7
+580,8
@@
main (int argc, char *const *argv)
closesocket (rawsock);
return 3;
}
closesocket (rawsock);
return 3;
}
- while (1)
+
+ while ( ! privilege_testing)
{
FD_ZERO (&rs);
FD_SET (icmpsock, &rs);
{
FD_ZERO (&rs);
FD_SET (icmpsock, &rs);
@@
-586,6
+606,8
@@
main (int argc, char *const *argv)
closesocket (rawsock);
closesocket (udpsock);
WSACleanup ();
closesocket (rawsock);
closesocket (udpsock);
WSACleanup ();
+ if (privilege_testing)
+ return 0;
return 4;
}
return 4;
}