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.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 net/icmp.h (limited to 'net/icmp.h') diff --git a/net/icmp.h b/net/icmp.h new file mode 100644 index 0000000..c2c5e8f --- /dev/null +++ b/net/icmp.h @@ -0,0 +1,28 @@ +//http://www.saminiir.com/lets-code-tcp-ip-stack-2-ipv4-icmpv4/ +#include +#include + +#include "netdev.h" + +struct icmp_v4 { + uint8_t type; // purpose 0-echo reply, 3- unreachable, 8- echo request, etc... + uint8_t code; // reason (type=3,code=0 net unreachable, etc..) + uint16_t csum; // checksum (Same as in ipv4 header) + uint8_t data[]; // payload (example icmp_v4_echo) +} __attribute__((packed)); + +// payload +struct icmp_v4_echo { + uint16_t id; // set by sender + uint16_t seq; // starting at 0 + uint8_t data[]; // optinal (example timestamp) +} __attribute__((packed)); + +struct icmp_v4_dst_unreachable { + uint8_t unused; + uint8_t len; // lenght of original datagramm + uint16_t var; // depends on icmp code + uint8_t data[]; +} __attribute__((packed)); + +bool icmp_incoming(struct netdev *dev,struct icmp_v4 *data, uint32_t count_bytes); -- cgit v1.2.3