/* * Copyright 2000, International Business Machines Corporation and others. * All Rights Reserved. * * This software has been released under the terms of the IBM Public * License. For details, see the LICENSE file in the top-level source * directory or online at http://www.openafs.org/dl/license10.html */ #ifndef _BSA_XBSA_H_ #define _BSA_XBSA_H_ #ifdef __cplusplus extern "C" { #endif #include #ifdef bool_t #undef bool_t #endif /* include TSM Header Files. */ #include #include #include /* BSA_Boolean */ typedef char BSA_Boolean; /* BSA_Int16 */ typedef short BSA_Int16; /* BSA_Int32 */ typedef long BSA_Int32; /* BSA_Int64 */ typedef struct { /* defined as two 32-bit integers */ BSA_Int32 left; BSA_Int32 right; } BSA_Int64; /* BSA_UInt16 */ typedef unsigned short BSA_UInt16; /* BSA_UInt32 */ typedef unsigned long BSA_UInt32; /* BSA_UInt64 */ typedef struct { /* defined as two unsigned 32-bit integers*/ BSA_UInt32 left; BSA_UInt32 right; } BSA_UInt64; /*-------------------------------------------------------------------------+ | ADSM specific constants and return codes | +-------------------------------------------------------------------------*/ /* TSM library version, release, level */ #define BSA_API_VERSION 5 #define BSA_API_RELEASE 2 #define BSA_API_LEVEL 0 /* Constants used */ #define ADSM_MAX_DESC 100 /* ADSM max Desc size */ #define ADSM_MAX_OBJINFO 100 /* ADSM max object info size */ #define ADSM_LOWEST_BOUND 0x0000 /* value for LowerBound min */ #define ADSM_HIGHEST_BOUND 0xFFFF /* value for UpperBound max */ #define ADSM_ENV_STRS 3 /* number of env strings */ #define ObjectDescriptorVersion 1 /* ver for ObjectDescriptor */ #define UserDescriptorVersion 1 /* ver for UserDescriptor */ /* Return Codes Used */ #define BSA_RC_OK 0x00 #define BSA_RC_SUCCESS 0x00 #define ADSM_RC_ERROR 0x60 /* see ADSM error log */ #define ADSM_RC_INVALID_NODE 0x61 /* BSAObjOwner not match Init*/ #define ADSM_RC_INVALID_COPYTYPE 0x62 /* invalid copyType */ #define ADSM_RC_INVALID_OBJTYPE 0x63 /* invalid objectType */ #define ADSM_RC_INVALID_STATUS 0x64 /* invalid object status */ #define ADSM_RC_INVALID_ST_VER 0x65 /* invalid structure version */ #define ADSM_RC_OWNER_TOO_LONG 0x66 /* owner too long */ #define ADSM_RC_PSWD_TOO_LONG 0x67 /* pswd too long */ #define ADSM_RC_PSWD_GEN 0x68 /* pswd access = generate */ /* Constants used * * Maximum string lengths (lower bound), including trailing null */ #define BSA_LIST_ELEMENT_DELIMITER null /* Element delimiter in list */ #define BSA_MAX_ADMIN_NAME 64 /* Administrator name */ #define BSA_MAX_APPOBJECT_OWNER 64 /* Max end-object owner length */ #define BSA_MAX_BSAOBJECT_OWNER 64 /* Max BSA object owner length */ #define BSA_MAX_CG_DEST 31 /* Copy group destination */ #define BSA_MAX_CG_NAME 31 /* Max copy group name length */ #define BSA_MAX_COPYGROUPS 16 /* Max number of copy groups */ /* which can be specified in a */ /* lifecycle group */ #define BSA_MAX_DESC 256 /* Description field */ #define BSA_MAX_ENCODINGMETHOD 31 /* Max encoding method length */ #define BSA_MAX_EVENTINFO 256 /* Max event info size */ #define BSA_MAX_FILTERRULESET 8192 /* Max filter rule set size */ #define BSA_MAX_OSNAME 1024 /* Max Objectspace name length */ #define BSA_MAX_LG_NAME 31 /* Life cycle group name */ #define BSA_MAX_LIFECYCLEGROUPS 64 /* Max number of life cycle */ /* groups in a policy set */ #define BSA_MAX_OBJINFO 512 /* Max object info size */ #define BSA_MAX_PATHNAME 1024 /* Max path name length */ #define BSA_MAX_POLICYDOMAINS 256 /* Max number of specific policy */ /* domains an administrator may */ /* be responsible for */ #define BSA_MAX_POLICYDOMAIN_NAME 31 /* Policy domain name */ #define BSA_MAX_POLICYSETS 16 /* Max number of policy sets */ /* in a domain */ #define BSA_MAX_POLICYSET_NAME 31 /* Policy set name */ #define BSA_MAX_RESOURCETYPE 31 /* Max resource mgr name length */ #define BSA_MAX_TOKEN_SIZE 64 /* Max size of a security token */ #define BSA_PUBLIC "BSA_ANY" /* Default string */ /* Return Codes Used * * Return Code descriptions are given in Section 4.3. */ #define BSA_RC_ABORT_ACTIVE_NOT_FOUND 0x02 #define BSA_RC_ABORT_SYSTEM_ERROR 0x03 #define BSA_RC_AUTHENTICATION_FAILURE 0x04 #define BSA_RC_BAD_CALL_SEQUENCE 0x05 #define BSA_RC_BAD_HANDLE 0x06 #define BSA_RC_BUFFER_TOO_SMALL 0x07 #define BSA_RC_DESC_TOO_LONG 0x08 #define BSA_RC_OBJECTSPACE_TOO_LONG 0x09 #define BSA_RC_INVALID_TOKEN 0x0a #define BSA_RC_INVALID_VOTE 0x0b #define BSA_RC_INVALID_KEYWORD 0x0c #define BSA_RC_MATCH_EXISTS 0x0d #define BSA_RC_MORE_DATA 0x0e #define BSA_RC_MORE_RULES 0x0f #define BSA_RC_NEWTOKEN_REQD 0x10 #define BSA_RC_NO_MATCH 0x11 #define BSA_RC_NO_MORE_DATA 0x12 #define BSA_RC_NO_RESOURCES 0x13 #define BSA_RC_NULL_DATABLKPTR 0x14 #define BSA_RC_NULL_OBJNAME 0x15 #define BSA_RC_NULL_POINTER 0x16 #define BSA_RC_NULL_RULEID 0x17 #define BSA_RC_OBJECT_NAME_TOO_LONG 0x18 #define BSA_RC_OBJECT_NOT_EMPTY 0x19 #define BSA_RC_OBJECT_NOT_FOUND 0x1a #define BSA_RC_OBJINFO_TOO_LONG 0x1b #define BSA_RC_OBJNAME_TOO_LONG 0x1c #define BSA_RC_OPERATION_NOT_AUTHORIZED 0x1d #define BSA_RC_OLDTOKEN_REQD 0x1e #define BSA_RC_TOKEN_EXPIRED 0x1f #define BSA_RC_TXN_ABORTED 0x20 #define BSA_RC_UNMATCHED_QUOTE 0x21 #define BSA_RC_USER_OWNS_OBJECTS 0x22 /* AppObjectOwner */ typedef char AppObjectOwner[BSA_MAX_APPOBJECT_OWNER]; /* BSAObjectOwner */ typedef char BSAObjectOwner[BSA_MAX_BSAOBJECT_OWNER]; /* CopyGpDest */ typedef char CopyGpDest[BSA_MAX_CG_DEST]; /* CopyGpName */ typedef char CopyGpName[BSA_MAX_CG_NAME]; /* CopyMode * * Constant Value Explanation * -------- ----- ----------- * INCREMENTAL 1 Specifies that the Backup Services should make a * copy only if the application object has been * modified since the last time this copy group was * used to create the object's copy. * ABSOLUTE 2 Specifies that the Backup Services should make a * copy even if the application object has not been * modified since the last time this copy group was * used to create the object's copy. */ typedef enum { BSACopyMode_INCREMENTAL = 1, BSACopyMode_ABSOLUTE = 2 } CopyMode; /* CopySerialization * * Constant Value Explanation * -------- ----- ----------- * STATIC 1 Specifies that the Backup Services must create a * consistent (unmodified during the operation) copy of * the object. If the application is unable to create a * consistent copy then it should skip the operation * (creating backup or archive copy) for the object. * SHAREDSTATIC 2 Specifies that the Backup Services must create a * consistent copy of the object. It can retry the * operation a number of times (application dependent). * If the Backup Services is unable to create a * consistent copy even after retries, then it should * skip creating a backup or archive copy of the * object. * SHAREDDYNAMIC 3 Specifies that the Backup Services must create a * copy of the object. It can retry the operation a * number of times in an attempt to create a consistent * copy; however, if it fails to make a consistent * copy, a copy must still be made, ignoring the fact * that the copy may have been modified during the * operation. Such copies are useful for log file * objects which are being continuously modified. * DYNAMIC 4 Specifies that the Backup Services must create a * copy of the obbject even if the source object is * modified during the operation. No retries should be * attempted to create a consistent copy. */ typedef enum { BSACopySerialization_STATIC = 1, BSACopySerialization_SHAREDSTATIC = 2, BSACopySerialization_SHAREDDYNAMIC = 3, BSACopySerialization_DYNAMIC = 4 } CopySerialization; /* CopyType * * Constant Value Explanation * -------- ----- ----------- * ANY 1 Used for matching any copy type (e.g. "backup" or * "archive" in the copy type field of structures for * selecting query results). * ARCHIVE 2 Specifies that the copy type should be "archive". * When used in the copy type field of the CopyGroup, * it identifies the copy data as of type * ArchiveCopyData, which is used to create archive * copies. * BACKUP 3 Specifies that the copy type should be "backup". * When used in the copy type field of the CopyGroup, * it identifies the copy data as of type * BackupCopyData, which is used to create backup * copies. */ typedef enum { BSACopyType_ANY = 1, BSACopyType_ARCHIVE = 2, BSACopyType_BACKUP = 3 } CopyType; /* Description */ typedef char Description[BSA_MAX_DESC]; /* DomainName */ typedef char * DomainName[BSA_MAX_POLICYDOMAIN_NAME]; /* EventInfo */ typedef char EventInfo[BSA_MAX_EVENTINFO]; /* LGName */ typedef char LGName[BSA_MAX_LG_NAME]; /* ObjectInfo */ typedef char ObjectInfo[BSA_MAX_OBJINFO]; /* ObjectName */ typedef struct { char objectSpaceName[BSA_MAX_OSNAME]; /* Highest-level name qualifier */ char pathName[BSA_MAX_PATHNAME]; /* Object name within */ /* objectspace */ } ObjectName; /* ObjectOwner */ typedef struct { BSAObjectOwner bsaObjectOwner; /* BSA Owner name - this is the name */ /* that Backup Services authenticates */ AppObjectOwner appObjectOwner; /* End-owner name, this is the name */ /* defined by the application */ } ObjectOwner; /* ObjectSize */ typedef BSA_UInt64 ObjectSize; /* Unsigned 64-bit integer */ /* ObjectStatus * * Constant Value Explanation * -------- ----- ----------- * ANY 1 Provides a wild card function. Can only be used in * queries. * ACTIVE 2 Indicates that this is the most recent backup copy * of an object. * INACTIVE 3 Indicates that this is not the most recent backup * copy, or that the object itself no longer exists. */ typedef enum { BSAObjectStatus_ANY = 1, BSAObjectStatus_ACTIVE = 2, BSAObjectStatus_INACTIVE = 3 } ObjectStatus; /* ObjectType * * Constant Value Explanation * -------- ----- ----------- * any 1 Used for matching any object type (e.g. "file" or * "directory") value in the object type field of * structures for selecting query results. * file 2 Used by the application to indicate that the type of * application object is a "file" or single object. * directory 3 Used by the application to indicate that the type of * application object is a "directory" or container of * objects. */ typedef enum { BSAObjectType_ANY = 1, BSAObjectType_FILE = 2, BSAObjectType_DIRECTORY = 3, BSAObjectType_DATABASE = 4, } ObjectType; /* Operation * * Constant Value Explanation * -------- ----- ----------- * archive 1 Used to indicate that a scheduled operation is of * type "archive". * backup 2 Used to indicate that a scheduled operation is of * type "backup". */ typedef enum { BSAOperation_ARCHIVE = 1, BSAOperation_BACKUP = 2 } Operation; /* Period * * Use of the Period structure in a Schedule for an event: * 1. The Schedule structure specifies 3 timing elements: * a. "firstStartTime" - a timestamp showing the "earliest" * possible time the event could take place * b. "day" - the day of the week the event should occur * c. "frequency" - the period between successive events * 2. To determine the day the event should occur (this does * not change the time of the event in the day): * a. Determine the requested day from "firstStartTime". * b. If "day" does not equal XBSA_DAYOFWEEK_ANY * i. Compare "day" to the day of the week corresponding * to "firstStartTime" determined in 2a above. * ii.If the days match, then use "firstStartTime" else * use the first "day" *following* the day shown * in "firstStartTime" as the day of the event. * 3. If the PeriodWhich field in the Period structure is other * than XBSA_PERIOD_UNDEFINED, then successive events are * determined using the value of "periodData". * a. For seconds and days, the appropriate seconds or days * are added to the "firstStartTime" and step 2 to correct * for the day of the week (if needed) is applied again. * b. If a monthly period is specified, then the appropriate * number of months are added by incrementing the month index is * made (for example, a one month increment from February to * March). If the monthly date is not valid (for example, January * 30 --> February 30) then the last day of the desired month is * used (example January 30 --> February 28). Then step 2 is * followed to adjust for the requested day (which might move the * event time into the following month). */ typedef enum { BSAPeriod_SECONDS = 1, BSAPeriod_DAYS = 2, BSAPeriod_MONTHS = 3, BSAPeriod_UNDEFINED = -9, BSAPeriod_DAILY = 4, BSAPeriod_WEEKLY = 5, BSAPeriod_MONTHLY = 6, BSAPeriod_QUARTERLY = 7, BSAPeriod_ANNUALLY = 8 } PeriodWhich; typedef struct { PeriodWhich which; union { time_t nSeconds; BSA_Int16 nDays; BSA_Int16 nMonths; } periodData; } Period; /* ResourceType */ typedef char ResourceType[BSA_MAX_RESOURCETYPE]; /* RuleId */ typedef BSA_UInt64 RuleId; /* Scheduleid */ typedef BSA_UInt64 ScheduleId; /* AccessRight * * Constant Value Explanation * -------- ----- ----------- * GET 1 Access right for getting an object from Backup * Services, also includes access right for querying * (getting attributes) an object from Backup Services. * QUERY 2 Access right for querying (getting attributes) an * object from Backup Services. */ typedef enum { BSAAccessRight_GET = 1, BSAAcessRight_QUERY = 2 } AccessRight; /* AccessRule */ typedef struct { RuleId ruleId; /* Provided by Backup Services */ ObjectName objName; /* Object name to be given access */ ObjectOwner objectOwner; /* BSA object owner and Applicaton object */ /* owner to be given access */ AccessRight rights; /* The access rights to be given */ } AccessRule; /* ApiVersion */ typedef struct { BSA_UInt16 version; /* Version of this API */ BSA_UInt16 release; /* Release of this API */ BSA_UInt16 level; /* Level of this API */ } ApiVersion; /* ArchiveCopyData */ typedef struct { CopyGpName cGName; /* Copy group name */ BSA_UInt16 freq; /* Archive frequency */ CopySerialization copySer; /* Copy serialization code */ CopyMode copyMode; /* Copy mode */ CopyGpDest destName; /* Copy destination name */ BSA_UInt16 retVersion; /* Retention time for the version */ } ArchiveCopyData; /* BackupCopyData */ typedef struct { CopyGpName cGName; /* Copy group name */ BSA_UInt16 freq; /* Backup frequency */ CopySerialization copySer; /* Copy serialization code */ CopyMode copyMode; /* Copy mode: 1=modified, 2=absolute */ CopyGpDest destName; /* Copy destination name */ BSA_UInt16 verDataEx; /* Versions (number of versions */ /* retained) */ BSA_UInt16 verDataDel; /* Versions (data deleted) */ Period retXtraVer; /* Retain extra versions */ Period retOnlyVer; /* Retain only versions */ } BackupCopyData; /* CopyGroup */ typedef struct { CopyType copyType; /* Type of copy group: archive, backup, etc */ union { ArchiveCopyData archive; BackupCopyData backup; } copyData; } CopyGroup; /* CopyId */ typedef BSA_UInt64 CopyId; /* DataBlock */ typedef struct { BSA_UInt16 bufferLen; BSA_UInt16 numBytes; /* Actual number of bytes read from */ /* or written to the buffer, or the */ /* minimum number of bytes needed */ char * bufferPtr; } DataBlock; /* DayOfWeek */ typedef enum { BSADayOfWeek_Monday = 1, BSADayOfWeek_Tuesday = 2, BSADayOfWeek_Wednesday = 3, BSADayOfWeek_Thursday = 4, BSADayOfWeek_Friday = 5, BSADayOfWeek_Saturday = 6, BSADayOfWeek_Sunday = 7 } DayOfWeek; /* Environment */ typedef struct { char * envVariables; /* Identifies the Backup Services instance and other */ /* implementation-dependent variables such as */ /* communication ports, etc. Each variable is a */ /* (keyword, value) pair separated by a space. */ /* If a value contains spaces, it must be */ /* enclosed in single or double quotes. */ } BSAEnvironment; /* Event */ typedef struct { BSA_UInt32 eventId; /* This is an internal (to Backup Services) id*/ ObjectOwner objectOwner;/* Identifies the owner of the event */ struct tm time; /* Identifies the time the action is to start */ Operation action; /* Identifies the action (backup, archive) */ ObjectName objName; /* Identifies objects to be acted on */ ResourceType resourceType;/* Identifies the resource manager for the */ /* event */ EventInfo eventInfo; /* User- and resource-manager-specific info */ } BSAEvent; /* MethodName */ typedef char EncodingMethod[BSA_MAX_ENCODINGMETHOD]; /* ObjectDescriptor */ typedef struct { BSA_UInt32 version; /* Version number for this structure */ ObjectOwner Owner; /* Owner of the object */ ObjectName objName; /* Object name */ struct tm createTime; /* Supplied by Backup Services */ CopyType copyType; /* Copy type: archive or backup */ CopyId copyId; /* Supplied by Backup Services */ BSA_UInt64 restoreOrder; /* Supplied by Backup Services */ LGName lGName; /* Associated Lifecycle Group name */ CopyGpName cGName; /* Copy group within the lifecycle group */ ObjectSize size; /* Object size may be up to 63 bits */ ResourceType resourceType; /* e.g. UNIX file system */ ObjectType objectType; /* e.g. file, directory, etc. */ ObjectStatus status; /* Active/inactive, supplied by */ /* Backup Services */ EncodingMethod * encodingList; /* List of encoding Methods used, in */ /* application-defined order, */ /* terminated with a null entry */ Description desc; /* Descriptive label for the object */ ObjectInfo objectInfo; /* Application information */ } ObjectDescriptor; /* QueryDescriptor */ typedef struct { ObjectOwner owner; /* Owner of the object */ ObjectName objName; /* Object name */ struct tm createTimeLB; /* Lower bound on create time */ struct tm createTimeUB; /* Upper bound on create time */ struct tm expireTimeLB; /* Lower bound on expiration time */ struct tm expireTimeUB; /* Upper bound on expiration time */ CopyType copyType; /* Copy type: archive or backup */ LGName lGName; /* Associated Lifecycle Group name */ CopyGpName cGName; /* Copy group within the lifecycle group */ ResourceType resourceType; /* e.g. UNIX file system */ ObjectType objectType; /* e.g. file, directory, etc. */ ObjectStatus status; /* Active/inactive, supplied by Backup */ /* Services */ Description desc; /* Descriptive label for the object */ } QueryDescriptor; /* "*" is interpreted as a meta character */ /* wild card. */ /* Any undefined value is interpreted as */ /* an error. */ /* Schedule */ typedef struct { ScheduleId schedId; /* Provided by Backup Services */ ObjectOwner objectOwner; /* Specifies the owner of the schedule */ Operation operation; /* Specifies the action to be taken */ struct tm firstStartTime; /* Specifies the first time the action */ /* is to take place */ DayOfWeek day; /* Specifies the day of week for the event*/ Period frequency; /* Specifies the frequency, e.g. daily */ ObjectName objectName; /* Identifies objects to be acted on */ ResourceType resourceType; /* Identifies the resource manager for the*/ /* schedule */ EventInfo scheduleInfo; /* Resource manager specific information */ } Schedule; /* Security Token */ typedef char SecurityToken[BSA_MAX_TOKEN_SIZE]; /* StreamHandle */ typedef int StreamHandle; /* UserDescriptor */ typedef struct t_UserDescriptor { BSA_UInt16 version; /* Version num of this structure */ BSAObjectOwner bsaObjectOwner; /* BSA Object owner name */ DomainName domainName; /* Policy domain for the user */ Description desc; /* User information */ } UserDescriptor; /* Vote */ typedef enum { BSAVote_COMMIT = 1, BSAVote_ABORT = 2 } Vote; /* Function Prototypes for Data Movement API Subset * Note that int and long have been replaced with typedefs * from custom.h. */ extern BSA_Int16 BSABeginTxn ( long bsaHandle ); extern BSA_Int16 BSAChangeToken ( long bsaHandle, SecurityToken *oldTokenPtr, SecurityToken *newTokenPtr ); extern BSA_Int16 BSACreateObject ( long bsaHandle, ObjectDescriptor *objectDescriptorPtr, DataBlock *dataBlockPtr ); extern BSA_Int16 BSACreateObjectF ( long bsaHandle, ObjectDescriptor *objectDescriptorPtr, StreamHandle *streamPtr ); extern BSA_Int16 BSADeleteObject ( long bsaHandle, CopyType copyType, ObjectName *objectName, CopyId *copyId ); extern BSA_Int16 BSAEndData ( long bsaHandle ); extern BSA_Int16 BSAEndTxn ( long bsaHandle, Vote vote ); extern BSA_Int16 BSAGetData ( long bsaHandle, DataBlock *dataBlockPtr ); extern BSA_Int16 BSAGetEnvironment ( long bsaHandle, ObjectOwner *objectOwnerPtr, char **environmentPtr ); extern BSA_Int16 BSAGetNextQueryObject ( long bsaHandle, ObjectDescriptor *objectDescriptorPtr ); extern BSA_Int16 BSAGetObject ( long bsaHandle, ObjectDescriptor *objectDescriptorPtr, DataBlock *dataBlockPtr ); extern BSA_Int16 BSAGetObjectF ( long bsaHandle, ObjectDescriptor *objectDescriptorPtr, StreamHandle *streamPtr ); extern BSA_Int16 BSAInit ( long *bsaHandleP, SecurityToken *tokenPtr, ObjectOwner *objectOwnerPtr, char **environmentPtr ); extern BSA_Int16 BSAMarkObjectInactive ( long bsaHandle, ObjectName *objectNamePtr ); extern void BSAQueryApiVersion ( ApiVersion *apiVersionPtr ); extern BSA_Int16 BSAQueryObject ( long bsaHandle, QueryDescriptor *queryDescriptorPtr, ObjectDescriptor *objectDescriptorPtr ); extern BSA_Int16 BSASendData ( long bsaHandle, DataBlock *dataBlockPtr ); extern BSA_Int16 BSASetEnvironment ( long bsaHandle, char **environmentPtr ); extern BSA_Int16 BSATerminate ( long bsaHandle ); extern BSA_Int16 BSAResolveLifecycleGroup( long BSAHandle, ObjectDescriptor *BSAobjDescP ); #ifdef __cplusplus } #endif typedef struct { ApiSessInfo dsmSessInfo; BSAObjectOwner bsaObjectOwner; /* node value on BSAInit */ dsUint16_t sessFlags; /* misc flags */ dsUint8_t oper; /* send or recv operation */ CopyType copyType; /* Backup or Archive type */ char *nextQryP; /* ptr to respArchive or respBackup */ } xGlobal; /* flag masks for sessFlags */ /* to set on use sessFlags = (sessFlags | FL_IN_BSA_TXN) */ /* to set off use sessFlags = (sessFlags ^ FL_IN_BSA_TXN) */ /* to test on use if (sessFlags & FL_IN_BSA_TXN) */ #define FL_IN_BSA_TXN 0x0001 /* within a BSA type txn */ #define FL_IN_DSM_TXN 0x0002 /* within a actual ADSM txn */ #define FL_IN_BSA_QRY 0x0004 /* within a query txn */ #define FL_PSWD_EXPIRE 0x0008 /* pswd has expired */ #define FL_RC_WILL_ABORT 0x0010 /* recvd 157 on SendObj or SendData */ #define FL_END_DATA_DONE 0x0020 /* Get error already did EndData */ #define OPER_NONE 0 /* values for oper field */ #define OPER_SEND_START 1 #define OPER_SEND_ISSUED 2 #define OPER_RECV_START 3 #define OPER_RECV_ISSUED 4 /* structure def for objInfo - max len = 255 */ typedef struct { ResourceType resourceType; /* 31 bytes */ ObjectSize size; /* 8 bytes */ char partDesc[ADSM_MAX_DESC]; /* 100 bytes */ char partObjInfo[ADSM_MAX_OBJINFO]; /* 100 bytes */ } XAPIObjInfo; /* ******* G l o b a l s ******** */ /* xGlobal xopenGbl; */ extern BSA_Int16 xlateRC( long BSAHandle, BSA_Int16 dsmRC, BSA_Int16 *bsaRCP); extern BSA_Int16 xparsePath( long BSAHandle, char *pathname, char *hl, char *ll); extern xGlobal xopenGbl; extern char traceStr[]; extern char traceStr1[]; extern char traceStr2[]; #define dsMalloc(a) malloc(a) #define dsFree(a) free(a) extern void StrUpper(char *s); /* Min() and Max() macros */ #ifndef min #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif #ifndef max #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif /* Combined file name w/ line number */ #define TrFL __FILE__, __LINE__ /*=== MACRO for exit tracing ===*/ #define XOPENRETURN(BSAHandle,functionName,bsaRC,fileName,lineNumber) {sprintf(traceStr2,"%s EXIT: rc = >%d<.",functionName, bsaRC); ourTrace(BSAHandle,fileName,lineNumber,traceStr2); return(bsaRC);} /* Define license error log file name */ #define TSMLicLog "tsmlic.log" #define custMin_retcode 96 #define custMax_retcode 104 /*======================================================= Function to places a trace message in the API tracefile, the message includes the xopen file name and line number. ======================================================*/ void ourTrace(long BSAHandle, char *fileName, int lineNumber, char *traceStr2); /*================================================ Function to log events with call to dsmLogEventEx ===============================================*/ void ourLogEvent_Ex(dsUint32_t handle, dsmLogType type, char* msg, char *appMsg, dsmLogSeverity severity); /*================================================================= Function to retrieve a message by routing to dsmRCMsg or stdXOpenMsgMap. ===============================================================*/ char* ourRCMsg(dsInt16_t dsmRC, char *msg); /*==================================================== Function to build fully qualified license file name. void build_lfname(char *lfname ========================================================*/ extern void build_lfname(char *lfname); /*=== Function to deliver standard XOpen API message above API range. */ void stdXOpenMsgMap(dsInt16_t, char*); #endif /* xbsa */