Error building ocserv 0.2.2
Nikos Mavrogiannopoulos
nmav at gnutls.org
Mon Dec 9 04:28:29 EST 2013
On Mon, Dec 9, 2013 at 12:02 AM, Per Juborg <per at juborg.nu> wrote:
> Hi,
>
> The story continues,
>
> I added the include, I also had to add netinet/ip.h
>
> The this shows up:
> CC icmp-ping.o
> icmp-ping.c:229:44: error: incomplete definition of type 'struct iphdr'
> pkt = (struct icmp *) (packet1 + (iphdr->ihl << 2)); /* skip ip hdr */
> ~~~~~^
Most probably you need something like the attached patch (which is untested).
regards,
Nikos
-------------- next part --------------
diff --git a/src/icmp-ping.c b/src/icmp-ping.c
index bd39ad7..a7326f6 100644
--- a/src/icmp-ping.c
+++ b/src/icmp-ping.c
@@ -77,6 +77,7 @@
# include <netinet/in_systm.h>
#endif
#include <netinet/ip_icmp.h>
+#include <netinet/ip.h>
#include <netinet/icmp6.h>
#include <sys/select.h>
#include <sys/time.h>
@@ -225,9 +226,13 @@ int icmp_ping4(main_server_st * s, struct sockaddr_in *addr1,
(SA_IN_P(&from), SA_IN_P(addr2),
SA_IN_SIZE(sizeof(*addr2))) == 0) {
+#ifdef HAVE_STRUCT_IPHDR_IHL
struct iphdr *iphdr =
(struct iphdr *) packet1;
pkt = (struct icmp *) (packet1 + (iphdr->ihl << 2)); /* skip ip hdr */
+#else
+ pkt = (struct icmp *) (packet1 + ((packet[0] & 0x0f) << 2)); /* skip ip hdr */
+#endif
if (pkt->icmp_id == id1 || pkt->icmp_id == id2) {
if (pkt->icmp_type == ICMP_ECHOREPLY)
gotreply++;
More information about the openconnect-devel
mailing list