#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;