MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / VerifyChecksum

Method VerifyChecksum

pcsx2/DEV9/PacketReader/IP/TCP/TCP_Packet.cpp:273–301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

271 delete[] headerSegment;
272 }
273 bool TCP_Packet::VerifyChecksum(IP_Address srcIP, IP_Address dstIP)
274 {
275 ReComputeHeaderLen();
276 int pHeaderLen = (12) + headerLength + payload->GetLength();
277 if ((pHeaderLen & 1) != 0)
278 pHeaderLen += 1;
279
280 u8* headerSegment = new u8[pHeaderLen];
281 int counter = 0;
282
283 NetLib::WriteIPAddress(headerSegment, &counter, srcIP);
284 NetLib::WriteIPAddress(headerSegment, &counter, dstIP);
285 NetLib::WriteByte08(headerSegment, &counter, 0);
286 NetLib::WriteByte08(headerSegment, &counter, (u8)protocol);
287 NetLib::WriteUInt16(headerSegment, &counter, GetLength());
288
289 //Pseudo Header added
290 //Rest of data is normal Header+data
291 WriteBytes(headerSegment, &counter);
292
293 //Zero alignment byte
294 if (counter != pHeaderLen)
295 NetLib::WriteByte08(headerSegment, &counter, 0);
296
297 const u16 csumCal = IP_Packet::InternetChecksum(headerSegment, pHeaderLen);
298 delete[] headerSegment;
299
300 return (csumCal == 0);
301 }
302} // namespace PacketReader::IP::TCP

Callers

nothing calls this directly

Calls 6

WriteIPAddressFunction · 0.85
WriteByte08Function · 0.85
WriteUInt16Function · 0.85
GetLengthFunction · 0.85
WriteBytesFunction · 0.85
GetLengthMethod · 0.45

Tested by

no test coverage detected