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)1998 Microsoft Corporation, All Rights Reserved.
//
// byteswap.cpp
//
// Routines to byteswap SCEP and bFTP headers from the wire format
// (which is Big-Endian) to Little-Endian (Intel) format.
//
// Author:
//
// Edward Reus (EdwardR) 02-26-98 Initial coding.
//
//--------------------------------------------------------------------
#include "precomp.h"
//--------------------------------------------------------------------
// ByteSwapCommandHeader()
//
// A command header is a 28 byte sub-header embedded in some of the
// SCEP headers.
//--------------------------------------------------------------------
void ByteSwapCommandHeader( COMMAND_HEADER *pCommandHeader ) { pCommandHeader->Length4 = ByteSwapLong(pCommandHeader->Length4); pCommandHeader->DestPid = ByteSwapShort(pCommandHeader->DestPid); pCommandHeader->SrcPid = ByteSwapShort(pCommandHeader->SrcPid); pCommandHeader->CommandId = ByteSwapShort(pCommandHeader->CommandId); }
//--------------------------------------------------------------------
// ByteSwapReqHeaderShortNonFrag()
//
// Short non-fragmented SCEP request header.
//--------------------------------------------------------------------
void ByteSwapReqHeaderShortNonFrag( SCEP_REQ_HEADER_SHORT *pReqHeaderShort ) { pReqHeaderShort->Length3 = ByteSwapShort(pReqHeaderShort->Length3);
if (pReqHeaderShort->Length3 >= COMMAND_HEADER_SIZE) { ByteSwapCommandHeader( (COMMAND_HEADER*)pReqHeaderShort->CommandHeader ); } }
//--------------------------------------------------------------------
// ByteSwapReqHeaderLongNonFrag()
//
// Long non-fragmented SCEP request header.
//--------------------------------------------------------------------
void ByteSwapReqHeaderLongNonFrag( SCEP_REQ_HEADER_LONG *pReqHeaderLong ) { pReqHeaderLong->Length2 = ByteSwapShort(pReqHeaderLong->Length2); pReqHeaderLong->Length3 = ByteSwapShort(pReqHeaderLong->Length3);
if (pReqHeaderLong->Length3 >= COMMAND_HEADER_SIZE) { ByteSwapCommandHeader( (COMMAND_HEADER*)pReqHeaderLong->CommandHeader ); } }
//--------------------------------------------------------------------
// ByteSwapReqHeaderShortFrag()
//
// Short fragmented SCEP request header. SCEP PDUs can be fragmented.
//
// Note: In practice a short fragmented PDU will probably never
// show up, but its part of the spec...
//--------------------------------------------------------------------
void ByteSwapReqHeaderShortFrag( SCEP_REQ_HEADER_SHORT_FRAG *pReqHeaderShortFrag ) { pReqHeaderShortFrag->Length3 = ByteSwapShort(pReqHeaderShortFrag->Length3); pReqHeaderShortFrag->SequenceNo = ByteSwapLong(pReqHeaderShortFrag->SequenceNo); pReqHeaderShortFrag->RestNo = ByteSwapLong(pReqHeaderShortFrag->RestNo);
if ( (pReqHeaderShortFrag->Length3 >= COMMAND_HEADER_SIZE) && (pReqHeaderShortFrag->DFlag == DFLAG_FIRST_FRAGMENT) ) { ByteSwapCommandHeader( (COMMAND_HEADER*)pReqHeaderShortFrag->CommandHeader ); } }
//--------------------------------------------------------------------
// ByteSwapReqHeaderLongFrag()
//
// Long fragmented SCEP request header.
//--------------------------------------------------------------------
void ByteSwapReqHeaderLongFrag( SCEP_REQ_HEADER_LONG_FRAG *pReqHeaderLongFrag ) { pReqHeaderLongFrag->Length2 = ByteSwapShort(pReqHeaderLongFrag->Length2); pReqHeaderLongFrag->Length3 = ByteSwapShort(pReqHeaderLongFrag->Length3); pReqHeaderLongFrag->SequenceNo = ByteSwapLong(pReqHeaderLongFrag->SequenceNo); pReqHeaderLongFrag->RestNo = ByteSwapLong(pReqHeaderLongFrag->RestNo);
if ( (pReqHeaderLongFrag->Length3 >= COMMAND_HEADER_SIZE) && (pReqHeaderLongFrag->DFlag == DFLAG_FIRST_FRAGMENT) ) { ByteSwapCommandHeader( (COMMAND_HEADER*)pReqHeaderLongFrag->CommandHeader ); } }
//--------------------------------------------------------------------
// ByteSwapReqHeaderShort()
//
//--------------------------------------------------------------------
void ByteSwapReqHeaderShort( SCEP_REQ_HEADER_SHORT *pReqHeaderShort ) { if ( (pReqHeaderShort->DFlag == DFLAG_SINGLE_PDU) || (pReqHeaderShort->DFlag == DFLAG_INTERRUPT) || (pReqHeaderShort->DFlag == DFLAG_CONNECT_REJECT) ) { ByteSwapReqHeaderShortNonFrag( pReqHeaderShort ); } else { ByteSwapReqHeaderShortFrag( (SCEP_REQ_HEADER_SHORT_FRAG*)pReqHeaderShort ); } }
//--------------------------------------------------------------------
// ByteSwapReqHeaderLong()
//
//--------------------------------------------------------------------
void ByteSwapReqHeaderLong( SCEP_REQ_HEADER_LONG *pReqHeaderLong ) { if ( (pReqHeaderLong->DFlag == DFLAG_SINGLE_PDU) || (pReqHeaderLong->DFlag == DFLAG_INTERRUPT) || (pReqHeaderLong->DFlag == DFLAG_CONNECT_REJECT) ) { ByteSwapReqHeaderLongNonFrag( pReqHeaderLong ); } else { ByteSwapReqHeaderLongFrag( (SCEP_REQ_HEADER_LONG_FRAG*)pReqHeaderLong ); } }
|