mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 06:50:12 +00:00
DEVEL153X-butc-xbsa-update-20080711
LICENSE IPL10
update xbsa support for current tsm
(cherry picked from commit 5baf817a31
)
This commit is contained in:
parent
5130683a40
commit
f162e9d259
15
acinclude.m4
15
acinclude.m4
@ -1236,20 +1236,33 @@ XBSA_CFLAGS=""
|
||||
if test "$enable_tivoli_tsm" = "yes"; then
|
||||
XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
|
||||
XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
|
||||
XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
|
||||
XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
|
||||
|
||||
if test -r "$XBSADIR1/xbsa.h"; then
|
||||
XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
|
||||
XBSA_XLIBS=""
|
||||
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
||||
elif test -r "$XBSADIR2/xbsa.h"; then
|
||||
XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
|
||||
XBSA_XLIBS=""
|
||||
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
||||
elif test -r "$XBSADIR3/dsmapifp.h"; then
|
||||
XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
|
||||
XBSA_XLIBS="-ldl"
|
||||
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
||||
elif test -r "$XBSADIR4/dsmapifp.h"; then
|
||||
XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
|
||||
XBSA_XLIBS="-ldl"
|
||||
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
||||
else
|
||||
AC_MSG_RESULT([no, missing xbsa.h header file])
|
||||
AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
AC_SUBST(XBSA_CFLAGS)
|
||||
AC_SUBST(XBSA_XLIBS)
|
||||
|
||||
dnl checks for header files.
|
||||
AC_HEADER_STDC
|
||||
|
2903
src/butc/afsxbsa.c
Normal file
2903
src/butc/afsxbsa.c
Normal file
File diff suppressed because it is too large
Load Diff
866
src/butc/afsxbsa.h
Normal file
866
src/butc/afsxbsa.h
Normal file
@ -0,0 +1,866 @@
|
||||
/*
|
||||
* 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
|
||||
|
||||
#if (SYS_V > 3) || defined(BERK4_2) || defined(SUN4)
|
||||
#include <sys/time.h>
|
||||
#else
|
||||
#include <time.h>
|
||||
#endif
|
||||
|
||||
#ifdef bool_t
|
||||
#undef bool_t
|
||||
#endif
|
||||
|
||||
/* include TSM Header Files. */
|
||||
#include <dsmapitd.h>
|
||||
#include <dsmapifp.h>
|
||||
#include <dsmrc.h>
|
||||
|
||||
/* 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 */
|
||||
#define BSAObjectType_DATABASE 4 /* ObjectType for Databases */
|
||||
|
||||
/* 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
|
||||
} 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 */
|
@ -34,6 +34,22 @@ extern int debugLevel;
|
||||
char resourceType[20] = "LFS FILE SYSTEM";
|
||||
#define GOODSTR(s) ((s)?(s):"<NULL>")
|
||||
|
||||
#ifdef NEW_XBSA
|
||||
BSA_Int16 (*XBSAInit)(long *, SecurityToken *, ObjectOwner *, char **);
|
||||
BSA_Int16 (*XBSABeginTxn)(long);
|
||||
BSA_Int16 (*XBSAEndTxn)(long, Vote);
|
||||
BSA_Int16 (*XBSATerminate)(long);
|
||||
BSA_Int16 (*XBSAQueryObject)(long, QueryDescriptor *, ObjectDescriptor *);
|
||||
BSA_Int16 (*XBSAGetObject)(long, ObjectDescriptor *, DataBlock *);
|
||||
BSA_Int16 (*XBSAEndData)(long);
|
||||
BSA_Int16 (*XBSACreateObject)(long, ObjectDescriptor *, DataBlock *);
|
||||
BSA_Int16 (*XBSADeleteObject)(long, CopyType, ObjectName *, CopyId *);
|
||||
BSA_Int16 (*XBSAMarkObjectInactive)(long, ObjectName *);
|
||||
BSA_Int16 (*XBSASendData)(long, DataBlock *);
|
||||
BSA_Int16 (*XBSAGetData)(long, DataBlock *);
|
||||
void (*XBSAQueryApiVersion)(ApiVersion *);
|
||||
BSA_Int16 (*XBSAGetEnvironment)(long, ObjectOwner *, char **);
|
||||
#else
|
||||
BSA_Int16(*XBSAInit) (BSA_UInt32 *, SecurityToken *, ObjectOwner *, char **);
|
||||
BSA_Int16(*XBSABeginTxn) (BSA_UInt32);
|
||||
BSA_Int16(*XBSAEndTxn) (BSA_UInt32, Vote);
|
||||
@ -49,7 +65,7 @@ BSA_Int16(*XBSASendData) (BSA_UInt32, DataBlock *);
|
||||
BSA_Int16(*XBSAGetData) (BSA_UInt32, DataBlock *);
|
||||
BSA_Int16(*XBSAQueryApiVersion) (ApiVersion *);
|
||||
BSA_Int16(*XBSAGetEnvironment) (BSA_UInt32, ObjectOwner *, char **);
|
||||
|
||||
#endif
|
||||
|
||||
xbsa_error(int rc, struct butx_transactionInfo *info)
|
||||
{
|
||||
@ -122,6 +138,7 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType)
|
||||
|
||||
switch (serverType) {
|
||||
case XBSA_SERVER_TYPE_ADSM:
|
||||
#ifndef NEW_XBSA
|
||||
#if defined(AFS_AIX_ENV)
|
||||
dynlib =
|
||||
dlopen("/usr/lib/libXApi.a(bsashr10.o)",
|
||||
@ -136,6 +153,7 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType)
|
||||
dynlib = dlopen("/usr/lib/libXApi.so", RTLD_NOW | RTLD_GLOBAL);
|
||||
#else
|
||||
dynlib = NULL;
|
||||
#endif
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
@ -145,15 +163,18 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType)
|
||||
break;
|
||||
}
|
||||
|
||||
#ifndef NEW_XBSA
|
||||
if (dynlib == NULL) {
|
||||
ELog(0,
|
||||
"xbsa_MountLibrary: The dlopen call to load the XBSA shared library failed\n");
|
||||
return (BUTX_NOLIBRARY);
|
||||
}
|
||||
#endif
|
||||
|
||||
memset(info, 0, sizeof(struct butx_transactionInfo));
|
||||
XBSA_SET_SERVER_TYPE(info->serverType, serverType);
|
||||
|
||||
#ifndef NEW_XBSA
|
||||
#if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV)
|
||||
XBSAInit = (BSA_Int16(*)
|
||||
(BSA_UInt32 *, SecurityToken *, ObjectOwner *,
|
||||
@ -204,10 +225,40 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType)
|
||||
"xbsa_MountLibrary: The dlopen call to load the XBSA shared library failed\n");
|
||||
return (BUTX_NOLIBRARY);
|
||||
}
|
||||
|
||||
XBSAQueryApiVersion(&(info->apiVersion));
|
||||
#endif
|
||||
#else
|
||||
#if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_LINUX26_ENV)
|
||||
XBSAInit = BSAInit;
|
||||
XBSABeginTxn = BSABeginTxn;
|
||||
XBSAEndTxn = BSAEndTxn;
|
||||
XBSATerminate = BSATerminate;
|
||||
XBSAQueryObject = BSAQueryObject;
|
||||
XBSAGetObject = BSAGetObject;
|
||||
XBSAEndData = BSAEndData;
|
||||
XBSACreateObject = BSACreateObject;
|
||||
XBSAMarkObjectInactive = BSAMarkObjectInactive;
|
||||
XBSADeleteObject = BSADeleteObject;
|
||||
XBSASendData = BSASendData;
|
||||
XBSAGetData = BSAGetData;
|
||||
XBSAQueryApiVersion = BSAQueryApiVersion;
|
||||
XBSAGetEnvironment = BSAGetEnvironment;
|
||||
|
||||
if (!XBSAInit || !XBSABeginTxn || !XBSAEndTxn || !XBSATerminate ||
|
||||
!XBSAQueryObject || !XBSAGetObject || !XBSAEndData ||
|
||||
!XBSACreateObject || !XBSADeleteObject || !XBSAMarkObjectInactive ||
|
||||
!XBSASendData || !XBSAGetData || !XBSAQueryApiVersion ||
|
||||
!XBSAGetEnvironment) {
|
||||
ELog(0,"xbsa_MountLibrary: The dlopen call to load the XBSA shared library failed\n");
|
||||
return(BUTX_NOLIBRARY);
|
||||
}
|
||||
XBSAQueryApiVersion(&(info->apiVersion));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_BUTC
|
||||
printf("xbsa_MountLibrary : XBSA function Pointers initialised. \n");
|
||||
#endif
|
||||
/*
|
||||
* Verify the API version
|
||||
*/
|
||||
|
@ -38,7 +38,11 @@
|
||||
#define XBSADFLTBUFFER 16384 /* default size is 16KB */
|
||||
#define XBSAMAXBUFFER 65535 /* maximum size in 64KB-1; has to fit in 16bit integer */
|
||||
|
||||
#ifdef NEW_XBSA
|
||||
#include "afsxbsa.h"
|
||||
#else
|
||||
#include <xbsa.h>
|
||||
#endif
|
||||
|
||||
#define XBSA_NUM_ENV_STRS ADSM_ENV_STRS
|
||||
#define XBSA_MAX_OSNAME BSA_MAX_OSNAME
|
||||
|
@ -8,7 +8,7 @@ SHLIB_SUFFIX="so"
|
||||
CC="cc"
|
||||
CCOBJ="cc"
|
||||
MT_CC="cc"
|
||||
XLIBS="${LIB_AFSDB}"
|
||||
XLIBS="${LIB_AFSDB} ${XBSA_XLIBS}"
|
||||
|
||||
dnl debugging and optimization flag defaults
|
||||
dnl Note, these are all the defaults for if debug/optimize turned on, and
|
||||
@ -205,7 +205,6 @@ case $AFS_SYSNAME in
|
||||
XCFLAGS="${XCFLAGS0} +DA1.0"
|
||||
XLIBELFA="-lelf"
|
||||
#XLIBS="${LIB_AFSDB} -lnsl"
|
||||
XLIBS="${LIB_AFSDB}"
|
||||
YACC="/opt/langtools/bin/yacc"
|
||||
SHLIB_LINKER="ld -b"
|
||||
;;
|
||||
@ -237,7 +236,6 @@ case $AFS_SYSNAME in
|
||||
XCFLAGS="${XCFLAGS0}"
|
||||
XLIBELFA="-lelf"
|
||||
#XLIBS="${LIB_AFSDB} -lnsl"
|
||||
XLIBS="${LIB_AFSDB}"
|
||||
YACC="/opt/langtools/bin/yacc"
|
||||
SHLIB_LINKER="ld -b"
|
||||
;;
|
||||
|
@ -30,7 +30,7 @@ VOLSERLIBS=${TOP_LIBDIR}/libvosadmin.a ${TOP_LIBDIR}/libafsadminutil.a
|
||||
LWPOBJS =lock.o
|
||||
|
||||
BUTCOBJS =dbentries.o tcprocs.o lwps.o tcmain.o list.o recoverDb.o \
|
||||
tcudbprocs.o dump.o tcstatus.o butc_xbsa.o \
|
||||
tcudbprocs.o dump.o tcstatus.o butc_xbsa.o afsxbsa.o \
|
||||
${LWPOBJS} ${BUCOORDOBJS} ${VOLSEROBJS}
|
||||
|
||||
BUTCINCLS=${TOP_INCDIR}/afs/partition.h \
|
||||
@ -73,6 +73,9 @@ libbutm.a: ${BUTMOBJS} AFS_component_version_number.o
|
||||
$(AR) crv libbutm.a $(BUTMOBJS) AFS_component_version_number.o
|
||||
${RANLIB} libbutm.a
|
||||
|
||||
afsxbsa.o: ${BUTC}/afsxbsa.c ${BUTC}/afsxbsa.h ${BUTCINCLS}
|
||||
${CC} ${CFLAGS} -c ${BUTC}/afsxbsa.c
|
||||
|
||||
dbentries.o: ${BUTC}/dbentries.c ${BUTCINCLS}
|
||||
${CC} ${CFLAGS} -c ${BUTC}/dbentries.c
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user