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.
 
 
 
 
 
 

255 lines
5.3 KiB

/********************************************************************/
/** 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_