Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1999, Microsoft Corporation
Module Name:
sample\packet.c
Abstract:
The file contains functions to deal with an ip sample packet.
--*/
#include "pchsample.h"
#pragma hdrstop
DWORD PacketCreate ( OUT PPACKET *ppPacket) /*++
Routine Description Creates a packet.
Locks None
Arguments ppPacket pointer to the packet address
Return Value NO_ERROR if success Failure code o/w
--*/ { DWORD dwErr = NO_ERROR; // validate parameters
if (!ppPacket) return ERROR_INVALID_PARAMETER;
do // breakout loop
{ // allocate and zero out the packet structure
MALLOC(ppPacket, sizeof(PACKET), &dwErr); if (dwErr != NO_ERROR) break; // initialize fields
// ((*ppPacket)->ipSource zero'ed out
sprintf((*ppPacket)->rgbyBuffer, "hello world!"); // for now :)
(*ppPacket)->wsaBuffer.buf = (*ppPacket)->rgbyBuffer; (*ppPacket)->wsaBuffer.len = strlen((*ppPacket)->rgbyBuffer);
} while (FALSE);
return dwErr; }
DWORD PacketDestroy ( IN PPACKET pPacket) /*++
Routine Description Destroys a packet.
Locks None
Arguments pPacket packet to destroy
Return Value NO_ERROR always
--*/ { // validate parameters
if (!pPacket) return NO_ERROR; FREE(pPacket);
return NO_ERROR; }
#ifdef DEBUG
DWORD PacketDisplay ( IN PPACKET pPacket) /*++
Routine Description Displays a packet, it's fields and the buffer.
Locks None
Arguments pPacket packet to destroy
Return Value NO_ERROR always
--*/ { ULONG i; CHAR szBuffer[2 * MAX_PACKET_LENGTH + 1]; // buffer in hex
for (i = 0; i < pPacket->wsaBuffer.len; i++) sprintf(szBuffer + i*2, "%02x", pPacket->rgbyBuffer[i]);
TRACE3(NETWORK, "Packet... Source %s, Length %d, Buffer %s", INET_NTOA(pPacket->ipSource), pPacket->wsaBuffer.len, szBuffer);
return NO_ERROR; } #endif // DEBUG
|