594 lines
12 KiB
C
594 lines
12 KiB
C
|
||
/*++
|
||
|
||
Copyright (c) 1989 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
atalktdi.h
|
||
|
||
Abstract:
|
||
|
||
This file defines the interface that will be offered to the layers of the
|
||
stack
|
||
|
||
Author:
|
||
|
||
Nikhil Kamkolkar (NikhilK) 8-Jun-1992
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
#ifndef _ATALKTDI_H
|
||
#define _ATALKTDI_H
|
||
|
||
//
|
||
// The provider names supported by the Appletalk stack
|
||
//
|
||
|
||
#define ATALKDDP_DEVICENAME L"\\Device\\AtalkDdp"
|
||
#define ATALKADSP_DEVICENAME L"\\Device\\AtalkAdsp"
|
||
#define ATALKASPS_DEVICENAME L"\\Device\\AtalkAspServer"
|
||
#define ATALKASPC_DEVICENAME L"\\Device\\AtalkAspClient"
|
||
#define ATALKPAP_DEVICENAME L"\\Device\\AtalkPap"
|
||
#define ATALKARAP_DEVICENAME L"\\Device\\AtalkArap"
|
||
|
||
//
|
||
// The following is passed in the TdiAction calls to reaffirm that
|
||
// the request is meant for the Appletalk transport.
|
||
//
|
||
|
||
#define MATK (*(ULONG *)"MATK")
|
||
|
||
//
|
||
// Options buffer for all the calls
|
||
//
|
||
|
||
typedef struct _OPTIONS_CONNINF
|
||
{
|
||
union
|
||
{
|
||
int ProtocolType;
|
||
TRANSPORT_ADDRESS Address;
|
||
|
||
struct
|
||
{
|
||
TRANSPORT_ADDRESS RemoteAddress;
|
||
USHORT WorkstationQuantum;
|
||
USHORT ServerQuantum;
|
||
} PapInfo;
|
||
};
|
||
} OPTIONS_CONNINF, *POPTIONS_CONNINF;
|
||
#define OPTIONS_LENGTH sizeof(OPTIONS_CONNINF)
|
||
|
||
typedef union
|
||
{
|
||
struct
|
||
{
|
||
USHORT Network;
|
||
UCHAR Node;
|
||
UCHAR Socket;
|
||
};
|
||
ULONG Address;
|
||
} ATALK_ADDRESS, *PATALK_ADDRESS;
|
||
|
||
//
|
||
// ACTION CODES:
|
||
// The NBP/ZIP primitives are available to all the providers. The action
|
||
// codes for those are defined first. Following this are the action
|
||
// codes specific to each provider. To insert a new action code, just
|
||
// tag it at the end of the action codes for a particular block (common/
|
||
// provider specific), and increment the max for that block.
|
||
//
|
||
// *IMPORTANT*
|
||
// These are tightly integrated with the dispatch table for the action
|
||
// routines in ATKINIT.C
|
||
//
|
||
|
||
|
||
#define COMMON_ACTIONBASE 0
|
||
#define MIN_COMMON_ACTIONCODE (COMMON_ACTIONBASE)
|
||
|
||
#define COMMON_ACTION_NBPLOOKUP (COMMON_ACTIONBASE)
|
||
#define COMMON_ACTION_NBPCONFIRM (COMMON_ACTIONBASE+0x01)
|
||
#define COMMON_ACTION_NBPREGISTER (COMMON_ACTIONBASE+0x02)
|
||
#define COMMON_ACTION_NBPREMOVE (COMMON_ACTIONBASE+0x03)
|
||
|
||
#define COMMON_ACTION_ZIPGETMYZONE (COMMON_ACTIONBASE+0x04)
|
||
#define COMMON_ACTION_ZIPGETZONELIST (COMMON_ACTIONBASE+0x05)
|
||
#define COMMON_ACTION_ZIPGETLZONES (COMMON_ACTIONBASE+0x06)
|
||
#define COMMON_ACTION_ZIPGETLZONESONADAPTER (COMMON_ACTIONBASE+0x07)
|
||
#define COMMON_ACTION_ZIPGETADAPTERDEFAULTS (COMMON_ACTIONBASE+0x08)
|
||
|
||
#define COMMON_ACTION_GETSTATISTICS (COMMON_ACTIONBASE+0x09)
|
||
#define MAX_COMMON_ACTIONCODE (COMMON_ACTIONBASE+0x09)
|
||
#define COMMON_ACTIONCODES (MAX_COMMON_ACTIONCODE - MIN_COMMON_ACTIONCODE + 1)
|
||
|
||
//
|
||
// Provider specific action codes
|
||
//
|
||
|
||
//
|
||
// DDP
|
||
//
|
||
// NONE
|
||
//
|
||
|
||
//
|
||
// ADSP
|
||
//
|
||
|
||
#define ADSP_ACTIONBASE (MAX_COMMON_ACTIONCODE + 0x01)
|
||
#define MIN_ADSPACTIONCODE (ADSP_ACTIONBASE)
|
||
|
||
#define ACTION_ADSPFORWARDRESET (ADSP_ACTIONBASE)
|
||
|
||
#define MAX_ADSPACTIONCODE (ADSP_ACTIONBASE)
|
||
#define ADSP_SPECIFIC_ACTIONCODES (MAX_ADSPACTIONCODE - MIN_ADSPACTIONCODE + 1)
|
||
|
||
//
|
||
// ASP Client
|
||
//
|
||
|
||
#define ASPC_ACTIONBASE (MAX_ADSPACTIONCODE + 0x01)
|
||
#define MIN_ASPCACTIONCODE (ATP_ACTIONBASE)
|
||
|
||
#define ACTION_ASPCGETSTATUS (ASPC_ACTIONBASE)
|
||
#define ACTION_ASPCCOMMAND (ASPC_ACTIONBASE+0x01)
|
||
#define ACTION_ASPCWRITE (ASPC_ACTIONBASE+0x02)
|
||
|
||
// The following 2 are for NBP, stole 2 slots here that were reserved
|
||
#define COMMON_ACTION_NBPREGISTER_BY_ADDR (ASPC_ACTIONBASE+0x03)
|
||
#define COMMON_ACTION_NBPREMOVE_BY_ADDR (ASPC_ACTIONBASE+0x04)
|
||
#define ACTION_ASPCRESERVED3 (ASPC_ACTIONBASE+0x05)
|
||
|
||
#define MAX_ASPCACTIONCODE (ASPC_ACTIONBASE+0x05)
|
||
#define ASPC_SPECIFIC_ACTIONCODES (MAX_ASPCACTIONCODE - MIN_ASPCACTIONCODE + 1)
|
||
|
||
|
||
//
|
||
// ASP Server
|
||
//
|
||
|
||
#define ASP_ACTIONBASE (MAX_ASPCACTIONCODE + 0x01)
|
||
#define MIN_ASPACTIONCODE (ASP_ACTIONBASE)
|
||
|
||
#define ACTION_ASP_BIND (ASP_ACTIONBASE)
|
||
|
||
#define MAX_ASPACTIONCODE (ASP_ACTIONBASE)
|
||
#define ASP_SPECIFIC_ACTIONCODES (MAX_ASPACTIONCODE - MIN_ASPACTIONCODE + 1)
|
||
|
||
//
|
||
// PAP
|
||
//
|
||
|
||
#define PAP_ACTIONBASE (MAX_ASPACTIONCODE + 0x01)
|
||
#define MIN_PAPACTIONCODE (PAP_ACTIONBASE)
|
||
|
||
#define ACTION_PAPGETSTATUSSRV (PAP_ACTIONBASE)
|
||
#define ACTION_PAPSETSTATUS (PAP_ACTIONBASE+0x01)
|
||
#define ACTION_PAPPRIMEREAD (PAP_ACTIONBASE+0x02)
|
||
|
||
#define MAX_PAPACTIONCODE (PAP_ACTIONBASE+0x02)
|
||
#define PAP_SPECIFIC_ACTIONCODES (MAX_PAPACTIONCODE - MIN_PAPACTIONCODE + 1)
|
||
|
||
#define MAX_ALLACTIONCODES (MAX_PAPACTIONCODE)
|
||
|
||
//
|
||
// STRUCTURE Definitions for the ACTION routines for all the providers
|
||
//
|
||
|
||
|
||
|
||
|
||
//
|
||
// NBP Interface
|
||
//
|
||
|
||
//
|
||
// **WARNING**
|
||
// The structure WSH_NBP_NAME is defined to be exactly like this in atalkwsh.h
|
||
// Change both if they ever need to be changed
|
||
//
|
||
|
||
#define MAX_ENTITY 32
|
||
|
||
typedef struct
|
||
{
|
||
UCHAR ObjectNameLen;
|
||
UCHAR ObjectName[MAX_ENTITY];
|
||
UCHAR TypeNameLen;
|
||
UCHAR TypeName[MAX_ENTITY];
|
||
UCHAR ZoneNameLen;
|
||
UCHAR ZoneName[MAX_ENTITY];
|
||
} NBP_NAME, *PNBP_NAME;
|
||
|
||
typedef struct
|
||
{
|
||
ATALK_ADDRESS Address;
|
||
USHORT Enumerator;
|
||
NBP_NAME NbpName;
|
||
} NBP_TUPLE, *PNBP_TUPLE;
|
||
|
||
//
|
||
// NBP Lookup
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
NBP_TUPLE LookupTuple;
|
||
USHORT NoTuplesRead;
|
||
|
||
} NBP_LOOKUP_PARAMS, *PNBP_LOOKUP_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
NBP_LOOKUP_PARAMS Params;
|
||
|
||
//
|
||
// NBP_TUPLE NbpTuples[]
|
||
//
|
||
|
||
} NBP_LOOKUP_ACTION, *PNBP_LOOKUP_ACTION;
|
||
|
||
//
|
||
// NBP Confirm
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
NBP_TUPLE ConfirmTuple;
|
||
|
||
} NBP_CONFIRM_PARAMS, *PNBP_CONFIRM_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
NBP_CONFIRM_PARAMS Params;
|
||
|
||
} NBP_CONFIRM_ACTION, *PNBP_CONFIRM_ACTION;
|
||
|
||
//
|
||
// NBP Register/Deregister- Address Object
|
||
// Use the following for both register/deregister on their
|
||
// respective objects
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
union
|
||
{
|
||
NBP_TUPLE RegisterTuple;
|
||
NBP_TUPLE RegisteredTuple;
|
||
};
|
||
|
||
} NBP_REGDEREG_PARAMS, *PNBP_REGDEREG_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
NBP_REGDEREG_PARAMS Params;
|
||
|
||
} NBP_REGDEREG_ACTION, *PNBP_REGDEREG_ACTION;
|
||
|
||
|
||
|
||
|
||
//
|
||
// ZIP Interface
|
||
//
|
||
|
||
//
|
||
// ZIP GetMyZone
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
|
||
//
|
||
// CHAR ZoneName[]
|
||
// Maximum of MAX_ENTITYNAME+1
|
||
//
|
||
|
||
} ZIP_GETMYZONE_ACTION, *PZIP_GETMYZONE_ACTION;
|
||
|
||
//
|
||
// ZIP GetZoneList
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
LONG ZonesAvailable;
|
||
|
||
} ZIP_GETZONELIST_PARAMS, *PZIP_GETZONELIST_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
ZIP_GETZONELIST_PARAMS Params;
|
||
|
||
//
|
||
// CHAR ZoneListBuffer[];
|
||
//
|
||
|
||
} ZIP_GETZONELIST_ACTION, *PZIP_GETZONELIST_ACTION;
|
||
|
||
//
|
||
// ZIP GetLocalZones
|
||
// This uses the same structure as that for the GetZoneList command
|
||
//
|
||
|
||
//
|
||
// ZIP GetLocalZonesOnAdapter
|
||
// This uses the same structure as for the GetZoneList command, with the
|
||
// condition that the adapter name follows the structure as a null
|
||
// terminated double-byte string. It will be overwritten upon return
|
||
// by the zone names.
|
||
//
|
||
|
||
//
|
||
// ZIP GetAdaptorDefaults (Network Range & Default Zone)
|
||
//
|
||
// The adapter name follows the structure as a null terminated double-byte
|
||
// string. This is replaced by the zone name.
|
||
|
||
typedef struct
|
||
{
|
||
USHORT NwRangeLowEnd;
|
||
USHORT NwRangeHighEnd;
|
||
|
||
} ZIP_GETPORTDEF_PARAMS, *PZIP_GETPORTDEF_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
ZIP_GETPORTDEF_PARAMS Params;
|
||
|
||
// INPUT:
|
||
// WCHAR AdaptorName
|
||
// Maximum of MAX_ENTITYNAME+1
|
||
//
|
||
// OUTPUT:
|
||
// BYTE DefZone[MAX_ENTITY+1];
|
||
} ZIP_GETPORTDEF_ACTION, *PZIP_GETPORTDEF_ACTION;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
|
||
// OUTPUT:
|
||
// Appletalk statistics structure
|
||
} GET_STATISTICS_ACTION, *PGET_STATISTICS_ACTION;
|
||
|
||
//
|
||
// DDP Interface
|
||
// NONE
|
||
//
|
||
|
||
|
||
//
|
||
// ADSP Interface- specific action routines for ADSP
|
||
//
|
||
|
||
//
|
||
// ADSP Forward Reset
|
||
//
|
||
|
||
typedef struct _ADSP_FORWARDRESET_ACTION
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
} ADSP_FORWARDRESET_ACTION, *PADSP_FORWARDRESET_ACTION;
|
||
|
||
|
||
|
||
|
||
//
|
||
// ASP Client Interface- specific action routines for ASP Client
|
||
//
|
||
|
||
//
|
||
// ASP GetStatus
|
||
//
|
||
typedef struct
|
||
{
|
||
TA_APPLETALK_ADDRESS ServerAddr;
|
||
|
||
} ASPC_GETSTATUS_PARAMS, *PASPC_GETSTATUS_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
ASPC_GETSTATUS_PARAMS Params;
|
||
|
||
} ASPC_GETSTATUS_ACTION, *PASPC_GETSTATUS_ACTION;
|
||
|
||
//
|
||
// ASP Command or Write
|
||
//
|
||
typedef struct
|
||
{
|
||
USHORT CmdSize;
|
||
USHORT WriteAndReplySize;
|
||
// BYTE CmdBuff[CmdSize];
|
||
// BYTE WriteAndReplyBuf[ReplySize];
|
||
|
||
} ASPC_COMMAND_OR_WRITE_PARAMS, *PASPC_COMMAND_OR_WRITE_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
ASPC_COMMAND_OR_WRITE_PARAMS Params;
|
||
|
||
} ASPC_COMMAND_OR_WRITE_ACTION, *PASPC_COMMAND_OR_WRITE_ACTION;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
|
||
} ASPC_RESERVED_ACTION, *PASPC_RESERVED_ACTION;
|
||
|
||
//
|
||
// ASP Server Interface- action routines specific to ASP Server
|
||
//
|
||
|
||
typedef PVOID CONNCTXT;
|
||
|
||
typedef struct
|
||
{
|
||
PUCHAR rq_RequestBuf;
|
||
LONG rq_RequestSize;
|
||
union
|
||
{
|
||
PMDL rq_WriteMdl;
|
||
PMDL rq_ReplyMdl;
|
||
};
|
||
PVOID rq_CacheMgrContext;
|
||
|
||
} REQUEST, *PREQUEST;
|
||
|
||
typedef VOID (FASTCALL *CLIENT_CLOSE_COMPLETION)(
|
||
IN NTSTATUS Status,
|
||
IN PVOID pCloseCtxt);
|
||
|
||
typedef VOID (FASTCALL *CLIENT_REPLY_COMPLETION)(
|
||
IN NTSTATUS Status,
|
||
IN PVOID pReplyCtxt,
|
||
IN PREQUEST Request);
|
||
|
||
// Returns context to associate for this session
|
||
typedef CONNCTXT (FASTCALL *CLIENT_SESSION_NOTIFY)(
|
||
IN PVOID pConnection,
|
||
IN BOOLEAN fOverTcp);
|
||
|
||
typedef NTSTATUS (FASTCALL *CLIENT_REQUEST_NOTIFY)(
|
||
IN NTSTATUS Status,
|
||
IN PVOID ConnCtxt,
|
||
IN PREQUEST Request);
|
||
|
||
// Returns MDL describing the buffer
|
||
typedef NTSTATUS (FASTCALL *CLIENT_GET_WRITEBUFFER)(
|
||
IN PVOID pSda,
|
||
IN PREQUEST pRequest);
|
||
|
||
typedef VOID (FASTCALL *CLIENT_ATTN_COMPLETION)(
|
||
IN PVOID pContext);
|
||
|
||
typedef NTSTATUS (*ASP_CLOSE_CONN)(
|
||
IN PVOID pConnection);
|
||
|
||
typedef NTSTATUS (*ASP_FREE_CONN)(
|
||
IN PVOID pConnection);
|
||
|
||
typedef NTSTATUS (FASTCALL *ASP_LISTEN_CONTROL)( // Synchronous
|
||
IN PVOID pAspCtxt,
|
||
IN BOOLEAN Active);
|
||
|
||
typedef NTSTATUS (*ASP_SET_STATUS)( // Synchronous
|
||
IN PVOID pAspCtxt,
|
||
IN PUCHAR pStatus,
|
||
IN USHORT StatusSize);
|
||
|
||
typedef NTSTATUS (FASTCALL *ASP_WRITE_CONTINUE)(
|
||
IN PVOID PREQUEST);
|
||
|
||
typedef NTSTATUS (FASTCALL *ASP_REPLY)(
|
||
IN PREQUEST pRequest,
|
||
IN PUCHAR ResultCode);
|
||
|
||
typedef NTSTATUS (*ASP_SEND_ATTENTION)(
|
||
IN PVOID pConnection,
|
||
IN USHORT AttentionCode,
|
||
IN PVOID pContext);
|
||
|
||
typedef struct
|
||
{
|
||
CLIENT_SESSION_NOTIFY clt_SessionNotify; // When a new session is established
|
||
CLIENT_REQUEST_NOTIFY clt_RequestNotify; // When a new request comes in
|
||
// Also on remote closes
|
||
CLIENT_GET_WRITEBUFFER clt_GetWriteBuffer; // For ASP Write command.
|
||
CLIENT_REPLY_COMPLETION clt_ReplyCompletion; // Completion routine for a reply
|
||
CLIENT_ATTN_COMPLETION clt_AttnCompletion; // Completion routine for send attention
|
||
CLIENT_CLOSE_COMPLETION clt_CloseCompletion; // Completion routine for a session close request
|
||
} ASP_CLIENT_ENTRIES, *PASP_CLIENT_ENTRIES;
|
||
|
||
typedef struct
|
||
{
|
||
ATALK_ADDRESS asp_AtalkAddr; // net addr of default adapter
|
||
PVOID asp_AspCtxt;
|
||
ASP_SET_STATUS asp_SetStatus;
|
||
ASP_CLOSE_CONN asp_CloseConn;
|
||
ASP_FREE_CONN asp_FreeConn;
|
||
ASP_LISTEN_CONTROL asp_ListenControl;
|
||
ASP_WRITE_CONTINUE asp_WriteContinue;
|
||
ASP_REPLY asp_Reply;
|
||
ASP_SEND_ATTENTION asp_SendAttention;
|
||
} ASP_XPORT_ENTRIES, *PASP_XPORT_ENTRIES;
|
||
|
||
//
|
||
// ASP Exchange entries
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
PASP_XPORT_ENTRIES pXportEntries;
|
||
ASP_CLIENT_ENTRIES ClientEntries;
|
||
} ASP_BIND_PARAMS, *PASP_BIND_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
ASP_BIND_PARAMS Params;
|
||
} ASP_BIND_ACTION, *PASP_BIND_ACTION;
|
||
|
||
|
||
|
||
|
||
//
|
||
// PAP Interface
|
||
//
|
||
|
||
//
|
||
// PAP GetStatus Using Server Address
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
TA_APPLETALK_ADDRESS ServerAddr;
|
||
|
||
} PAP_GETSTATUSSRV_PARAMS, *PPAP_GETSTATUSSRV_PARAMS;
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
PAP_GETSTATUSSRV_PARAMS Params;
|
||
|
||
} PAP_GETSTATUSSRV_ACTION, *PPAP_GETSTATUSSRV_ACTION;
|
||
|
||
|
||
//
|
||
// PAP SetStatus
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
|
||
} PAP_SETSTATUS_ACTION, *PPAP_SETSTATUS_ACTION;
|
||
|
||
//
|
||
// PAP PrimeRead
|
||
//
|
||
|
||
typedef struct
|
||
{
|
||
TDI_ACTION_HEADER ActionHeader;
|
||
|
||
} PAP_PRIMEREAD_ACTION, *PPAP_PRIMEREAD_ACTION;
|
||
|
||
#else
|
||
;
|
||
#endif
|
||
|