#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
+
/**
* Must match IP given in the server.
*/
off = 0;
ip_pkt.vers_ihl = 0x45;
ip_pkt.tos = 0;
+#ifdef FREEBSD
+ ip_pkt.pkt_len = sizeof (packet); /* Workaround PR kern/21737 */
+#else
ip_pkt.pkt_len = htons (sizeof (packet));
+#endif
ip_pkt.id = htons (PACKET_ID);
ip_pkt.flags_frag_offset = 0;
ip_pkt.ttl = 128;
}
else if (sizeof (packet) != (size_t) err)
{
- fprintf (stderr, "Error: partial send of ICMP message\n");
+ fprintf (stderr, "Error: partial send of ICMP message with size %lu\n", (unsigned long) off);
}
}
off = 0;
ip_pkt.vers_ihl = 0x45;
ip_pkt.tos = 0;
+#ifdef FREEBSD
+ ip_pkt.pkt_len = sizeof (packet); /* Workaround PR kern/21737 */
+#else
ip_pkt.pkt_len = htons (sizeof (packet));
+#endif
ip_pkt.id = htons (PACKET_ID);
ip_pkt.flags_frag_offset = 0;
ip_pkt.ttl = IPDEFTTL;
cleanup:
if (-1 != rawsock)
(void) close (rawsock);
- return 0;
+ return global_ret;
}
/* end of gnunet-helper-nat-client.c */