diff --git a/repos/os/include/net/udp.h b/repos/os/include/net/udp.h index 317be6be6..031eb9d93 100644 --- a/repos/os/include/net/udp.h +++ b/repos/os/include/net/udp.h @@ -79,6 +79,9 @@ class Net::Udp_packet void update_checksum(Ipv4_address ip_src, Ipv4_address ip_dst); + bool checksum_error(Ipv4_address ip_src, + Ipv4_address ip_dst) const; + /*************** ** Accessors ** diff --git a/repos/os/src/lib/net/udp.cc b/repos/os/src/lib/net/udp.cc index e558262ae..7f70eebcc 100644 --- a/repos/os/src/lib/net/udp.cc +++ b/repos/os/src/lib/net/udp.cc @@ -39,3 +39,11 @@ void Net::Udp_packet::update_checksum(Ipv4_address ip_src, _checksum = internet_checksum_pseudo_ip((uint16_t*)this, length(), _length, Ipv4_packet::Protocol::UDP, ip_src, ip_dst); } + + +bool Net::Udp_packet::checksum_error(Ipv4_address ip_src, + Ipv4_address ip_dst) const +{ + return internet_checksum_pseudo_ip((uint16_t*)this, length(), _length, + Ipv4_packet::Protocol::UDP, ip_src, ip_dst); +}