windows-nt/Source/XPSP1/NT/net/nwlink/ipx/config.h
2020-09-26 16:20:57 +08:00

161 lines
4.2 KiB
C

/*++
Copyright (c) 1989-1993 Microsoft Corporation
Module Name:
config.h
Abstract:
Private include file for the ISN IPX module.
file defines all constants and structures necessary for support of
the dynamic configuration of ST.
Revision History:
--*/
//
// These are used to index into the Parameters array in CONFIG.
//
#define CONFIG_DEDICATED_ROUTER 0
#define CONFIG_INIT_DATAGRAMS 1
#define CONFIG_MAX_DATAGRAMS 2
#define CONFIG_RIP_AGE_TIME 3
#define CONFIG_RIP_COUNT 4
#define CONFIG_RIP_TIMEOUT 5
#define CONFIG_RIP_USAGE_TIME 6
#define CONFIG_ROUTE_USAGE_TIME 7
#define CONFIG_SOCKET_UNIQUENESS 8
#define CONFIG_SOCKET_START 9
#define CONFIG_SOCKET_END 10
#define CONFIG_VIRTUAL_NETWORK 11
#define CONFIG_MAX_MEMORY_USAGE 12
#define CONFIG_RIP_TABLE_SIZE 13
#define CONFIG_VIRTUAL_OPTIONAL 14
#define CONFIG_ETHERNET_PAD 15
#define CONFIG_ETHERNET_LENGTH 16
#define CONFIG_SINGLE_NETWORK 17
#define CONFIG_DISABLE_DIALOUT_SAP 18
#define CONFIG_DISABLE_DIALIN_NB 19
#define CONFIG_VERIFY_SOURCE_ADDRESS 20
#define CONFIG_PARAMETERS 21
//
// Main configuration structure.
//
typedef struct _CONFIG {
ULONG Parameters[CONFIG_PARAMETERS]; // index defined above
NDIS_STRING DeviceName; // device name exported
PWSTR RegistryPathBuffer; // path to config info
ULONG BindCount; // entries in BindingList
LIST_ENTRY BindingList; // one per binding
PDRIVER_OBJECT DriverObject; // used for logging errors
} CONFIG, * PCONFIG;
//
// These are used to index into the Parameters array in BINDING_CONFIG.
//
#define BINDING_MAX_PKT_SIZE 0
#define BINDING_BIND_SAP 1
#define BINDING_DEFAULT_AUTO_DETECT 2
#define BINDING_SOURCE_ROUTE 3
#define BINDING_ALL_ROUTE_DEF 4
#define BINDING_ALL_ROUTE_BC 5
#define BINDING_ALL_ROUTE_MC 6
#define BINDING_ENABLE_FUNC_ADDR 7
#define BINDING_ENABLE_WAN 8
#define BINDING_PARAMETERS 9
//
// One of these is allocated per adapter we are to bind to.
//
typedef struct _BINDING_CONFIG {
LIST_ENTRY Linkage; // for chaining on BindingList
NDIS_STRING AdapterName; // NDIS adapter to bind to
ULONG FrameTypeCount; // number of frame types defined (max. 4)
// == number of valid entries in arrays:
ULONG FrameType[ISN_FRAME_TYPE_MAX]; // ISN_FRAME_TYPE_XXX
ULONG NetworkNumber[ISN_FRAME_TYPE_MAX]; // may be 0
BOOLEAN AutoDetect[ISN_FRAME_TYPE_MAX]; // remove if net number can't be found
BOOLEAN DefaultAutoDetect[ISN_FRAME_TYPE_MAX]; // use this if multiple or none found
ULONG Parameters[BINDING_PARAMETERS]; // index defined above
PDRIVER_OBJECT DriverObject; // used for logging errors
} BINDING_CONFIG, * PBINDING_CONFIG;
NTSTATUS
IpxGetConfiguration (
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath,
OUT PCONFIG * ConfigPtr
);
VOID
IpxFreeConfiguration (
IN PCONFIG Config
);
VOID
IpxWriteDefaultAutoDetectType(
IN PUNICODE_STRING RegistryPath,
IN struct _ADAPTER * Adapter,
IN ULONG FrameType
);
NTSTATUS
IpxPnPGetVirtualNetworkNumber (
IN PCONFIG Config
);
NTSTATUS
IpxPnPGetAdapterParameters(
IN PCONFIG Config,
IN PNDIS_STRING DeviceName,
IN OUT PBINDING_CONFIG Binding
);
//
// Reconfig info from NCPA --> NDIS --> IPXPnPHandler
// We get a pointer to the RECONFIG Structure in the NET_PNP_EVENT Structure
// This structure is defined below - an array of BOOLEANs.
//
#define RECONFIG_AUTO_DETECT 1
#define RECONFIG_MANUAL 2
#define RECONFIG_PREFERENCE_1 3
#define RECONFIG_NETWORK_NUMBER_1 4
#define RECONFIG_PREFERENCE_2 5
#define RECONFIG_NETWORK_NUMBER_2 6
#define RECONFIG_PREFERENCE_3 7
#define RECONFIG_NETWORK_NUMBER_3 8
#define RECONFIG_PREFERENCE_4 9
#define RECONFIG_NETWORK_NUMBER_4 10
#define RECONFIG_PARAMETERS 10
//
// Main configuration structure.
//
typedef struct _RECONFIG {
ULONG ulVersion;
BOOLEAN VirtualNetworkNumber;
BOOLEAN AdapterParameters[RECONFIG_PARAMETERS];
} RECONFIG, *PRECONFIG;