blob: 8c35091998b1c5b8cb90b33831ec07d8fbd603e8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
|
/*++
Copyright (c) 1993-1995 Microsoft Corporation
Module Name:
nw\inc\ncmcomm.h
Abstract:
This module contains common constants and types for the NCP server.
Author:
Shawn Walker (vswalk) 06-17-1993
Andy Herron (andyhe)
Revision History:
--*/
#ifndef _NCPCOMM_
#define _NCPCOMM_
//
// signature for pserver
//
#define NCP_PSERVER_SIGNATURE L"PS_"
//
// well known object IDs
//
#define NCP_WELL_KNOWN_SUPERVISOR_ID (ULONG) 0x00000001
#define NCP_WELL_KNOWN_SUPERVISOR_ID_SWAPPED (ULONG) 0x01000000
#define NCP_WELL_KNOWN_SUPERVISOR_ID_CHICAGO (ULONG) 0x00010000
#define NCP_WELL_KNOWN_PSERVER_ID (ULONG) 0x00000002
//
// misc macros that are useful
//
#define SWAPWORD(w) ((WORD)((w & 0xFF) << 8)|(WORD)(w >> 8))
#define SWAPLONG(l) MAKELONG(SWAPWORD(HIWORD(l)),SWAPWORD(LOWORD(l)))
#define SWAP_OBJECT_ID(id) (id == NCP_WELL_KNOWN_SUPERVISOR_ID) ? \
NCP_WELL_KNOWN_SUPERVISOR_ID_SWAPPED : \
MAKELONG(LOWORD(id),SWAPWORD(HIWORD(id)))
#define UNSWAP_OBJECT_ID(id) (id == NCP_WELL_KNOWN_SUPERVISOR_ID_SWAPPED || id == NCP_WELL_KNOWN_SUPERVISOR_ID_CHICAGO) ?\
NCP_WELL_KNOWN_SUPERVISOR_ID : \
MAKELONG(LOWORD(id),SWAPWORD(HIWORD(id)))
//
// misc masks/bits for Object ID munging
//
#define BINDLIB_ID_MASK 0xF0000000
#define BINDLIB_NCP_SAM 0x00000000
//
// This bit is set when the server is running on a NTAS machine or
// the object is from a trusted domain.
//
// !! Note that there are places where we check this bit to see if either
// !! BINDLIB_REMOTE_DOMAIN_BIAS or BINDLIB_LOCAL_USER_BIAS is set.
//
#define BINDLIB_REMOTE_DOMAIN_BIAS 0x10000000
//
// If the client is from the builtin domain, this bit will be set. This
// is opposed to the local domain, which is different.
//
#define BINDLIB_BUILTIN_BIAS 0x20000000
//
// If the client is from a trusted domain and the rid is from the
// local domain and the client's rid is the same as the rid from the
// sid, we will mark that the rid is the same as the local user's sid.
//
// !! Note... this is a value, not a flag. This will require special casing
// !! everywhere but we can't spare any more bits.
//
#define BINDLIB_LOCAL_USER_BIAS 0x70000000
//
// User defined objects that is stored in the registry.
//
#define BINDLIB_NCP_USER_DEFINED 0x40000000
//
// Print Queues and Print Servers that is stored in the registry.
// The bindery keeps a list of print queues in a link list so that
// the bindery does not have to go look in the registry all the time.
//
#define BINDLIB_NCP_REGISTRY 0x80000000
//
// The SAP Agent uses these bits. The SAP Agent cannot go any higher
// than the value below.
//
#define BINDLIB_NCP_SAP 0xC0000000
#define BINDLIB_NCP_MAX_SAP 0xCFFFFFFF
//
// We have some reserved fields for unknown users that will go into the
// following range....
//
#define NCP_UNKNOWN_USER 0xD0000000
#define NCP_SAME_RID_AS_CLIENT_BUT_LOCAL 0xDFFFFFFF
#define NCP_USER_IS_CONNECTED_BUT_REMOTE(connid) (0xD0000000 | (connid))
#define NCP_WELL_KNOWN_RID(rid) (0xD1000000 | (rid))
//
// Chicago will use a range of object ids that start at the below value
// and go to 0xFFFFFFFF. We should never see these on our server when
// a chicago server is passing through to us.
//
#define BINDLIB_CHICAGO 0xE0000000
//
// This is used to remove the domain bias from a object id.
//
#define BINDLIB_MASK_OUT_DOMAIN_BIAS 0x70000000
#define NCP_INITIAL_SEARCH (ULONG) 0xFFFFFFFF
#define NCP_ANY_TARGET_SERVER (ULONG) 0xFFFFFFFF
#define NCP_OBJECT_HAS_PROPERTIES (UCHAR) 0xFF
#define NCP_OBJECT_HAS_NO_PROPERTIES (UCHAR) 0
#define NCP_PROPERTY_HAS_VALUE (UCHAR) 0xFF
#define NCP_PROPERTY_HAS_NO_VALUE (UCHAR) 0
#define NCP_MORE_PROPERTY (UCHAR) 0xFF
#define NCP_NO_MORE_PROPERTY (UCHAR) 0
#define NCP_MORE_SEGMENTS (UCHAR) 0xFF
#define NCP_NO_MORE_SEGMENTS (UCHAR) 0
#define NCP_DO_REMOVE_REMAINING_SEGMENTS (UCHAR) 0
#define NCP_DO_NOT_REMOVE_REMAINING_SEGMENTS (UCHAR) 0xFF
/*++
*******************************************************************
Maximum length for the Bindery
*******************************************************************
--*/
#define NETWARE_OBJECTNAMELENGTH 47
#define NETWARE_PROPERTYNAMELENGTH 16
#define NETWARE_PROPERTYVALUELENGTH 128
#define NETWARE_TIME_RESTRICTION_LENGTH 42
#define NETWARE_PASSWORDLENGTH 128
#define NCP_MAX_ENCRYPTED_PASSWORD_LENGTH 16
#define NETWARE_MAX_OBJECT_IDS_IN_SET 32
#define NETWARE_SERVERNAMELENGTH 48
#define NETWARE_VOLUMENAMELENGTH 16
#define NETWARE_MAX_PATH_LENGTH 255
/*++
*******************************************************************
Well known NetWare object types
*******************************************************************
--*/
#define NCP_OT_WILD 0xFFFF
#define NCP_OT_UNKNOWN 0x0000
#define NCP_OT_USER 0x0001
#define NCP_OT_USER_GROUP 0x0002
#define NCP_OT_PRINT_QUEUE 0x0003
#define NCP_OT_FILE_SERVER 0x0004
#define NCP_OT_JOB_SERVER 0x0005
#define NCP_OT_GATEWAY 0x0006
#define NCP_OT_PRINT_SERVER 0x0007
#define NCP_OT_ARCHIVE_QUEUE 0x0008
#define NCP_OT_ARCHIVE_SEVER 0x0009
#define NCP_OT_JOB_QUEUE 0x000A
#define NCP_OT_ADMINISTRATION 0x000B
#define NCP_OT_SNA_GATEWAY 0x0021
#define NCP_OT_REMOTE_BRIDGE 0x0024
#define NCP_OT_REMOTE_BRIDGE_SERVER 0x0026
#define NCP_OT_ADVERTISING_PRINT_SERVER 0x0047
/*++
*******************************************************************
Bindery flags
*******************************************************************
--*/
/** NetWare Bindery Flags **/
#define NCP_STATIC 0x00 /* Property or Object exists until it
is deleted with Delete Property or
Object */
#define NCP_DYNAMIC 0x01 /* Property or Object is deleted from
bindery when file server is started */
#define NCP_ITEM 0x00 /* Values are defined and interpreted by
applications or by APIs */
#define NCP_SET 0x02 /* Series of Object ID numbers, each 4
bytes long */
/** NetWare Bindery Security Flags **/
#define NCP_ANY_READ 0x00 /* Readable by anyone */
#define NCP_LOGGED_READ 0x01 /* Must be logged in to read */
#define NCP_OBJECT_READ 0x02 /* Readable by same object or super */
#define NCP_BINDERY_READ 0x04 /* Readable only by the bindery */
#define NCP_SUPER_READ NCP_LOGGED_READ | NCP_OBJECT_READ
#define NCP_ALL_READ NCP_ANY_READ | NCP_LOGGED_READ | NCP_OBJECT_READ
#define NCP_ANY_WRITE 0x00 /* Writeable by anyone */
#define NCP_LOGGED_WRITE 0x10 /* Must be logged in to write */
#define NCP_OBJECT_WRITE 0x20 /* Writeable by same object or super */
#define NCP_BINDERY_WRITE 0x40 /* Writeable only by the bindery */
#define NCP_SUPER_WRITE NCP_LOGGED_WRITE | NCP_OBJECT_WRITE
#define NCP_ALL_WRITE NCP_ANY_WRITE | NCP_LOGGED_WRITE | NCP_OBJECT_WRITE
// File Attributes
#define NW_ATTRIBUTE_SHARABLE 0x80
#define NW_ATTRIBUTE_ARCHIVE 0x20
#define NW_ATTRIBUTE_DIRECTORY 0x10
#define NW_ATTRIBUTE_EXECUTE_ONLY 0x08
#define NW_ATTRIBUTE_SYSTEM 0x04
#define NW_ATTRIBUTE_HIDDEN 0x02
#define NW_ATTRIBUTE_READ_ONLY 0x01
// Open Flags
#define NW_OPEN_EXCLUSIVE 0x10
#define NW_DENY_WRITE 0x08
#define NW_DENY_READ 0x04
#define NW_OPEN_FOR_WRITE 0x02
#define NW_OPEN_FOR_READ 0x01
//
// Connection status flags
//
#define NCP_STATUS_BAD_CONNECTION 0x01
#define NCP_STATUS_NO_CONNECTIONS 0x02
#define NCP_STATUS_SERVER_DOWN 0x04
#define NCP_STATUS_MSG_PENDING 0x08
//
// Special values for SmallWorld PDC object and property name
//
#define MS_WINNT_NAME "MS_WINNT"
#define MS_SYNC_PDC_NAME "SYNCPDC"
#define MS_WINNT_OBJ_TYPE 0x06BB
//
// User Property values (ie. User Parms stuff)
//
#define USER_PROPERTY_SIGNATURE L'P'
#define NWPASSWORD L"NWPassword"
#define OLDNWPASSWORD L"OldNWPassword"
#define MAXCONNECTIONS L"MaxConnections"
#define NWTIMEPASSWORDSET L"NWPasswordSet"
#define SZTRUE L"TRUE"
#define GRACELOGINALLOWED L"GraceLoginAllowed"
#define GRACELOGINREMAINING L"GraceLoginRemaining"
#define NWLOGONFROM L"NWLogonFrom"
#define NWHOMEDIR L"NWHomeDir"
#define NW_PRINT_SERVER_REF_COUNT L"PSRefCount"
#define SUPERVISOR_USERID NCP_WELL_KNOWN_SUPERVISOR_ID
#define SUPERVISOR_NAME_STRING L"Supervisor"
#define SYSVOL_NAME_STRING L"SYS"
#define NWENCRYPTEDPASSWORDLENGTH 8
#define NO_LIMIT 0xffff
#define DEFAULT_MAXCONNECTIONS NO_LIMIT
#define DEFAULT_NWPASSWORDEXPIRED FALSE
#define DEFAULT_GRACELOGINALLOWED 6
#define DEFAULT_GRACELOGINREMAINING 6
#define DEFAULT_NWLOGONFROM NULL
#define DEFAULT_NWHOMEDIR NULL
#define USER_PROPERTY_TYPE_ITEM 1
#define USER_PROPERTY_TYPE_SET 2
#endif /* _NCPCOMM_ */
|