This file is indexed.

/usr/include/ncp/nwcalls.h is in libncp-dev 2.2.6-8.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
/*
    nwcalls.h
    Copyright (C) 1998-2001  Petr Vandrovec

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


    Revision history:

	0.00  1998			Petr Vandrovec <vandrove@vc.cvut.cz>
		Initial revision.

	1.00  1999, November 20		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added license.

	1.01  2000, June 1		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added NWGetBinderyAccessLevel.

        1.02  2001, January 7		Patrick Pollet <patrick.pollet@insa-lyon.fr>
		Added NWCC_INFO_TREE_NAME, NWCCOpenConnByName and
		NWCC_NAME_FORMAT_*.

	1.03  2001, January 8		Patrick Pollet <patrick.pollet@insa-lyon.fr>
		Added disk retrictions API calls.

	1.04  2001, January 9		Patrick Pollet <patrick.pollet@insa-lyon.fr>
		Added semaphores API calls.

	1.05  2001, January 27		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added NWScanOpenFilesByConn2, ncp_ns_scan_connections_using_file.
		Added NWGetNumberNCPExtensions, NWScanNCPExtensions.
		
	1.06  2001, February 7		Patrick Pollet <patrick.pollet@insa-lyon.fr>
		Added Broadcast API calls & defines

	1.07  2001, February 4		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added ncp_ns_scan_physical_locks_by_file.

	1.08  2001, February 10		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added NWGetVolumeName to header.

	1.09  2001, February 25		Patrick Pollet <patrick.pollet@insa-lyon.fr>
		Added NWIsObjectInSet.

	1.10  2001, March 4		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added OT_TREE_NAME.

	1.11  2001, June 3		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added NWGetDirSpaceLimitList, NWGetDirSpaceLimitList2, 
			ncp_get_directory_info.
		Added NW_LIMIT_LIST, NW_MAX_VOLUME_NAME_LEN, DIR_SPACE_INFO.

	1.12  2001, July 16		Petr Vandrovec <vandrove@vc.cvut.cz>
		Added __NWDisableBroadcasts and __NWEnableBroadcasts.
		
	1.13  2001, September 15	Petr Vandrovec <vandrove@vc.cvut.cz>
		Fixes for SWIG. Unwind nested structs so that names are defined
		in this header and not by SWIG.

	1.14  2001, December 12		Hans Grobler <grobh@sun.ac.za>
		Added TR_ALL define.

	1.15  2001, December 30		Petr Vandrovec <vandrove@vc.cvut.cz>
		Updates for SWIG.

 */

#ifndef __NWCALLS_H__
#define __NWCALLS_H__

#include <ncp/ncplib.h>
#include <ncp/ext/stdint.h>

typedef unsigned int	nuint;
typedef u_int8_t	nuint8;
typedef u_int16_t	nuint16;
typedef u_int32_t	nuint32;

typedef int		nint;
typedef int16_t		nint16;
typedef int32_t		nint32;

typedef uint_least16_t	nuint16a;
typedef uint_least32_t	nuint32a;
typedef int_least16_t	nint16a;
typedef int_least32_t	nint32a;

typedef u_int8_t	nbool8;

typedef nuint32a	nflag32;

typedef struct nw_info_struct NW_ENTRY_INFO;
typedef nuint		NWCONN_NUM;	/* nuint16 ? */
#define nameLength nameLen

union NW_FRAGMENT_fragAddr {
	void*		rw;
	const void*	ro;
};
	
typedef struct {
	union NW_FRAGMENT_fragAddr fragAddr;
#define fragAddress fragAddr.rw
	size_t	fragSize;
		} NW_FRAGMENT;

/* including null byte... */
#define NW_MAX_VOLUME_NAME_LEN	17

#define TR_READ		NCP_PERM_READ
#define TR_WRITE	NCP_PERM_WRITE
#define TR_CREATE	NCP_PERM_CREATE
#define TR_ERASE	NCP_PERM_DELETE
#define TR_ACCESS_CTRL	NCP_PERM_OWNER
#define TR_SEARCH	NCP_PERM_SEARCH
#define TR_MODIFY	NCP_PERM_MODIFY
#define TR_SUPERVISOR	NCP_PERM_SUPER
#define TR_ALL		NCP_PERM_ALL

#define OT_USER		NCP_BINDERY_USER
#define OT_USER_GROUP	NCP_BINDERY_UGROUP
#define OT_FILE_SERVER	NCP_BINDERY_FSERVER
#define OT_TREE_NAME	NCP_BINDERY_TREE

