From 7519e57749e176be60b7185d7bbdc298b1744c3c Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 20 Aug 2022 15:05:19 +0200 Subject: user/ethdump: UDP support --- src/user/app/ethdump/icmp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/user/app/ethdump/icmp.c') diff --git a/src/user/app/ethdump/icmp.c b/src/user/app/ethdump/icmp.c index b3eff93..94f718e 100644 --- a/src/user/app/ethdump/icmp.c +++ b/src/user/app/ethdump/icmp.c @@ -1,6 +1,5 @@ #include "proto.h" #include "util.h" -#include enum { Type = 0, @@ -20,7 +19,7 @@ void icmp_parse(const uint8_t *buf, size_t len, struct ipv4 ip) { .ip.e.dst = ip.e.src, }); memcpy(pkt, buf + Payload, len - Payload); - icmp_finish(pkt); + icmp_finish(pkt, len - Payload); } } @@ -29,9 +28,10 @@ uint8_t *icmp_start(size_t len, struct icmp i) { uint8_t *pkt = ipv4_start(Payload + len, i.ip); pkt[Type] = i.type; pkt[Code] = i.code; - nput16(pkt + Checksum, ip_checksum(pkt, Payload + len)); return pkt + Payload; } -void icmp_finish(uint8_t *pkt) { - ipv4_finish(pkt - Payload); +void icmp_finish(uint8_t *pkt, size_t len) { + pkt -= Payload; + nput16(pkt + Checksum, ip_checksum(pkt, Payload + len)); + ipv4_finish(pkt); } -- cgit v1.2.3