[LICCPA] Fix translation and align dialog controls
[reactos.git] / drivers / network / tcpip / include / checksum.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS TCP/IP protocol driver
4 * FILE: include/checksum.h
5 * PURPOSE: Checksum routine definitions
6 */
7
8 #pragma once
9
10 ULONG ChecksumFold(
11 ULONG Sum);
12
13 ULONG ChecksumCompute(
14 PVOID Data,
15 UINT Count,
16 ULONG Seed);
17
18 unsigned int
19 csum_partial(
20 const unsigned char * buff,
21 int len,
22 unsigned int sum);
23
24 ULONG
25 UDPv4ChecksumCalculate(
26 PIPv4_HEADER IPHeader,
27 PUCHAR PacketBuffer,
28 ULONG DataLength);
29
30 #define IPv4Checksum(Data, Count, Seed)(~ChecksumFold(ChecksumCompute(Data, Count, Seed)))
31 #define TCPv4Checksum(Data, Count, Seed)(~ChecksumFold(csum_partial(Data, Count, Seed)))
32 //#define TCPv4Checksum(Data, Count, Seed)(~ChecksumFold(ChecksumCompute(Data, Count, Seed)))
33
34 /*
35 * Macro to check for a correct checksum
36 * BOOLEAN IPv4CorrectChecksum(PVOID Data, UINT Count)
37 */
38 #define IPv4CorrectChecksum(Data, Count) \
39 (BOOLEAN)(IPv4Checksum(Data, Count, 0) == DH2N(0x0000FFFF))
40
41 /*
42 * Macro to check for a correct checksum
43 * BOOLEAN TCPv4CorrectChecksum(PTCPv4_PSEUDO_HEADER TcpPseudoHeader,
44 * PVOID Data, UINT Count)
45 */
46 #define TCPv4CorrectChecksum(TcpPseudoHeader, Data, Count) \
47 (BOOLEAN)(TCPv4Checksum(Data, Count, \
48 TCPv4Checksum(TcpPseudoHeader, sizeof(TCPv4_PSEUDO_HEADER), \
49 0)) == DH2N(0x0000FFFF))