#define IM_NAME		RIM_NAME
#define IM_DIRECTORY	RIM_DIRECTORY
#define IM_ALL		RIM_ALL

#define A_READ_ONLY		0x00000001	/* aRDONLY... but it is htonl-ed... fixme... */
#define A_HIDDEN		0x00000002
#define A_SYSTEM		0x00000004
#define A_EXECUTE_ONLY		0x00000008
#define A_DIRECTORY		0x00000010
#define A_NEEDS_ARCHIVED	0x00000020
#define A_EXECUTE_CONFIRM	0x00000040	/* does not occur in flags */
#define A_SHAREABLE		0x00000080
#define A_SEARCH_MODE		0x00000700
#define A_DONT_SUBALLOCATE	0x00000800
#define A_TRANSACTIONAL		0x00001000
#define A_INDEXED		0x00002000
#define A_READ_AUDIT		0x00004000
#define A_WRITE_AUDIT		0x00008000
#define A_IMMEDIATE_PURGE	0x00010000
#define A_RENAME_INHIBIT	0x00020000
#define A_DELETE_INHIBIT	0x00040000
#define A_COPY_INHIBIT		0x00080000
#define A_FILE_AUDITING		0x00100000
/* reserved			0x00200000 */
#define A_FILE_MIGRATED		0x00400000
#define A_DONT_MIGRATE		0x00800000
#define A_DATA_MIGRATION_SAVE_KEY \
				0x01000000
#define A_IMMEDIATE_COMPRESS	0x02000000
#define A_FILE_COMPRESSED	0x04000000
#define A_DONT_COMPRESS		0x08000000
#define A_CREATE_HARDLINK	0x10000000
#define A_CANT_COMPRESS		0x20000000
#define A_ATTRIBUTES_ARCHIVE	0x40000000
/* reserved			0x80000000 */

#define NWCC_RESERVED		0x00000000

/* note that NWCC_TRAN_TYPE_x must match NT_x */
/* in past NWCC_TRAN_TYPE_IPX was equal to 1, but no API
   returned it, they returned NT_IPX instead */
#define NWCC_TRAN_TYPE_IPX	0x00000000
#define NWCC_TRAN_TYPE_IPX_old	0x00000001
#define NWCC_TRAN_TYPE_UDP	0x00000008
#define NWCC_TRAN_TYPE_TCP	0x00000009
#define NWCC_TRAN_TYPE_WILD	0x00008000

#define NWCC_OPEN_PRIVATE	0x00000004
#define NWCC_OPEN_PUBLIC	0x00000008

#define NWCC_OPEN_NEW_CONN	0x00080000	/* ncpfs specific */

#define NWCC_INFO_AUTHENT_STATE		     1
#define NWCC_INFO_BCAST_STATE		     2
#define NWCC_INFO_TREE_NAME                  4
#define NWCC_INFO_CONN_NUMBER		     5
#define NWCC_INFO_USER_ID		     6
#define NWCC_INFO_SERVER_NAME		     7
#define NWCC_INFO_MAX_PACKET_SIZE	     9
#define NWCC_INFO_SERVER_VERSION	    12
#define NWCC_INFO_TRAN_ADDR		    13
#define NWCC_INFO_USER_NAME		0x4000
#define NWCC_INFO_ROOT_ENTRY		0x4001
#define NWCC_INFO_MOUNT_UID		0x4002
#define NWCC_INFO_SECURITY		0x4003
#define NWCC_INFO_MOUNT_POINT		0x4004

#define NW_MAX_SERVER_NAME_LEN		49

#define NWCC_SECUR_SIGNING_IN_USE	0x0001
#define NWCC_SECUR_LEVEL_CHECKSUM	0x0100
#define NWCC_SECUR_LEVEL_SIGN_HEADERS	0x0200
#define NWCC_SECUR_LEVEL_SIGN_ALL	0x0400
#define NWCC_SECUR_LEVEL_ENCRYPT	0x0800


/* Authentication States */
#define NWCC_AUTHENT_STATE_NONE     0x0000
#define NWCC_AUTHENT_STATE_BIND     0x0001
#define NWCC_AUTHENT_STATE_NDS      0x0002

/* Broadcast States */
#define NWCC_BCAST_PERMIT_ALL       0x0000
#define NWCC_BCAST_PERMIT_SYSTEM    0x0001
#define NWCC_BCAST_PERMIT_NONE      0x0002
#define NWCC_BCAST_PERMIT_POLL      0x0003

