Libraries I've included
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <netinet/in.h>
#include <arpa/inet.h>
code:
//Step 1: Fill in the ICMP header.
struct icmpheader *icmp = (struct icmpheader *)(buffer+sizeof(struct ipheader));
icmp->icmp_type = 8; //ICMP Type: 8 is request, 0 is reply
//Calculate the checksum for integrity
icmp->icmp_chksum = 0;
icmp->icmp_chksum = in_cksum((unsigned short *) icmp, sizeof(struct icmpheader));
compiling and error message:
spoof.c: In function ‘send_raw_ip_packet’:
spoof.c:64:3: warning: implicit declaration of function ‘close’ [-Wimplicit-function-declaration]
close(sock);
^
spoof.c: In function ‘main’:
spoof.c:81:23: warning: implicit declaration of function ‘in_cksum’ [-Wimplicit-function-declaration]
icmp->icmp_chksum = in_cksum((unsigned short *) icmp, sizeof(struct icmpheader));
^
/tmp/ccboXLMP.o: In function `main':
spoof.c:(.text+0x119): undefined reference to `in_cksum'
collect2: error: ld returned 1 exit status
I'm guessing this error is because I didn't include the right header filer.
I'm using Ubuntu 16.04.2 LTS on a VM.
question from:
https://stackoverflow.com/questions/66056257/where-is-function-in-cksum-defined 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…