Files
ncpfs/include/ncp/ncp.h
2026-04-28 20:56:03 +02:00

236 lines
7.2 KiB
C

/*
ncp.h
Copyright (C) 1995 by Volker Lendecke
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 1995 Volker Lendecke
Initial revision.
0.01 1996 J.F. Chadima
Modified for sparc.
1.00 2001, March 4 Petr Vandrovec <vandrove@vc.cvut.cz>
Added NCP_BINDERY_TREE.
*/
#ifndef _NCP_H
#define _NCP_H
#include <ncp/kernel/types.h>
#include <ncp/kernel/ipx.h>
#include <ncp/kernel/ncp.h>
#include <ncp/kernel/ncp_fs.h>
typedef u_int16_t NWObjectType;
typedef u_int32_t NWObjectID;
#define NCP_BINDERY_WILD (0xffff)
#define NCP_BINDERY_UNKNOWN (0x0000)
#define NCP_BINDERY_USER (0x0001)
#define NCP_BINDERY_UGROUP (0x0002) /* User Group */
#define NCP_BINDERY_PQUEUE (0x0003) /* Print Queue */
#define NCP_BINDERY_FSERVER (0x0004) /* File Server */
#define NCP_BINDERY_JSERVER (0x0005) /* Job Server */
#define NCP_BINDERY_GATEWAY (0x0006)
#define NCP_BINDERY_PSERVER (0x0007) /* Print Server */
#define NCP_BINDERY_ARCHQ (0x0008) /* Archive Queue */
#define NCP_BINDERY_ARCHSERVER (0x0009) /* Archive Server */
#define NCP_BINDERY_JQUEUE (0x000a) /* Job Queue */
#define NCP_BINDERY_ADMIN (0x000b)
#define NCP_BINDERY_BSERVER (0x0026) /* Bridge Server */
#define NCP_BINDERY_ADVPSERVER (0x0047) /* Advertising Print Server */
#define NCP_BINDERY_TREE (0x0278) /* NDS Tree */
#define NCP_BINDERY_NTSERVER (0x0640) /* NT Server */
#define NCP_BINDERY_ID_WILDCARD (0xffffffff)
#define NCP_BINDERY_NAME_LEN (48)
#ifndef IPX_NODE_LEN
#define IPX_NODE_LEN (6)
#endif
struct ncp_bindery_object {
NWObjectID object_id;
NWObjectType object_type;
#ifdef SWIG
fixedCharArray object_name[NCP_BINDERY_NAME_LEN];
#else
char object_name[NCP_BINDERY_NAME_LEN];
#endif
u_int8_t object_flags;
u_int8_t object_security;
u_int8_t object_has_prop;
};
struct nw_property {
#ifdef SWIG
fixedArray value[128];
#else
u_int8_t value[128];
#endif
u_int8_t more_flag;
u_int8_t property_flag;
};
struct prop_net_address {
u_int32_t network __attribute__((packed));
#ifdef SWIG
fixedArray node[IPX_NODE_LEN];
#else
u_int8_t node[IPX_NODE_LEN] __attribute__((packed));
#endif
u_int16_t port __attribute__((packed));
};
struct ncp_filesearch_info {
u_int8_t volume_number;
u_int16_t directory_id;
u_int16_t sequence_no;
u_int8_t access_rights;
};
#define NCP_MAX_FILENAME (14)
struct ncp_file_info {
#ifdef SWIG
fixedArray file_id[NCP_FILE_ID_LEN];
fixedCharArray file_name[NCP_MAX_FILENAME + 1];
#else
u_int8_t file_id[NCP_FILE_ID_LEN];
char file_name[NCP_MAX_FILENAME + 1];
#endif
u_int8_t file_attributes;
u_int8_t file_mode;
u_int32_t file_length;
u_int16_t creation_date;
u_int16_t access_date;
u_int16_t update_date;
u_int16_t update_time;
};
#ifdef SWIG
struct nw_queue_job_entry {
u_int16_t InUse __attribute__((packed));
u_int32_t prev __attribute__((packed));
u_int32_t next __attribute__((packed));
u_int32_t ClientStation __attribute__((packed));
u_int32_t ClientTask __attribute__((packed));
u_int32_t ClientObjectID __attribute__((packed));
u_int32_t TargetServerID __attribute__((packed));
fixedArray TargetExecTime[6] __attribute__((packed));
fixedArray JobEntryTime[6] __attribute__((packed));
u_int32_t JobNumber __attribute__((packed));
u_int16_t JobType __attribute__((packed));
u_int16_t JobPosition __attribute__((packed));
u_int16_t JobControlFlags __attribute__((packed));
u_int8_t FileNameLen __attribute__((packed));
byteLenPrefixCharArray JobFileName[13] __attribute__((packed));
u_int32_t JobFileHandle __attribute__((packed));
u_int32_t ServerStation __attribute__((packed));
u_int32_t ServerTaskNumber __attribute__((packed));
u_int32_t ServerObjectID __attribute__((packed));
fixedCharArray JobTextDescription[50] __attribute__((packed));
fixedArray ClientRecordArea[152] __attribute__((packed));
};
struct queue_job {
struct nw_queue_job_entry j;
fixedArray file_handle[6];
};
#else
struct nw_queue_job_entry {
u_int16_t InUse __attribute__((packed));
u_int32_t prev __attribute__((packed));
u_int32_t next __attribute__((packed));
u_int32_t ClientStation __attribute__((packed));
u_int32_t ClientTask __attribute__((packed));
u_int32_t ClientObjectID __attribute__((packed));
u_int32_t TargetServerID __attribute__((packed));
u_int8_t TargetExecTime[6] __attribute__((packed));
u_int8_t JobEntryTime[6] __attribute__((packed));
u_int32_t JobNumber __attribute__((packed));
u_int16_t JobType __attribute__((packed));
u_int16_t JobPosition __attribute__((packed));
u_int16_t JobControlFlags __attribute__((packed));
u_int8_t FileNameLen __attribute__((packed));
char JobFileName[13] __attribute__((packed));
u_int32_t JobFileHandle __attribute__((packed));
u_int32_t ServerStation __attribute__((packed));
u_int32_t ServerTaskNumber __attribute__((packed));
u_int32_t ServerObjectID __attribute__((packed));
char JobTextDescription[50] __attribute__((packed));
char ClientRecordArea[152] __attribute__((packed));
};
struct queue_job {
struct nw_queue_job_entry j;
u_int8_t file_handle[6];
};
#endif
#define QJE_OPER_HOLD 0x80
#define QJE_USER_HOLD 0x40
#define QJE_ENTRYOPEN 0x20
#define QJE_SERV_RESTART 0x10
#define QJE_SERV_AUTO 0x08
/* ClientRecordArea for print jobs */
#define KEEP_ON 0x0400
#define NO_FORM_FEED 0x0800
#define NOTIFICATION 0x1000
#define DELETE_FILE 0x2000
#define EXPAND_TABS 0x4000
#define PRINT_BANNER 0x8000
#ifdef SWIG
struct print_job_record {
u_int8_t Version __attribute__((packed));
u_int8_t TabSize __attribute__((packed));
u_int16_t Copies __attribute__((packed));
u_int16_t CtrlFlags __attribute__((packed));
u_int16_t Lines __attribute__((packed));
u_int16_t Rows __attribute__((packed));
fixedCharArray FormName[16] __attribute__((packed));
fixedArray Reserved[6] __attribute__((packed));
fixedCharArray BannerName[13] __attribute__((packed));
fixedCharArray FnameBanner[13] __attribute__((packed));
fixedCharArray FnameHeader[14] __attribute__((packed));
fixedCharArray Path[80] __attribute__((packed));
};
#else
struct print_job_record {
u_int8_t Version __attribute__((packed));
u_int8_t TabSize __attribute__((packed));
u_int16_t Copies __attribute__((packed));
u_int16_t CtrlFlags __attribute__((packed));
u_int16_t Lines __attribute__((packed));
u_int16_t Rows __attribute__((packed));
char FormName[16] __attribute__((packed));
u_int8_t Reserved[6] __attribute__((packed));
char BannerName[13] __attribute__((packed));
char FnameBanner[13] __attribute__((packed));
char FnameHeader[14] __attribute__((packed));
char Path[80] __attribute__((packed));
};
#endif
#endif /* _NCP_H */