/* Name Format types */
#define NWCC_NAME_FORMAT_NDS        0x0001  
#define NWCC_NAME_FORMAT_BIND       0x0002
#define NWCC_NAME_FORMAT_NDS_TREE   0x0008
#define NWCC_NAME_FORMAT_WILD       0x8000
typedef struct {
	unsigned int major;
	unsigned int minor;
	unsigned int revision;
} NWCCVersion;

typedef struct {
	nuint32	type;
#ifdef SWIG
%pragma(swig) readonly
	size_t	len;
%pragma(swig) readwrite
	NWCCTranAddr_buffer buffer[32];
#else
	size_t	len;
	void*	buffer;
#endif
#if defined(SWIG_BUILD)
	nuint8	bufferdata[32];
#endif
} NWCCTranAddr;

struct NWCCRootEntry {
	NWVOL_NUM	volume;
	NWDIR_ENTRY	dirEnt;
};

#ifdef __cplusplus
extern "C" {
#endif

/* misc */
NWCCODE NWCallsInit(void* __NULL1, void* __NULL2);
NWCCODE NWRequest(NWCONN_HANDLE __conn, nuint, nuint, const NW_FRAGMENT*, nuint, NW_FRAGMENT*);
NWCCODE NWRequestSimple(NWCONN_HANDLE __conn, nuint, const void*, size_t, NW_FRAGMENT*);

/* bindery */
NWCCODE NWGetObjectName(NWCONN_HANDLE __conn, NWObjectID __objectid, 
		char* __objectname, NWObjectType* __objecttype);
NWCCODE NWGetObjectID(NWCONN_HANDLE __conn, const char* __objectname, 
		NWObjectType __objecttype, NWObjectID* __objectid);
NWCCODE NWGetBinderyAccessLevel(NWCONN_HANDLE __conn, nuint8* __rights,
		NWObjectID* __objectid);
NWCCODE NWLogoutFromFileServer(NWCONN_HANDLE __conn);	/* ncplib.c */
NWCCODE NWVerifyObjectPassword(NWCONN_HANDLE __conn, const char* __objectname, 
		NWObjectType __objecttype, const char* __objectpassword); /* ncplib.c */

/* filesystem */
NWCCODE NWGetNSEntryInfo(NWCONN_HANDLE __conn, nuint __dirhandle,
		const char* __path, nuint __srcns, nuint __dstns, 
		nuint16 __attr, nuint32 __rim, NW_ENTRY_INFO* target);
NWCCODE NWParsePath(const char* __path, char* __server, 
		NWCONN_HANDLE* __pconn, char* __volume, char* __volpath);

NWCCODE ncp_get_volume_name(NWCONN_HANDLE __conn, NWVOL_NUM __vol, char* __name, size_t __maxlen);	/* filemgmt.c */
NWCCODE NWGetVolumeNumber(NWCONN_HANDLE __conn, const char* __name, NWVOL_NUM* __vol);
NWCCODE NWGetVolumeName(NWCONN_HANDLE __conn, NWVOL_NUM __vol, char* __volume);

NWCCODE NWGetNSLoadedList(NWCONN_HANDLE __conn,
			  NWVOL_NUM __vol,
			  size_t __maxlen,
			  nuint8* __nslist, 
			  size_t* __nslen);	/* filemgmt.c */

typedef struct {
	u_int16_t	nextRequest;
	u_int16_t	openCount;
#ifdef SWIG
	fixedArray	buffer[512];
#else
	u_int8_t	buffer[512];
#endif
	u_int16_t	curRecord;
} OPEN_FILE_CONN_CTRL;

typedef struct {
	u_int16_t	taskNumber;
	u_int8_t	lockType;
	u_int8_t	accessControl;
	u_int8_t	lockFlag;
	NWVOL_NUM	volNumber;
	NWDIR_ENTRY	parent;
	NWDIR_ENTRY	dirEntry;
	u_int8_t	forkCount;
	u_int8_t	nameSpace;
#ifdef SWIG
%pragma(swig) readonly
	size_t		nameLen;
%pragma(swig) readwrite
	size_tLenPrefixCharArray	fileName[255];
#else
	size_t		nameLen;
	char		fileName[255];
#endif
} OPEN_FILE_CONN;

NWCCODE
NWScanOpenFilesByConn2(NWCONN_HANDLE	conn,
		       NWCONN_NUM	connNum,
		       u_int16_t	*iterHandle,
		       OPEN_FILE_CONN_CTRL *openCtrl,
		       OPEN_FILE_CONN	*openFile);	

typedef struct
#ifndef SWIG
__CONN_USING_FILE
#endif
{
	NWCONN_NUM	connNumber;
	u_int16_t	taskNumber;
	u_int8_t	lockType;
	u_int8_t	accessControl;
	u_int8_t	lockFlag;
} CONN_USING_FILE;

typedef struct {
	u_int16_t	nextRequest;
	u_int16_t	useCount;
	u_int16_t	openCount;
	u_int16_t	openForReadCount;
	u_int16_t	openForWriteCount;
	u_int16_t	denyReadCount;
	u_int16_t	denyWriteCount;
	u_int8_t	locked;
	u_int8_t	forkCount;
	u_int16_t	connCount;
	CONN_USING_FILE	connInfo[70];
} CONNS_USING_FILE;

NWCCODE
ncp_ns_scan_connections_using_file(
			NWCONN_HANDLE	conn,
			NWVOL_NUM	vol,
			NWDIR_ENTRY	dirent,
			int		datastream,
			u_int16_t	*iterHandle,
			CONN_USING_FILE	*cf,
			CONNS_USING_FILE *cfa);

typedef struct 
#ifndef SWIG
__PHYSICAL_LOCK 
#endif
{
	u_int16_t	loggedCount;
	u_int16_t	shareableLockCount;
	ncp_off64_t	recordStart;
	ncp_off64_t	recordEnd;
	NWCONN_NUM	connNumber;
	u_int16_t	taskNumber;
	u_int8_t	lockType;
} PHYSICAL_LOCK;

typedef struct {
	u_int16_t	nextRequest;
	u_int16_t	numRecords;
	PHYSICAL_LOCK	locks[32];
	u_int16_t	curRecord;
#ifdef SWIG
	fixedArray	reserved[8];
#else
	u_int8_t	reserved[8];
#endif
} PHYSICAL_LOCKS;

NWCCODE
ncp_ns_scan_physical_locks_by_file(
			NWCONN_HANDLE	conn,
			NWVOL_NUM	vol,
			NWDIR_ENTRY	dirent,
			int		datastream,
			u_int16_t	*iterHandle,
			PHYSICAL_LOCK	*lock,
			PHYSICAL_LOCKS	*locks);

typedef struct {
	u_int16_t	openCount;
	u_int16_t	semaphoreValue;
	u_int16_t	taskNumber;
#ifdef SWIG
	fixedCharArray	semaphoreName[128];
#else
	char		semaphoreName[128];
#endif
} CONN_SEMAPHORE;

typedef struct {
	u_int16_t	nextRequest;
	u_int16_t	numRecords;
#ifdef SWIG
	fixedArray	records[508];
#else
	u_int8_t	records[508];
#endif
	u_int16_t	curOffset;
	u_int16_t	curRecord;
} CONN_SEMAPHORES;

NWCCODE
NWScanSemaphoresByConn(
			NWCONN_HANDLE	conn,
			NWCONN_NUM	connNum,
			u_int16_t	*iterHandle,
			CONN_SEMAPHORE	*semaphore,
			CONN_SEMAPHORES	*semaphores);
				
/* management services */
NWCCODE NWOpenBindery(NWCONN_HANDLE __conn);
NWCCODE NWCloseBindery(NWCONN_HANDLE __conn);
NWCCODE NWDownFileServer(NWCONN_HANDLE __conn, nuint __force);
NWCCODE NWEnableFileServerLogin(NWCONN_HANDLE __conn);
NWCCODE NWDisableFileServerLogin(NWCONN_HANDLE __conn);
NWCCODE NWDisableTTS(NWCONN_HANDLE __conn);
NWCCODE NWEnableTTS(NWCONN_HANDLE __conn);

/* RPC services */
NWCCODE NWSMLoadNLM(NWCONN_HANDLE __conn, const char* __nlm);
NWCCODE NWSMUnloadNLM(NWCONN_HANDLE __conn, const char* __nlm);
NWCCODE NWSMMountVolume(NWCONN_HANDLE __conn, const char* __volume,
		nuint32* __volnumber);
NWCCODE NWSMDismountVolumeByName(NWCONN_HANDLE __conn, const char* __volume);
NWCCODE NWSMDismountVolumeByNumber(NWCONN_HANDLE __conn, nuint32 __volnumber);
NWCCODE NWSMExecuteNCFFile(NWCONN_HANDLE __conn, const char* __ncf);
NWCCODE NWSMSetDynamicCmdStrValue(NWCONN_HANDLE __conn, const char* __param, 
		const char* __value);
NWCCODE NWSMSetDynamicCmdIntValue(NWCONN_HANDLE __conn, const char* __param,
		nuint32 __value);

/* connection services */
NWCCODE NWClearConnectionNumber(NWCONN_HANDLE __conn, NWCONN_NUM __connnum);

NWCCODE NWGetObjectConnectionNumbers(NWCONN_HANDLE __conn, 
		const char* __objectname, NWObjectType __objecttype,
		size_t* noOfReturnedConns, NWCONN_NUM* conns, size_t maxConns);
NWCCODE NWGetConnListFromObject(NWCONN_HANDLE __conn, NWObjectID objID, 
		NWCONN_NUM firstConn,
		size_t* noOfReturnedConns, NWCONN_NUM* conns125); /* returned max. 125 */
		
/* message services */
NWCCODE NWSendBroadcastMessage(NWCONN_HANDLE __conn, const char* message,
		size_t conns, NWCONN_NUM* connArray, nuint8* deliveryStatus);

/* local connection services */
NWCCODE NWGetConnectionNumber(NWCONN_HANDLE __conn, NWCONN_NUM* __connnum);
NWCCODE NWGetFileServerName(NWCONN_HANDLE __conn, char* __server);
NWCCODE NWGetFileServerVersion(NWCONN_HANDLE __conn, u_int16_t* version);

NWCCODE NWCCGetConnInfo(NWCONN_HANDLE __conn, nuint info,
		size_t conninfolen, void* conninfoaddr);
NWCCODE NWCCOpenConnBySockAddr(const struct sockaddr* addr,
		enum NET_ADDRESS_TYPE type, nuint openState,
		nuint reserved, NWCONN_HANDLE* __pconn);
NWCCODE NWCCOpenConnByAddr(const NWCCTranAddr* addr, nuint openState,
		nuint reserved, NWCONN_HANDLE* __pconn);
NWCCODE NWCCCloseConn(NWCONN_HANDLE __conn);

/* ncp extensions */
#define MAX_NCP_EXTENSION_NAME_BYTES	33

NWCCODE NWGetNumberNCPExtensions(NWCONN_HANDLE __conn, nuint* __exts);
NWCCODE NWScanNCPExtensions(NWCONN_HANDLE __conn, nuint32* __iter, 
		char* __extname, nuint8* __majorVersion, 
		nuint8* __minorVersion, nuint8* __revision,
		nuint8 __queryData[32]);
NWCCODE NWFragNCPExtensionRequest(NWCONN_HANDLE conn, nuint32 NCPExtensionID, 
		nuint reqFragCount, NW_FRAGMENT* reqFragList, 
		nuint replyFragCount, NW_FRAGMENT* replyFragList);
NWCCODE NWNCPExtensionRequest(NWCONN_HANDLE conn, nuint32 NCPExtensionID,
                const void* requestData, size_t requestDataLen,
		void* replyData, size_t* replyDataLen);

NWCCODE NWEnableBroadcasts(NWCONN_HANDLE __conn);
NWCCODE NWDisableBroadcasts(NWCONN_HANDLE __conn);
#ifdef NCPFS_VERSION
NWCCODE __NWEnableBroadcasts(NWCONN_HANDLE __conn);
NWCCODE __NWDisableBroadcasts(NWCONN_HANDLE __conn);
#endif
NWCCODE NWGetBroadcastMode(NWCONN_HANDLE __conn, nuint16* __bcstmode) ;
NWCCODE NWSetBroadcastMode(NWCONN_HANDLE __conn, nuint16 __bcstmode);

NWCCODE NWCCOpenConnByName(NWCONN_HANDLE startConn, const char *serverName,
                nuint nameFormat,nuint openState,
		nuint reserved, NWCONN_HANDLE* __pconn);

typedef struct
#ifndef SWIG
__NWOBJ_REST
#endif
{
	NWObjectID objectID;
	nuint32 restriction;
} NWOBJ_REST;

typedef struct {
	nuint8  numberOfEntries;
	NWOBJ_REST resInfo[12];
} NWVolumeRestrictions;


typedef struct {
	nuint8  numberOfEntries;
	NWOBJ_REST resInfo[16];
} NWVOL_RESTRICTIONS;

NWCCODE NWGetObjDiskRestrictions(
	NWCONN_HANDLE   conn,
	NWVOL_NUM       volNumber,
	NWObjectID      objectID,
	nuint32*        restriction,
	nuint32*        inUse
);

NWCCODE NWScanVolDiskRestrictions(
	NWCONN_HANDLE   conn,
	NWVOL_NUM       volNum,
	nuint32*        iterhandle,
	NWVolumeRestrictions * volInfo
);

NWCCODE NWScanVolDiskRestrictions2( 
	NWCONN_HANDLE   conn,
	NWVOL_NUM       volNum,
	nuint32*        iterhandle,
	NWVOL_RESTRICTIONS* volInfo
);

NWCCODE NWRemoveObjectDiskRestrictions(
	NWCONN_HANDLE   conn,
	NWVOL_NUM       volNum,
	NWObjectID      objID
);

NWCCODE NWSetObjectVolSpaceLimit(
	NWCONN_HANDLE   conn,
	NWVOL_NUM       volNum,
	NWObjectID      objID,
	nuint32         restriction
);

NWCCODE NWGetDirSpaceLimitList(NWCONN_HANDLE conn, NWDIR_HANDLE dirhandle,
		nuint8* __buffer512);

typedef struct
#ifndef SWIG
__tag_NW_LIMIT_LIST_list
#endif
{
	nuint32		level;
	nuint32		max;
	nuint32		current;
} __NW_LIMIT_LIST_list;

typedef struct {
	size_t numEntries;
	__NW_LIMIT_LIST_list list[102];
} NW_LIMIT_LIST;
		
NWCCODE NWGetDirSpaceLimitList2(NWCONN_HANDLE conn, NWDIR_HANDLE dirhandle,
		NW_LIMIT_LIST* limitlist);

typedef struct {
	nuint32	totalBlocks;
	nuint32	availableBlocks;
	nuint32	purgeableBlocks;
	nuint32	notYetPurgeableBlocks;
	nuint32	totalDirEntries;
	nuint32	availableDirEntries;
	nuint32	reserved;
	nuint8	sectorsPerBlock;
#ifdef SWIG
%pragma(swig) readonly
	nuint8	volLen;
%pragma(swig) readwrite
	byteLenPrefixCharArray	volName[NW_MAX_VOLUME_NAME_LEN];
#else
	nuint8	volLen;
	char	volName[NW_MAX_VOLUME_NAME_LEN];
#endif
} DIR_SPACE_INFO;

NWCCODE ncp_get_directory_info(NWCONN_HANDLE conn, NWDIR_HANDLE dirhandle,
		                DIR_SPACE_INFO* target);


typedef struct {
	NWCONN_NUM connNumber;
	nuint16 taskNumber;
} SEMAPHORE;

typedef struct {
	nuint16 nextRequest;
	nuint16 openCount;
	nuint16 semaphoreValue;
	nuint16 semaphoreCount;
	SEMAPHORE semaphores[170];
	nuint16 curRecord;
} SEMAPHORES;

/********************* not yet
NWCCODE NWScanSemaphoresByName(
   NWCONN_HANDLE conn,
   const char*   semName,
   nint16*      iterHandle,
   SEMAPHORE  * semaphore,
   SEMAPHORES  * semaphores
);
******************************/

NWCCODE NWSignalSemaphore(NWCONN_HANDLE conn, nuint32 semHandle);
NWCCODE NWCloseSemaphore(NWCONN_HANDLE conn, nuint32 semHandle);
NWCCODE NWOpenSemaphore(NWCONN_HANDLE conn, const char* semName, 
		nint16 maxCount, nuint32* semHandle, nuint16* semOpenCount);
NWCCODE NWExamineSemaphore(NWCONN_HANDLE conn, nuint32 semHandle, 
		nint16* semValue, nuint16* semOpenCount);
NWCCODE NWWaitOnSemaphore(NWCONN_HANDLE conn, nuint32 semHandle, 
		nuint16 timeOutValue);
NWCCODE NWCancelWait(NWCONN_HANDLE conn);

NWCCODE NWCCGetConnAddress(NWCONN_HANDLE conn, nuint32 bufLen, 
		NWCCTranAddr* tranAddr);
NWCCODE NWCCGetConnAddressLength(NWCONN_HANDLE conn, nuint32* bufLen);

NWCCODE NWIsObjectInSet(NWCONN_HANDLE conn, const char* objectName, 
		NWObjectType objectType, const char* propertyName,
		const char* memberName, NWObjectType memberType);

#ifdef __cplusplus
}
#endif

#endif	/* __NWCALLS_H__ */