/*
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
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., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
#include <netinet/ip_icmp.h>
#include <netinet/in.h>
+/* The following constant is missing from FreeBSD 9.2 */
+#ifndef ICMP_TIME_EXCEEDED
+#define ICMP_TIME_EXCEEDED 11
+#endif
+
/**
* Should we print some debug output?
*/
/* different type than what we want */
return;
}
+ /* grab source IP of 1st IP header */
+ source_ip.s_addr = ip_pkt.src_ip;
+
/* skip 2nd IP header */
memcpy (&ip_pkt, &buf[off], sizeof (struct ip_header));
off += sizeof (struct ip_header);
return;
}
- source_ip.s_addr = ip_pkt.src_ip;
if (port == 0)
fprintf (stdout, "%s\n",
inet_ntop (AF_INET, &source_ip, buf, sizeof (buf)));
ret = socket (AF_INET, SOCK_DGRAM, 0);
if (-1 == ret)
{
- fprintf (stderr, "Error opening UDP socket: %s\n", strerror (errno));
+ fprintf (stderr,
+ "Error opening UDP socket: %s\n",
+ strerror (errno));
return -1;
}
memset (&addr, 0, sizeof (addr));
addr.sin_addr = *my_ip;
addr.sin_port = htons (NAT_TRAV_PORT);
- if (0 != bind (ret, &addr, sizeof (addr)))
+ if (0 != bind (ret,
+ (struct sockaddr *) &addr,
+ sizeof (addr)))
{
- fprintf (stderr, "Error binding UDP socket to port %u: %s\n", NAT_TRAV_PORT,
+ fprintf (stderr,
+ "Error binding UDP socket to port %u: %s\n",
+ NAT_TRAV_PORT,
strerror (errno));
(void) close (ret);
return -1;
}
/* select failed (internal error or OS out of resources) */
- global_ret = 11;
+ global_ret = 11;
error_exit:
if (-1 != icmpsock)
(void) close (icmpsock);