mirror of
https://github.com/reactos/reactos.git
synced 2024-10-20 08:01:05 +00:00
29fa274d6d
- TSVN choked repeatedly when attempting to merge ~9000 revs into the branch (tried 3 times on 2 different computers) - If someone wants to delete aicom-network-fixes, they are welcome to - Lesson learned: Letting a branch get thousands of revs out of date is a horrible idea svn path=/branches/aicom-network-branch/; revision=44353
53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
/*
|
|
* COPYRIGHT: See COPYING in the top level directory
|
|
* PROJECT: ReactOS TCP/IP protocol driver
|
|
* FILE: include/checksum.h
|
|
* PURPOSE: Checksum routine definitions
|
|
*/
|
|
#ifndef __CHECKSUM_H
|
|
#define __CHECKSUM_H
|
|
|
|
|
|
ULONG ChecksumFold(
|
|
ULONG Sum);
|
|
|
|
ULONG ChecksumCompute(
|
|
PVOID Data,
|
|
UINT Count,
|
|
ULONG Seed);
|
|
|
|
unsigned int
|
|
csum_partial(
|
|
const unsigned char * buff,
|
|
int len,
|
|
unsigned int sum);
|
|
|
|
ULONG
|
|
UDPv4ChecksumCalculate(
|
|
PIPv4_HEADER IPHeader,
|
|
PUCHAR PacketBuffer,
|
|
ULONG DataLength);
|
|
|
|
#define IPv4Checksum(Data, Count, Seed)(~ChecksumFold(ChecksumCompute(Data, Count, Seed)))
|
|
#define TCPv4Checksum(Data, Count, Seed)(~ChecksumFold(csum_partial(Data, Count, Seed)))
|
|
//#define TCPv4Checksum(Data, Count, Seed)(~ChecksumFold(ChecksumCompute(Data, Count, Seed)))
|
|
|
|
/*
|
|
* Macro to check for a correct checksum
|
|
* BOOLEAN IPv4CorrectChecksum(PVOID Data, UINT Count)
|
|
*/
|
|
#define IPv4CorrectChecksum(Data, Count) \
|
|
(BOOLEAN)(IPv4Checksum(Data, Count, 0) == DH2N(0x0000FFFF))
|
|
|
|
/*
|
|
* Macro to check for a correct checksum
|
|
* BOOLEAN TCPv4CorrectChecksum(PTCPv4_PSEUDO_HEADER TcpPseudoHeader,
|
|
* PVOID Data, UINT Count)
|
|
*/
|
|
#define TCPv4CorrectChecksum(TcpPseudoHeader, Data, Count) \
|
|
(BOOLEAN)(TCPv4Checksum(Data, Count, \
|
|
TCPv4Checksum(TcpPseudoHeader, sizeof(TCPv4_PSEUDO_HEADER), \
|
|
0)) == DH2N(0x0000FFFF))
|
|
|
|
#endif /* __CHECKSUM_H */
|