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

Method CalculateChecksum

pcsx2/DEV9/PacketReader/IP/UDP/UDP_Packet.cpp:75–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

73 }
74
75 void UDP_Packet::CalculateChecksum(IP_Address srcIP, IP_Address dstIP)
76 {
77 int pHeaderLen = (12) + headerLength + payload->GetLength();
78 if ((pHeaderLen & 1) != 0)
79 pHeaderLen += 1;
80
81 u8* headerSegment = new u8[pHeaderLen];
82 int counter = 0;
83
84 NetLib::WriteIPAddress(headerSegment, &counter, srcIP);
85 NetLib::WriteIPAddress(headerSegment, &counter, dstIP);
86 NetLib::WriteByte08(headerSegment, &counter, 0);
87 NetLib::WriteByte08(headerSegment, &counter, (u8)protocol);
88 NetLib::WriteUInt16(headerSegment, &counter, GetLength());
89
90 //Pseudo Header added
91 //Rest of data is normal Header+data (with zerored checksum feild)
92 checksum = 0;
93 WriteBytes(headerSegment, &counter);
94
95 //Zero alignment byte
96 if (counter != pHeaderLen)
97 NetLib::WriteByte08(headerSegment, &counter, 0);
98
99 checksum = IP_Packet::InternetChecksum(headerSegment, pHeaderLen);
100 delete[] headerSegment;
101 }
102 bool UDP_Packet::VerifyChecksum(IP_Address srcIP, IP_Address dstIP)
103 {
104 int pHeaderLen = (12) + headerLength + payload->GetLength();

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