90 lines
2.8 KiB
C
90 lines
2.8 KiB
C
/********************************************************************/
|
|
/** Microsoft LAN Manager **/
|
|
/** Copyright(c) Microsoft Corp., 1990-1993 **/
|
|
/********************************************************************/
|
|
/* :ts=4 */
|
|
|
|
//** DGRAM.H - Common datagram protocol definitions.
|
|
//
|
|
// This file contains definitions for the functions common to
|
|
// both UDP and Raw IP.
|
|
//
|
|
|
|
#ifndef _DGRAM_INCLUDED_
|
|
#define _DGRAM_INCLUDED_ 1
|
|
|
|
|
|
//* Structure used for maintaining DG send requests.
|
|
|
|
#define dsr_signature 0x20525338
|
|
|
|
struct DGSendReq {
|
|
#ifdef DEBUG
|
|
ulong dsr_sig;
|
|
#endif
|
|
Queue dsr_q; // Queue linkage when pending.
|
|
IPAddr dsr_addr; // Remote IPAddr.
|
|
PNDIS_BUFFER dsr_buffer; // Buffer of data to send.
|
|
PNDIS_BUFFER dsr_header; // Pointer to header buffer.
|
|
CTEReqCmpltRtn dsr_rtn; // Completion routine.
|
|
PVOID dsr_context; // User context.
|
|
ushort dsr_size; // Size of buffer.
|
|
ushort dsr_port; // Remote port.
|
|
}; /* DGSendReq */
|
|
|
|
typedef struct DGSendReq DGSendReq;
|
|
|
|
//* Structure used for maintaining DG receive requests.
|
|
|
|
#define drr_signature 0x20525238
|
|
|
|
struct DGRcvReq {
|
|
#ifdef DEBUG
|
|
ulong drr_sig;
|
|
#endif
|
|
Queue drr_q; // Queue linkage on AddrObj.
|
|
IPAddr drr_addr; // Remote IPAddr acceptable.
|
|
PNDIS_BUFFER drr_buffer; // Buffer to be filled in.
|
|
PTDI_CONNECTION_INFORMATION drr_conninfo; // Pointer to conn. info.
|
|
CTEReqCmpltRtn drr_rtn; // Completion routine.
|
|
PVOID drr_context; // User context.
|
|
ushort drr_size; // Size of buffer.
|
|
ushort drr_port; // Remote port acceptable.
|
|
}; /* DGRcvReq */
|
|
|
|
typedef struct DGRcvReq DGRcvReq;
|
|
|
|
|
|
//* External definition of exported variables.
|
|
EXTERNAL_LOCK(DGSendReqLock)
|
|
EXTERNAL_LOCK(DGRcvReqFreeLock)
|
|
extern CTEEvent DGDelayedEvent;
|
|
|
|
|
|
//* External definition of exported functions.
|
|
extern void DGSendComplete(void *Context, PNDIS_BUFFER BufferChain);
|
|
|
|
extern TDI_STATUS TdiSendDatagram(PTDI_REQUEST Request,
|
|
PTDI_CONNECTION_INFORMATION ConnInfo, uint DataSize,
|
|
uint *BytesSent, PNDIS_BUFFER Buffer);
|
|
|
|
extern TDI_STATUS TdiReceiveDatagram(PTDI_REQUEST Request,
|
|
PTDI_CONNECTION_INFORMATION ConnInfo,
|
|
PTDI_CONNECTION_INFORMATION ReturnInfo, uint RcvSize,
|
|
uint *BytesRcvd, PNDIS_BUFFER Buffer);
|
|
|
|
extern IP_STATUS DGRcv(void *IPContext, IPAddr Dest, IPAddr Src, IPAddr LocalAddr,
|
|
IPRcvBuf *RcvBuf, uint Size, uchar IsBCast, uchar Protocol,
|
|
IPOptInfo *OptInfo);
|
|
|
|
extern void FreeDGRcvReq(DGRcvReq *RcvReq);
|
|
extern void FreeDGSendReq(DGSendReq *SendReq);
|
|
extern int InitDG(uint MaxHeaderSize);
|
|
extern _inline PNDIS_BUFFER GetDGHeader(void);
|
|
extern void FreeDGHeader(PNDIS_BUFFER FreedBuffer);
|
|
extern void PutPendingQ(AddrObj *QueueingAO);
|
|
|
|
|
|
#endif // ifndef _DGRAM_INCLUDED_
|
|
|