/*
 * Common defintions for cb.xg and fs.xg
 */

/* $Id: common.h,v 1.2 1998/02/23 01:12:47 assar Exp $ */

%#ifndef _COMMON_
%#define _COMMON_

const AFSNAMEMAX = 256;

struct AFSFid {
     unsigned long Volume;
     unsigned long Vnode;
     unsigned long Unique;
};

struct VenusFid {
     long Cell;
     AFSFid fid;
};

struct AFSCallBack {
     unsigned long CallBackVersion;
     unsigned long ExpirationTime;
     unsigned long CallBackType;
};

enum CallBackType { CBEXCLUSIVE = 1, CBSHARED = 2, CBDROPPED = 3};

struct AFSVolSync {
     unsigned spare1;
     unsigned spare2;
     unsigned spare3;
     unsigned spare4;
     unsigned spare5;
     unsigned spare6;
};

const TYPE_FILE = 1;
const TYPE_DIR  = 2;
const TYPE_LINK = 3;

struct AFSFetchStatus {
     unsigned long InterfaceVersion;
     unsigned long FileType;
     unsigned long LinkCount;
     unsigned long Length;
     unsigned long DataVersion;
     unsigned long Author;
     unsigned long Owner;
     unsigned long CallerAccess;
     unsigned long AnonymousAccess;
     unsigned long UnixModeBits;
     unsigned long ParentVnode;
     unsigned long ParentUnique;
     unsigned long SegSize;
     unsigned long ClientModTime;
     unsigned long ServerModTime;
     unsigned long Group;
     unsigned long SyncCount;
     unsigned spare1;
     unsigned spare2;
     unsigned spare3;
     unsigned spare4;
};

struct AFSStoreStatus {
     unsigned long Mask;
     unsigned long ClientModTime;
     unsigned long Owner;
     unsigned long Group;
     unsigned long UnixModeBits;
     unsigned long SegSize;
};

const AFSOPAQUEMAX = 1024;

typedef char AFSOpaque<AFSOPAQUEMAX>;

const AFSCBMAX = 50;

typedef AFSCallBack AFSCBs<AFSCBMAX>;

typedef AFSFid AFSCBFids<AFSCBMAX>;

%#endif /* _COMMON_ */
