diff options
author | dzwdz | 2022-08-20 15:05:19 +0200 |
---|---|---|
committer | dzwdz | 2022-08-20 15:05:19 +0200 |
commit | 7519e57749e176be60b7185d7bbdc298b1744c3c (patch) | |
tree | f320249b75a90a016451acab06c09dbcefdbc89a /src/user/app/ethdump/icmp.c | |
parent | f22f019aeba00ccb3cc35fe763c3e87bf5690040 (diff) |
user/ethdump: UDP support
Diffstat (limited to 'src/user/app/ethdump/icmp.c')
-rw-r--r-- | src/user/app/ethdump/icmp.c | 10 |
1 files changed, 5 insertions, 5 deletions
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 <string.h> 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); } |