From b58e7bc7cb8ce4fc6f824761ac8ef3920e7dfcc1 Mon Sep 17 00:00:00 2001 From: Miguel Date: Tue, 25 Sep 2018 20:46:52 +0200 Subject: working on icmp ping reply --- net/icmp.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 net/icmp.c (limited to 'net/icmp.c') diff --git a/net/icmp.c b/net/icmp.c new file mode 100644 index 0000000..038e32a --- /dev/null +++ b/net/icmp.c @@ -0,0 +1,21 @@ +#include "inet.h" +#include "icmp.h" +#include "log.h" + +bool icmp_incoming(struct netdev *dev,struct icmp_v4 *data, uint32_t count_bytes) +{ + klog ("icmp type=%d",data->type); + klog ("icmp code=%d",data->code); + klog ("icmp csum=0x%04x",ntohs(data->csum)); + data->csum=0; + klog("expected checksum = 0x%04X",checksum(data,count_bytes)); + + if(data->type==ICMP_ECHO_REQUEST) // echo request + { + struct icmp_v4_echo *echo=data->data; + klog ("received echo request id=%d, seq=%d, data=%d ",ntohs(echo->id),ntohs(echo->seq),echo->data); +// icmp_reply(); /// TODO watchout that this is the memory managed by the network card we are dealing with!!. fix this later. + } + + return true; +} -- cgit v1.2.3