130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *  ncp.h
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *  Copyright (C) 1995 by Volker Lendecke
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *  Modified for sparc by J.F. Chadima
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *  Modified for __constant_ntoh by Frank A. Vorstenbosch
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _LINUX_NCP_H
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _LINUX_NCP_H
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h>
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_PTYPE                (0x11)
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_PORT                 (0x0451)
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_ALLOC_SLOT_REQUEST   (0x1111)
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_REQUEST              (0x2222)
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_DEALLOC_SLOT_REQUEST (0x5555)
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_request_header {
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 type;
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 sequence;
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 conn_low;
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 task;
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 conn_high;
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 function;
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 data[0];
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed));
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_REPLY                (0x3333)
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_WATCHDOG		 (0x3E3E)
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_POSITIVE_ACK         (0x9999)
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_reply_header {
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 type;
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 sequence;
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 conn_low;
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 task;
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 conn_high;
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 completion_code;
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 connection_state;
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 data[0];
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed));
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_VOLNAME_LEN (16)
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_NUMBER_OF_VOLUMES (256)
4930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct ncp_volume_info {
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 total_blocks;
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 free_blocks;
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 purgeable_blocks;
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 not_yet_purgeable_blocks;
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 total_dir_entries;
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 available_dir_entries;
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 sectors_per_block;
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	char volume_name[NCP_VOLNAME_LEN + 1];
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_READ      (cpu_to_le16(1))
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_WRITE     (cpu_to_le16(2))
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_EXCLUSIVE (cpu_to_le16(0x20))
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NCP_FILE_ID_LEN 6
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Defines for Name Spaces */
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NW_NS_DOS     0
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NW_NS_MAC     1
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NW_NS_NFS     2
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NW_NS_FTAM    3
7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NW_NS_OS2     4
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/*  Defines for ReturnInformationMask */
7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_NAME	      (cpu_to_le32(1))
7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_SPACE_ALLOCATED   (cpu_to_le32(2))
7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_ATTRIBUTES	      (cpu_to_le32(4))
7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_DATA_SIZE	      (cpu_to_le32(8))
7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_TOTAL_SIZE	      (cpu_to_le32(0x10))
7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_EXT_ATTR_INFO     (cpu_to_le32(0x20))
8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_ARCHIVE	      (cpu_to_le32(0x40))
8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_MODIFY	      (cpu_to_le32(0x80))
8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_CREATION	      (cpu_to_le32(0x100))
8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_OWNING_NAMESPACE  (cpu_to_le32(0x200))
8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_DIRECTORY	      (cpu_to_le32(0x400))
8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_RIGHTS	      (cpu_to_le32(0x800))
8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_ALL 	      (cpu_to_le32(0xFFF))
8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define RIM_COMPRESSED_INFO   (cpu_to_le32(0x80000000))
8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Defines for NSInfoBitMask */
9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_NAME		0x0001
9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_MODE		0x0002
9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_GID		0x0004
9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_NLINKS	0x0008
9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_RDEV		0x0010
9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_LINK		0x0020
9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_CREATED	0x0040
9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_UID		0x0080
9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_ACSFLAG	0x0100
9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NSIBM_NFS_MYFLAG	0x0200
10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* open/create modes */
10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_MODE_OPEN	  0x01
10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_MODE_TRUNCATE  0x02
10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_MODE_REPLACE   0x02
10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_MODE_CREATE	  0x08
10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* open/create results */
10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_ACTION_NONE	   0x00
10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_ACTION_OPEN	   0x01
11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_ACTION_CREATE   0x02
11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_ACTION_TRUNCATE 0x04
11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OC_ACTION_REPLACE  0x04
11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* access rights attributes */
11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef AR_READ_ONLY
11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_READ_ONLY	   0x0001
11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_WRITE_ONLY	   0x0002
11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_DENY_READ	   0x0004
11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_DENY_WRITE	   0x0008
12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_COMPATIBILITY   0x0010
12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_WRITE_THROUGH   0x0040
12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define AR_OPEN_COMPRESSED 0x0100
12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
12530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nw_nfs_info {
12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 mode;
12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 rdev;
12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
13030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nw_info_struct {
13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 spaceAlloc;
13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le32 attributes;
13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 flags;
13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le32 dataStreamSize;
13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le32 totalStreamSize;
13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 numberOfStreams;
13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 creationTime;
13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 creationDate;
13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 creatorID;
14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 modifyTime;
14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 modifyDate;
14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 modifierID;
14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 lastAccessDate;
14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 archiveTime;
14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 archiveDate;
14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 archiverID;
14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 inheritedRightsMask;
14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le32 dirEntNum;
14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le32 DosDirNum;
15030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 volNumber;
15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 EADataSize;
15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 EAKeyCount;
15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 EAKeySize;
15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 NSCreator;
15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 nameLen;
15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 entryName[256];
15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	/* libncp may depend on there being nothing after entryName */
15830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifdef __KERNEL__
15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	struct nw_nfs_info nfs;
16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif
16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed));
16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* modify mask - use with MODIFY_DOS_INFO structure */
16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_ATTRIBUTES		  (cpu_to_le32(0x02))
16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_CREATE_DATE		  (cpu_to_le32(0x04))
16630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_CREATE_TIME		  (cpu_to_le32(0x08))
16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_CREATOR_ID		  (cpu_to_le32(0x10))
16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_ARCHIVE_DATE 	  (cpu_to_le32(0x20))
16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_ARCHIVE_TIME 	  (cpu_to_le32(0x40))
17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_ARCHIVER_ID		  (cpu_to_le32(0x80))
17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_MODIFY_DATE		  (cpu_to_le32(0x0100))
17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_MODIFY_TIME		  (cpu_to_le32(0x0200))
17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_MODIFIER_ID		  (cpu_to_le32(0x0400))
17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_LAST_ACCESS_DATE	  (cpu_to_le32(0x0800))
17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_INHERITED_RIGHTS_MASK  (cpu_to_le32(0x1000))
17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DM_MAXIMUM_SPACE	  (cpu_to_le32(0x2000))
17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
17830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nw_modify_dos_info {
17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le32 attributes;
18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 creationDate;
18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 creationTime;
18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 creatorID;
18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 modifyDate;
18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 modifyTime;
18530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 modifierID;
18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 archiveDate;
18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 archiveTime;
18830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 archiverID;
18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__le16 lastAccessDate;
19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 inheritanceGrantMask;
19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16 inheritanceRevokeMask;
19230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 maximumSpace;
19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed));
19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
19530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nw_search_sequence {
19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8 volNumber;
19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 dirBase;
19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u32 sequence;
19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__((packed));
20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
20130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif				/* _LINUX_NCP_H */
202