|
|
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
udp.c
Abstract:
Boot loader UDP routines.
Author:
Chuck Lenzmeier (chuckl) December 27, 1996
Revision History:
Notes:
--*/
#include "precomp.h"
#pragma hdrstop
ULONG UdpNextPort = 0;
USHORT UdpUnicastDestinationPort;
#if 0
USHORT UdpMulticastDestinationPort; ULONG UdpMulticastDestinationAddress; USHORT UdpMulticastSourcePort; ULONG UdpMulticastSourceAddress; #endif
USHORT UdpAssignUnicastPort ( VOID ) { if ( UdpNextPort == 0 ) { UdpNextPort = (ArcGetRelativeTime() & 0x7fff) | 0x8000; } else if ( ++UdpNextPort > 0xffff ) { UdpNextPort = 0x8000; }
UdpUnicastDestinationPort = SWAP_WORD( UdpNextPort );
#if 0
UdpMulticastDestinationPort = 0; #endif
RomSetReceiveStatus( UdpUnicastDestinationPort #if 0
, UdpMulticastDestinationPort, UdpMulticastDestinationAddress, UdpMulticastSourcePort, UdpMulticastSourceAddress #endif
);
return (USHORT)UdpUnicastDestinationPort;
} // UdpAssignUnicastPort
#if 0
VOID UdpSetMulticastPort ( IN USHORT DestinationPort, IN ULONG DestinationAddress, IN USHORT SourcePort, IN ULONG SourceAddress ) { UdpMulticastDestinationPort = DestinationPort; UdpMulticastDestinationAddress = DestinationAddress; UdpMulticastSourcePort = SourcePort; UdpMulticastSourceAddress = SourceAddress;
RomSetReceiveStatus( UdpUnicastDestinationPort, UdpMulticastDestinationPort, UdpMulticastDestinationAddress, UdpMulticastSourcePort, UdpMulticastSourceAddress );
return;
} // UdpSetMulticastPort
#endif
ULONG UdpReceive ( IN PVOID Buffer, IN ULONG BufferLength, OUT PULONG RemoteHost, OUT PUSHORT RemotePort, IN ULONG Timeout )
//
// Read in packet from the specified socket. The host and port
// the packet comes from is filled in fhost and fport.
// The data is put in buffer buf, which should have size len. If no packet
// arrives in tmo seconds, then 0 is returned.
// Otherwise it returns the size of the packet read.
//
{ return RomReceiveUdpPacket( Buffer, BufferLength, Timeout, RemoteHost, RemotePort );
} // UdpReceive
ULONG UdpSend ( IN PVOID Buffer, IN ULONG BufferLength, IN ULONG RemoteHost, IN USHORT RemotePort )
//
// writes a packet to the specified socket. The host and port the packet
// should go to should be in fhost and fport
// The data should be put in buffer buf, and should have size len.
// It usually returns the number of characters sent, or -1 on failure.
//
{ return RomSendUdpPacket( Buffer, BufferLength, RemoteHost, RemotePort );
} // UdpSend
|