2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS TCP/IP protocol driver
4 * FILE: tcpip/routines.c
5 * PURPOSE: Common routines
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/08-2000 Created
13 static UINT RandomNumber
= 0x12345678;
19 * FUNCTION: Returns a pseudo random number
21 * Pseudo random number
24 RandomNumber
^= 0x78563412;
30 static VOID
DisplayIPHeader(
34 /* FIXME: IPv4 only */
35 PIPv4_HEADER IPHeader
= (PIPv4_HEADER
)Header
;
37 DbgPrint("IPv4 header:\n");
38 DbgPrint("VerIHL: 0x%x (version 0x%x, length %d 32-bit words)\n",
39 IPHeader
->VerIHL
, (IPHeader
->VerIHL
& 0xF0) >> 4, IPHeader
->VerIHL
& 0x0F);
40 DbgPrint(" Tos: %d\n", IPHeader
->Tos
);
41 DbgPrint(" TotalLength: %d\n", WN2H(IPHeader
->TotalLength
));
42 DbgPrint(" Id: %d\n", WN2H(IPHeader
->Id
));
43 DbgPrint(" FlagsFragOfs: 0x%x (offset 0x%x)\n", WN2H(IPHeader
->FlagsFragOfs
), WN2H(IPHeader
->FlagsFragOfs
) & IPv4_FRAGOFS_MASK
);
44 if ((WN2H(IPHeader
->FlagsFragOfs
) & IPv4_DF_MASK
) > 0) DbgPrint(" IPv4_DF - Don't fragment\n");
45 if ((WN2H(IPHeader
->FlagsFragOfs
) & IPv4_MF_MASK
) > 0) DbgPrint(" IPv4_MF - More fragments\n");
46 DbgPrint(" Ttl: %d\n", IPHeader
->Ttl
);
47 DbgPrint(" Protocol: %d\n", IPHeader
->Protocol
);
48 DbgPrint(" Checksum: 0x%x\n", WN2H(IPHeader
->Checksum
));
49 DbgPrint(" SrcAddr: %d.%d.%d.%d\n",
50 ((IPHeader
->SrcAddr
>> 0) & 0xFF), ((IPHeader
->SrcAddr
>> 8) & 0xFF),
51 ((IPHeader
->SrcAddr
>> 16) & 0xFF), ((IPHeader
->SrcAddr
>> 24) & 0xFF));
52 DbgPrint(" DstAddr: %d.%d.%d.%d\n",
53 ((IPHeader
->DstAddr
>> 0) & 0xFF), ((IPHeader
->DstAddr
>> 8) & 0xFF),
54 ((IPHeader
->DstAddr
>> 16) & 0xFF), ((IPHeader
->DstAddr
>> 24) & 0xFF));
66 if ((DbgQueryDebugFilterState(DPFLTR_TCPIP_ID
, DEBUG_PBUFFER
| DPFLTR_MASK
) != TRUE
) ||
67 (DbgQueryDebugFilterState(DPFLTR_TCPIP_ID
, DEBUG_IP
| DPFLTR_MASK
) != TRUE
)) {
72 TI_DbgPrint(MIN_TRACE
, ("Cannot display null packet.\n"));
76 TI_DbgPrint(MIN_TRACE
, ("IPPacket is at (0x%X).\n", IPPacket
));
77 TI_DbgPrint(MIN_TRACE
, ("Header buffer is at (0x%X).\n", IPPacket
->Header
));
78 TI_DbgPrint(MIN_TRACE
, ("Header size is (%d).\n", IPPacket
->HeaderSize
));
79 TI_DbgPrint(MIN_TRACE
, ("TotalSize (%d).\n", IPPacket
->TotalSize
));
80 TI_DbgPrint(MIN_TRACE
, ("NdisPacket (0x%X).\n", IPPacket
->NdisPacket
));
82 CharBuffer
= IPPacket
->Header
;
83 Length
= IPPacket
->HeaderSize
;
84 DisplayIPHeader(CharBuffer
, Length
);