From 137e35217b2dea5b88323d1396694b1fb2399d17 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 7 Apr 2020 17:36:51 -0400 Subject: [PATCH] Implement UDP checksum Properly implement checksum on ACK. --- confluent_server/confluent/discovery/protocols/pxe.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/confluent_server/confluent/discovery/protocols/pxe.py b/confluent_server/confluent/discovery/protocols/pxe.py index 2d6c4168..d93df0fb 100644 --- a/confluent_server/confluent/discovery/protocols/pxe.py +++ b/confluent_server/confluent/discovery/protocols/pxe.py @@ -541,10 +541,11 @@ def ack_request(pkt, rq, info): repview = memoryview(reply) repview[:len(rply)] = rply repview[270:271] = b'\x05' + repview[26:28] = struct.pack('!H', 0) # TODO: use datasum, it was incorrect) datasum = _ipsum(b'\x00\x11' + repview[24:26].tobytes() + repview[12:len(rply)].tobytes()) datasum = ~datasum & 0xffff - repview[26:28] = struct.pack('!H', 0) # TODO: use datasum, it was incorrect) + repview[26:28] = struct.pack('!H', datasum) send_raw_packet(repview, len(rply), rq, info) def consider_discover(info, packet, sock, cfg, reqview):