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

Method VerifyChecksum

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

Source from the content-addressed store, hash-verified

100 delete[] headerSegment;
101 }
102 bool UDP_Packet::VerifyChecksum(IP_Address srcIP, IP_Address dstIP)
103 {
104 int pHeaderLen = (12) + headerLength + payload->GetLength();
105 if ((pHeaderLen & 1) != 0)
106 pHeaderLen += 1;
107
108 u8* headerSegment = new u8[pHeaderLen];
109 int counter = 0;
110
111 NetLib::WriteIPAddress(headerSegment, &counter, srcIP);
112 NetLib::WriteIPAddress(headerSegment, &counter, dstIP);
113 NetLib::WriteByte08(headerSegment, &counter, 0);
114 NetLib::WriteByte08(headerSegment, &counter, (u8)protocol);
115 NetLib::WriteUInt16(headerSegment, &counter, GetLength());
116
117 //Pseudo Header added
118 //Rest of data is normal Header+data
119 WriteBytes(headerSegment, &counter);
120
121 //Zero alignment byte
122 if (counter != pHeaderLen)
123 NetLib::WriteByte08(headerSegment, &counter, 0);
124
125 u16 csumCal = IP_Packet::InternetChecksum(headerSegment, pHeaderLen);
126 delete[] headerSegment;
127
128 return (csumCal == 0);
129 }
130} // namespace PacketReader::IP::UDP

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