|
|
/********************************************************************/ /** Copyright(c) 1998 Microsoft Corporation. **/ /********************************************************************/
//***
//
// Filename: rasatcp.h
//
// Description: Contains defines for the rasatcp component. This is really
// a thin wrapper layer, so not much happens here!
//
// History: Feb 26, 1998 Shirish Koti Created original version.
//
//***
#ifndef _RASATCP_H_
#define _RASATCP_H_
#define ARAP_DEVICE_NAME L"\\Device\\AtalkArap"
#define ATCP_SIGNATURE 0x08121994
#define ATCP_OPT_APPLETALK_ADDRESS 1
#define ATCP_OPT_ROUTING_PROTOCOL 2
#define ATCP_OPT_SUPPRESS_BROADCAST 3
#define ATCP_OPT_AT_COMPRESSION_PROTOCOL 4
#define ATCP_OPT_RESERVED 5
#define ATCP_OPT_SERVER_INFORMATION 6
#define ATCP_OPT_ZONE_INFORMATION 7
#define ATCP_OPT_DEFAULT_ROUTER_ADDRESS 8
// modify this value appropriately, if Apple ever defines more options
#define ATCP_OPT_MAX_VAL 9
#define ATCP_NOT_REQUESTED 0
#define ATCP_REQ 1
#define ATCP_REJ 2
#define ATCP_NAK 3
#define ATCP_ACK 4
// the only routing option we support is no routing info
#define ATCP_OPT_ROUTING_NONE 0
// we define the Server-Class for "Appletalk PPP Dial-In Server"
#define ATCP_SERVER_CLASS 0x001
// NT5.0: Major version = 05, minor version = 0
#define ATCP_SERVER_IMPLEMENTATION_ID 0x05000000
#define ARAP_BIND_SIZE sizeof(PROTOCOL_CONFIG_INFO)+sizeof(ARAP_BIND_INFO)
#define DDPPROTO_RTMPRESPONSEORDATA 1
typedef struct _ATCPCONN { DWORD Signature; PVOID AtalkContext; // stack's context
HPORT hPort; HBUNDLE hConnection; DWORD Flags; NET_ADDR ClientAddr; // what we give to the client
CRITICAL_SECTION CritSect; BOOLEAN SuppressRtmp; BOOLEAN SuppressAllBcast; BOOLEAN fLineUpDone; RASMAN_ROUTEINFO RouteInfo; } ATCPCONN, *PATCPCONN;
#define ATCP_CONFIG_REQ_DONE 0x1
#if DBG
#define ATCP_DBGPRINT(_x) \
{ \ DbgPrint("ATCP: "); \ DbgPrint _x; \ }
#define ATCP_ASSERT(_x) \
{ \ if (!(_x)) \ { \ DbgPrint("ATCP: Assertion failed File %s, line %ld",__FILE__, __LINE__); \ DbgBreakPoint(); \ } \ }
#define ATCP_DUMP_BYTES(_a,_b,_c) atcpDumpBytes(_a,_b,_c)
#else
#define ATCP_DBGPRINT(_x)
#define ATCP_ASSERT(_x)
#define ATCP_DUMP_BYTES(_a,_b,_c)
#endif
//
// Global externs
//
extern HANDLE AtcpHandle; extern CRITICAL_SECTION AtcpCritSect; extern NET_ADDR AtcpServerAddress; extern NET_ADDR AtcpDefaultRouter; extern DWORD AtcpNumConnections; extern UCHAR AtcpServerName[NAMESTR_LEN]; extern UCHAR AtcpZoneName[ZONESTR_LEN];
//
// prototypes from exports.c
//
DWORD AtcpInit( IN BOOL fInitialize );
DWORD AtcpBegin( OUT PVOID *ppContext, IN PVOID pInfo );
DWORD AtcpEnd( IN PVOID pContext );
DWORD AtcpReset( IN PVOID pContext );
DWORD AtcpThisLayerUp( IN PVOID pContext );
DWORD AtcpMakeConfigRequest( IN PVOID pContext, OUT PPP_CONFIG *pSendBuf, IN DWORD cbSendBuf );
DWORD AtcpMakeConfigResult( IN PVOID pContext, IN PPP_CONFIG *pReceiveBuf, OUT PPP_CONFIG *pSendBuf, IN DWORD cbSendBuf, IN BOOL fRejectNaks );
DWORD AtcpConfigAckReceived( IN PVOID pContext, IN PPP_CONFIG *pReceiveBuf );
DWORD AtcpConfigNakReceived( IN PVOID pContext, IN PPP_CONFIG *pReceiveBuf );
DWORD AtcpConfigRejReceived( IN PVOID pContext, IN PPP_CONFIG *pReceiveBuf );
DWORD AtcpGetNegotiatedInfo( IN PVOID pContext, OUT PPP_ATCP_RESULT *pAtcpResult );
DWORD AtcpProjectionNotification( IN PVOID pContext, IN PVOID pProjectionResult );
//
// prototypes from rasatcp.c
//
DWORD atcpStartup( IN VOID );
VOID atcpOpenHandle( IN VOID );
DWORD atcpAtkSetup( IN PATCPCONN pAtcpConn, IN ULONG IoControlCode );
VOID atcpCloseHandle( IN VOID );
PATCPCONN atcpAllocConnection( IN PPPCP_INIT *pPppInit );
DWORD atcpCloseAtalkConnection( IN PATCPCONN pAtcpConn );
DWORD atcpParseRequest( IN PATCPCONN pAtcpConn, IN PPP_CONFIG *pReceiveBuf, OUT PPP_CONFIG *pSendBuf, IN DWORD cbSendBuf, OUT BYTE ParseResult[ATCP_OPT_MAX_VAL], OUT BOOL *pfRejectingSomething );
DWORD atcpPrepareResponse( IN PATCPCONN pAtcpConn, OUT PPP_CONFIG *pSendBuf, IN DWORD cbSendBuf, OUT BYTE ParseResult[ATCP_OPT_MAX_VAL] );
VOID atcpDumpBytes( IN PBYTE Str, IN PBYTE Packet, IN DWORD PacketLen );
#endif // _RASIPCP_H_
|