mirror of https://github.com/tongzx/nt5src
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.
184 lines
5.3 KiB
184 lines
5.3 KiB
/*******************************************************************/
|
|
/* Copyright(c) 1993 Microsoft Corporation */
|
|
/*******************************************************************/
|
|
|
|
//***
|
|
//
|
|
// Filename: ipxcp.h
|
|
//
|
|
// Description: IPX network layer configuration definitions
|
|
//
|
|
//
|
|
// Author: Stefan Solomon (stefans) November 24, 1993.
|
|
//
|
|
// Revision History:
|
|
//
|
|
//***
|
|
|
|
|
|
#ifndef _IPXCP_
|
|
#define _IPXCP_
|
|
|
|
|
|
//*** IPXCP Option Offsets ***
|
|
|
|
#define OPTIONH_TYPE 0
|
|
#define OPTIONH_LENGTH 1
|
|
#define OPTIONH_DATA 2
|
|
|
|
//*** IPXCP Configuration Option Types ***
|
|
|
|
#define IPX_NETWORK_NUMBER (UCHAR)1
|
|
#define IPX_NODE_NUMBER (UCHAR)2
|
|
#define IPX_COMPRESSION_PROTOCOL (UCHAR)3
|
|
#define IPX_ROUTING_PROTOCOL (UCHAR)4
|
|
#define IPX_ROUTER_NAME (UCHAR)5
|
|
#define IPX_CONFIGURATION_COMPLETE (UCHAR)6
|
|
|
|
//*** IPXCP Configuration Option Values ***
|
|
|
|
#define RIP_SAP_ROUTING 2
|
|
#define TELEBIT_COMPRESSED_IPX 0x0002
|
|
|
|
// nr of parameters we will try to negotiate
|
|
#define MAX_DESIRED_PARAMETERS 3
|
|
|
|
//*** IPXCP Work Buffer ***
|
|
|
|
typedef enum _ROUTE_STATE {
|
|
|
|
NO_ROUTE,
|
|
ROUTE_ALLOCATED,
|
|
ROUTE_ACTIVATED
|
|
} ROUTE_STATE;
|
|
|
|
typedef enum _IPXWAN_STATE {
|
|
|
|
IPXWAN_NOT_STARTED,
|
|
IPXWAN_ACTIVE,
|
|
IPXWAN_DONE
|
|
|
|
} IPXWAN_STATE;
|
|
|
|
typedef struct _IPXCP_CONTEXT {
|
|
|
|
ULONG InterfaceType;
|
|
ROUTE_STATE RouteState;
|
|
IPXWAN_STATE IpxwanState;
|
|
ULONG IpxwanConfigResult;
|
|
IPXCP_CONFIGURATION Config;
|
|
ULONG IpxConnectionHandle; // used in IpxGetWanInactivityCounter
|
|
ULONG AllocatedNetworkIndex; // net number index from the wannet pool
|
|
USHORT CompressionProtocol;
|
|
BOOL SetReceiveCompressionProtocol;
|
|
BOOL SetSendCompressionProtocol;
|
|
BOOL ErrorLogged;
|
|
USHORT NetNumberNakSentCount; // nr of Naks we issued by the CLIENT
|
|
USHORT NetNumberNakReceivedCount; // nr of Naks recv by the SERVER
|
|
|
|
// This array is used to turn off negotiation for certain options.
|
|
// An option negotiation is turned off if it gets rejected by the other end
|
|
// or if (in the compression case) is not supported by the other end.
|
|
|
|
BOOL DesiredParameterNegotiable[MAX_DESIRED_PARAMETERS];
|
|
|
|
// hash tables linkages
|
|
LIST_ENTRY ConnHtLinkage; // linkage in connection id hash table
|
|
LIST_ENTRY NodeHtLinkage; // linkage in node hash table
|
|
|
|
// these two variables used to store the previous browser enabling state
|
|
// for nwlnkipx and nwlnknb
|
|
|
|
BOOL NwLnkIpxPreviouslyEnabled;
|
|
BOOL NwLnkNbPreviouslyEnabled;
|
|
|
|
// !!! This should go away !!!
|
|
|
|
ULONG hPort;
|
|
HBUNDLE hConnection;
|
|
|
|
} IPXCP_CONTEXT, *PIPXCP_CONTEXT;
|
|
|
|
//*** max nr of Naks we can send or receive for the Net Number
|
|
// if you modify these values set max naks sent < max naks received to give
|
|
// the client a chance to terminate and inform the user before the server terminates
|
|
|
|
// max nr of naks the client can send before giving up and terminating the connection
|
|
#define MAX_NET_NUMBER_NAKS_SENT 5
|
|
|
|
// max nr of naks the server can receive before giving up
|
|
#define MAX_NET_NUMBER_NAKS_RECEIVED 5
|
|
|
|
//*** The following define the index for each option as they appear in the
|
|
// DesiredParameter array. CHANGE THESE DEFS IF YOU CHANGE DESIREDPARAMETER!
|
|
|
|
#define IPX_NETWORK_NUMBER_INDEX 0
|
|
#define IPX_NODE_NUMBER_INDEX 1
|
|
#define IPX_COMPRESSION_PROTOCOL_INDEX 2
|
|
|
|
//*** Option Handler Actions ***
|
|
|
|
typedef enum _OPT_ACTION {
|
|
|
|
SNDREQ_OPTION, // Copy the option value from the local context struct
|
|
// to the REQ option frame to be sent
|
|
|
|
RCVNAK_OPTION, // Check the option value from the received NAK frame.
|
|
// Copy it to our local context struct if it is acceptable
|
|
// for us.
|
|
|
|
RCVACK_OPTION, // Compare option values from the received ACK frame and
|
|
// the local context struct.
|
|
|
|
RCVREQ_OPTION, // Check if the option value in the received REQ frame is
|
|
// acceptable. If not, write the acceptable value in the
|
|
// response NAK frame.
|
|
|
|
SNDNAK_OPTION // Make an acceptable option in the response NAK frame.
|
|
// This happens when a desired option is missing from the
|
|
// received REQ frame.
|
|
} OPT_ACTION;
|
|
|
|
|
|
|
|
extern CRITICAL_SECTION DbaseCritSec;
|
|
|
|
#define ACQUIRE_DATABASE_LOCK EnterCriticalSection(&DbaseCritSec)
|
|
#define RELEASE_DATABASE_LOCK LeaveCriticalSection(&DbaseCritSec)
|
|
|
|
extern BOOL RouterStarted;
|
|
extern DWORD SingleClientDialinIfNoRouter;
|
|
extern UCHAR nullnet[4];
|
|
extern UCHAR nullnode[6];
|
|
extern DWORD WorkstationDialoutActive;
|
|
|
|
typedef struct _IPXCP_GLOBAL_CONFIG_PARAMS {
|
|
IPXCP_ROUTER_CONFIG_PARAMS RParams;
|
|
DWORD SingleClientDialout;
|
|
DWORD FirstWanNet;
|
|
DWORD WanNetPoolSize;
|
|
UNICODE_STRING WanNetPoolStr;
|
|
DWORD EnableUnnumberedWanLinks;
|
|
DWORD EnableAutoWanNetAllocation;
|
|
DWORD EnableCompressionProtocol;
|
|
DWORD EnableIpxwanForWorkstationDialout;
|
|
DWORD AcceptRemoteNodeNumber;
|
|
DWORD DebugLog;
|
|
UCHAR puSpecificNode[6];
|
|
} IPXCP_GLOBAL_CONFIG_PARAMS, *PIPXCP_GLOBAL_CONFIG_PARAMS;
|
|
|
|
extern IPXCP_GLOBAL_CONFIG_PARAMS GlobalConfig;
|
|
|
|
extern VOID (*PPPCompletionRoutine)(HCONN hPortOrBundle,
|
|
DWORD Protocol,
|
|
PPP_CONFIG * pSendConfig,
|
|
DWORD dwError);
|
|
|
|
extern HANDLE PPPThreadHandle;
|
|
|
|
extern HINSTANCE IpxWanDllHandle;
|
|
|
|
// ipxwan dll name
|
|
#define IPXWANDLLNAME "ipxwan.dll"
|
|
|
|
#endif
|