2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #ifndef OPENAFS_BUTC_XBSA_H
11 #define OPENAFS_BUTC_XBSA_H
13 /* The following serverTypes are currently supported by this interface */
14 #define XBSA_SERVER_TYPE_NONE 0x00 /* no server, use tape drive */
15 #define XBSA_SERVER_TYPE_UNKNOWN 0x01 /* server, don't know which type yet */
16 #define XBSA_SERVER_TYPE_ADSM 0x02 /* server type is ADSM */
17 #define XBSA_SERVER_TYPE_MASK 0xFF /* for (butx_transactionInfo *)->serverType (byte 1) */
20 #define CONF_XBSA (xbsaType != XBSA_SERVER_TYPE_NONE) /*test if butc is XBSA */
26 #define XBSA_SET_SERVER_TYPE(server, type) ((server) = ((type) & XBSA_SERVER_TYPE_MASK))
27 #define XBSA_GET_SERVER_TYPE(server) ((server) & XBSA_SERVER_TYPE_MASK)
29 /* The following serverType flags are currently supported by this interface */
30 #define XBSA_SERVER_FLAG_NONE 0x0000 /* don't allow multiple server connections */
31 #define XBSA_SERVER_FLAG_MULTIPLE 0x0100 /* allow multiple server connections */
32 #define XBSA_SERVER_FLAG_MASK 0xFF00 /* for (butx_transactionInfo *)->serverType (byte 2) */
33 #define XBSA_SET_SERVER_FLAG(server, flag) ((server) |= ((flag) & XBSA_SERVER_FLAG_MASK))
34 #define XBSA_GET_SERVER_FLAG(server) ((server) & XBSA_SERVER_FLAG_MASK)
35 #define XBSA_IS_SERVER_FLAG_SET(server, flag) (XBSA_GET_SERVER_FLAG(server) & flag)
37 #define XBSAMINBUFFER 1024 /* minimum size is 1KB */
38 #define XBSADFLTBUFFER 16384 /* default size is 16KB */
39 #define XBSAMAXBUFFER 65535 /* maximum size in 64KB-1; has to fit in 16bit integer */
47 #define XBSA_NUM_ENV_STRS ADSM_ENV_STRS
48 #define XBSA_MAX_OSNAME BSA_MAX_OSNAME
49 #define XBSA_MAX_PATHNAME BSA_MAX_PATHNAME
51 #define XBSA_SUCCESS 0
53 /* The following defines the ADSM version level prior to the addition
54 * of support for multiple servers.
56 #define XBSA_ADSM_NO_MULT_SERVER_VERSION 3
57 #define XBSA_ADSM_NO_MULT_SERVER_RELEASE 7
58 #define XBSA_ADSM_NO_MULT_SERVER_LEVEL 1
60 /* The following defines the XBSA Technical Standard Level */
61 #define XBSA_TS_VERSION 1
62 #define XBSA_TS_RELEASE 1
65 * The butx_transactionInfo structure defines the connection to an
66 * XBSA server. The fields in this structure should only be modified
67 * by the routines in file_xbsa.c.
69 * The values in here are specific to the transaction.
70 * Values specific to the objects should be passed separately.
71 * The spec says bsaHandle should be a long but ADSM has it as a ulong!
73 struct butx_transactionInfo
{
74 ApiVersion apiVersion
;
80 afs_int32 serverType
; /* Type and flags */
81 afs_int32 maxObjects
; /* max objects/transaction */
82 afs_int32 numObjects
; /* objects in current trans */
83 char serverName
[BSA_MAX_DESC
];
84 SecurityToken secToken
;
86 ObjectDescriptor curObject
;
89 extern afs_int32
xbsa_MountLibrary(struct butx_transactionInfo
*info
,
90 afs_int32 serverType
);
92 extern afs_int32
xbsa_Initialize(struct butx_transactionInfo
*info
,
93 char *bsaObjectOwner
, char *appObjectOwner
,
94 char *secToken
, char *serverName
);
96 extern afs_int32
xbsa_Finalize(struct butx_transactionInfo
*info
);
98 extern afs_int32
xbsa_BeginTrans(struct butx_transactionInfo
*info
);
100 extern afs_int32
xbsa_EndTrans(struct butx_transactionInfo
*info
);
102 extern afs_int32
xbsa_QueryObject(struct butx_transactionInfo
*info
,
103 char *objectSpaceName
, char *pathName
);
105 extern afs_int32
xbsa_ReadObjectBegin(struct butx_transactionInfo
*info
,
106 char *dataBuffer
, afs_int32 bufferSize
,
108 afs_int32
* endOfData
);
110 extern afs_int32
xbsa_ReadObjectEnd(struct butx_transactionInfo
*info
);
112 extern afs_int32
xbsa_WriteObjectBegin(struct butx_transactionInfo
*info
,
113 char *objectSpaceName
, char *pathName
,
115 afs_hyper_t estimatedSize
,
116 char *objectDescription
,
119 extern afs_int32
xbsa_WriteObjectEnd(struct butx_transactionInfo
*info
);
121 extern afs_int32
xbsa_WriteObjectData(struct butx_transactionInfo
*info
,
122 char *dataBuffer
, afs_int32 bufferSize
,
125 extern afs_int32
xbsa_ReadObjectData(struct butx_transactionInfo
*info
,
126 char *dataBuffer
, afs_int32 bufferSize
,
128 afs_int32
* endOfData
);
130 extern afs_int32
xbsa_DeleteObject(struct butx_transactionInfo
*info
,
131 char *objectSpaceName
, char *pathName
);
136 /* XBSA Global Parameters */
141 #define XBSA_EXT extern
144 XBSA_EXT afs_int32 xbsaType
;
146 XBSA_EXT
struct butx_transactionInfo butxInfo
;
148 #define rpc_c_protect_level_default 0
149 XBSA_EXT afs_uint32 dumpRestAuthnLevel
;
150 XBSA_EXT
char *xbsaObjectOwner
;
151 XBSA_EXT
char *appObjectOwner
;
152 XBSA_EXT
char *adsmServerName
;
153 XBSA_EXT
char *xbsaSecToken
;
154 XBSA_EXT
char *xbsalGName
;
156 #endif /* OPENAFS_BUTC_XBSA_H */