+++ /dev/null
-/* AFS common types
- *
- * Copyright (C) 2002, 2007, 2014 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * 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.
- */
-
-#ifndef AFS_H
-#define AFS_H
-
-#include <netinet/in.h>
-
-#include "rxgen.h"
-
-#define AFS_MAXCELLNAME 64 /* maximum length of a cell name */
-#define AFS_MAXVOLNAME 64 /* maximum length of a volume name */
-#define AFSNAMEMAX 256 /* maximum length of a filename plus NUL */
-#define AFSPATHMAX 1024 /* maximum length of a pathname plus NUL */
-#define AFSOPAQUEMAX 1024 /* maximum length of an opaque field */
-
-#define MAXTYPES 3
-#define MAXNSERVERS 8
-#define MAXNAMELEN 65
-
-#define AFS_RWVOL 0 /* read/write volume */
-#define AFS_ROVOL 1 /* read-only volume */
-#define AFS_BACKVOL 2 /* backup volume */
-
-#define AFS_FTYPE_INVALID 0
-#define AFS_FTYPE_FILE 1
-#define AFS_FTYPE_DIR 2
-#define AFS_FTYPE_SYMLINK 3
-
-#define AFS_LOCK_READ 0 /* read lock request */
-#define AFS_LOCK_WRITE 1 /* write lock request */
-
-#define AFS_LOCKWAIT (5 * 60) /* time until a lock times out (seconds) */
-
-#endif /* AFS_H */
+++ /dev/null
-/* AFS Cache Manager definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * 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.
- */
-
-#ifndef AFS_CM_H
-#define AFS_CM_H
-
-#define AFS_CM_PORT 7001 /* AFS file server port */
-#define CM_SERVICE 1 /* AFS File Service ID */
-
-enum AFS_CM_Operations {
- CBCallBack = 204, /* break callback promises */
- CBInitCallBackState = 205, /* initialise callback state */
- CBProbe = 206, /* probe client */
- CBGetLock = 207, /* get contents of CM lock table */
- CBGetCE = 208, /* get cache file description */
- CBGetXStatsVersion = 209, /* get version of extended statistics */
- CBGetXStats = 210, /* get contents of extended statistics data */
- CBInitCallBackState3 = 213, /* initialise callback state, version 3 */
- CBProbeUuid = 214, /* check the client hasn't rebooted */
- CBTellMeAboutYourself = 65538, /* get client capabilities */
-};
-
-#define AFS_CAP_ERROR_TRANSLATION 0x1
-
-#endif /* AFS_CM_H */
+++ /dev/null
-/* AFS File Service definitions
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * 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.
- */
-
-#ifndef AFS_FS_H
-#define AFS_FS_H
-
-#define AFS_FS_PORT 7000 /* AFS file server port */
-#define FS_SERVICE 1 /* AFS File Service ID */
-
-enum AFS_FS_Operations {
- FSFETCHDATA = 130, /* AFS Fetch file data */
- FSFETCHSTATUS = 132, /* AFS Fetch file status */
- FSSTOREDATA = 133, /* AFS Store file data */
- FSSTORESTATUS = 135, /* AFS Store file status */
- FSREMOVEFILE = 136, /* AFS Remove a file */
- FSCREATEFILE = 137, /* AFS Create a file */
- FSRENAME = 138, /* AFS Rename or move a file or directory */
- FSSYMLINK = 139, /* AFS Create a symbolic link */
- FSLINK = 140, /* AFS Create a hard link */
- FSMAKEDIR = 141, /* AFS Create a directory */
- FSREMOVEDIR = 142, /* AFS Remove a directory */
- FSGIVEUPCALLBACKS = 147, /* AFS Discard callback promises */
- FSGETVOLUMEINFO = 148, /* AFS Get information about a volume */
- FSGETVOLUMESTATUS = 149, /* AFS Get volume status information */
- FSGETROOTVOLUME = 151, /* AFS Get root volume name */
- FSSETLOCK = 156, /* AFS Request a file lock */
- FSEXTENDLOCK = 157, /* AFS Extend a file lock */
- FSRELEASELOCK = 158, /* AFS Release a file lock */
- FSLOOKUP = 161, /* AFS lookup file in directory */
- FSFETCHDATA64 = 65537, /* AFS Fetch file data */
- FSSTOREDATA64 = 65538, /* AFS Store file data */
-};
-
-enum AFS_FS_Errors {
- VSALVAGE = 101, /* volume needs salvaging */
- VNOVNODE = 102, /* no such file/dir (vnode) */
- VNOVOL = 103, /* no such volume or volume unavailable */
- VVOLEXISTS = 104, /* volume name already exists */
- VNOSERVICE = 105, /* volume not currently in service */
- VOFFLINE = 106, /* volume is currently offline (more info available [VVL-spec]) */
- VONLINE = 107, /* volume is already online */
- VDISKFULL = 108, /* disk partition is full */
- VOVERQUOTA = 109, /* volume's maximum quota exceeded */
- VBUSY = 110, /* volume is temporarily unavailable */
- VMOVED = 111, /* volume moved to new server - ask this FS where */
-};
-
-/*
- * AFS file identifier
- */
-struct AFSFid {
- uint32_t vid; /* Volume ID */
- uint32_t vnode; /* File index within volume */
- uint32_t unique; /* Unique ID number (file index version) */
-};
-
-/*
- * AFS callback notification
- */
-#define AFSCM_CB_UNTYPED 0 /* No type set on CB break */
-#define AFSCM_CB_EXCLUSIVE 1 /* CB exclusive to CM [not implemented] */
-#define AFSCM_CB_SHARED 2 /* CB shared by other CM's */
-#define AFSCM_CB_DROPPED 3 /* CB promise cancelled by file server */
-
-struct AFSCallBack {
- uint32_t CallBackVersion; /* Callback version number */
- uint32_t ExpirationTime; /* Time when callback expires */
- uint32_t CallBackType; /* Type of callback */
-};
-
-#define AFSCBMAX 50 /* Maximum callbacks transferred per bulk op */
-
-/*
- * AFS security ACE access mask
- */
-#define AFS_ACE_READ 0x00000001U /* - permission to read a file/dir */
-#define AFS_ACE_WRITE 0x00000002U /* - permission to write/chmod a file */
-#define AFS_ACE_INSERT 0x00000004U /* - permission to create dirent in a dir */
-#define AFS_ACE_LOOKUP 0x00000008U /* - permission to lookup a file/dir in a dir */
-#define AFS_ACE_DELETE 0x00000010U /* - permission to delete a dirent from a dir */
-#define AFS_ACE_LOCK 0x00000020U /* - permission to lock a file */
-#define AFS_ACE_ADMINISTER 0x00000040U /* - permission to change ACL */
-#define AFS_ACE_USER_A 0x01000000U /* - 'A' user-defined permission */
-#define AFS_ACE_USER_B 0x02000000U /* - 'B' user-defined permission */
-#define AFS_ACE_USER_C 0x04000000U /* - 'C' user-defined permission */
-#define AFS_ACE_USER_D 0x08000000U /* - 'D' user-defined permission */
-#define AFS_ACE_USER_E 0x10000000U /* - 'E' user-defined permission */
-#define AFS_ACE_USER_F 0x20000000U /* - 'F' user-defined permission */
-#define AFS_ACE_USER_G 0x40000000U /* - 'G' user-defined permission */
-#define AFS_ACE_USER_H 0x80000000U /* - 'H' user-defined permission */
-
-/*
- * AFS returned file status information (AFS-3 FS/CM Programmer's Ref #5.1.2.3)
- */
-struct AFSFetchStatus {
- uint32_t InterfaceVersion; /* Interface version */
-#define AFS_FSTATUS_VERSION 1
- uint32_t FileType; /* File type */
- uint32_t LinkCount; /* File hard link count */
- uint32_t Length; /* File size */
- uint32_t DataVersion; /* Object's data version */
- uint32_t Author; /* Author ID */
- uint32_t Owner; /* Owner ID */
- uint32_t CallerAccess; /* Access rights for authenticated caller */
- uint32_t AnonymousAccess; /* Access rights for unauthenticated caller */
- uint32_t UnixModeBits; /* UNIX file mode mask */
- uint32_t ParentVnode; /* Parent dir ID */
- uint32_t ParentUnique; /* Parent dir ID uniquifier */
- uint32_t SegSize; /* - Not implemented */
- uint32_t ClientModTime; /* Last time client changed data */
- uint32_t ServerModTime; /* Last time server changed data */
- uint32_t Group; /* - Not implemented */
- uint32_t SyncCounter; /* - Not implemented */
- uint32_t _64_DataVersion;
- uint32_t LockCount; /* File size */
- uint32_t _64_Length;
- uint32_t spare[1];
-};
-
-/*
- * AFS update file status request (AFS-3 FS/CM Programmer's Ref #5.1.2.4)
- */
-struct AFSStoreStatus {
- uint32_t Mask; /* Mask indicating attributes to change */
-#define AFS_SET_MTIME 0x01 /* Set the mtime */
-#define AFS_SET_OWNER 0x02 /* Set the owner ID */
-#define AFS_SET_GROUP 0x04 /* Set the group ID (unsupported?) */
-#define AFS_SET_MODE 0x08 /* Set the UNIX mode */
-#define AFS_SET_SEG_SIZE 0x10 /* Set the segment size (unsupported) */
- uint32_t ClientModTime; /* Last time client changed data */
- uint32_t Owner; /* Owner ID */
- uint32_t Group; /* - Not implemented */
- uint32_t UnixModeBits; /* UNIX file mode mask */
- uint32_t SegSize; /* - Not implemented */
-};
-
-/*
- * AFS volume synchronisation information (AFS-3 FS/CM Programmer's Ref #5.1.2.2)
- */
-struct AFSVolSync {
- uint32_t creation; /* Volume creation time */
- uint32_t spare[5];
-};
-
-/*
- * AFS volume status record (AFS-3 FS/CM Programmer's Ref #5.1.2.8)
- */
-struct AFSFetchVolumeStatus {
- uint32_t Vid; /* Volume ID */
- uint32_t ParentId; /* Parent volume ID */
- uint8_t Online; /* True if volume currently online and available */
- uint8_t InService; /* True if volume currently in service */
- uint8_t Blessed; /* Same as in_service */
- uint8_t NeedsSalvage; /* True if consistency checking required */
- uint32_t Type; /* Volume type (afs_voltype_t) */
- uint32_t MinQuota; /* Minimum space set aside (blocks) */
- uint32_t MaxQuota; /* Maximum space this volume may occupy (blocks) */
- uint32_t BlocksInUse; /* Space this volume currently occupies (blocks) */
- uint32_t PartBlocksAvail; /* Space available in volume's partition */
- uint32_t PartMaxBlocks; /* Size of volume's partition */
-};
-
-/*
- * AFS volume status update request (AFS-3 FS/CM Programmer's Ref #5.1.2.9)
- */
-struct AFSStoreVolumeStatus {
- uint32_t Mask; /* Mask indicating attributes to change */
- uint32_t MinQuota; /* Minimum space set aside (blocks) */
- uint32_t MaxQuota; /* Maximum space this volume may occupy (blocks) */
-};
-
-#define AFS_BLOCK_SIZE 1024
-
-/*
- * Fetch the status information for a file object (AFS-3 FS/CM Programmer's Ref #5.1.3.2)
- *
- * Operation: FSFETCHSTATUS
- */
-extern int RXAFS_FetchStatus(
- struct rx_connection *z_conn,
- /*IN*/ const struct AFSFid *a_fidToStatP,
- /*OUT*/ struct AFSFetchStatus *a_currStatP,
- /*OUT*/ struct AFSCallBack *a_callBackP,
- /*OUT*/ struct AFSVolSync *a_volSyncP);
-
-#endif /* AFS_FS_H */
+++ /dev/null
-/* AFS Authentication Service client interface
- *
- * Copyright (C) 2014 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * 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.
- */
-
-#ifndef AFS_KA_H
-#define AFS_KA_H
-
-#include "afs.h"
-
-#define AFS_KA_PORT 7004 /* Authentication service port */
-#define KA_SERVICE 731 /* RxRPC service ID */
-#define KA_TICKET_GRANTING_SERVICE 732
-
-enum AFSVL_Operations {
- KAA_Authenticate = 21,
- KAA_AuthenticateV2 = 22,
- KAT_GetToken = 23,
-};
-
-/*
- * rpc_authentication.c
- */
-extern int afs_KA_call(struct sockaddr_rxrpc *srx,
- const void *request, size_t reqlen, void *reply, size_t replen,
- uint32_t *_abort_code);
-extern int afs_KAT_call(struct sockaddr_rxrpc *srx,
- const void *request, size_t reqlen, void *reply, size_t replen,
- uint32_t *_abort_code);
-
-#endif /* AFS_KA_H */
+++ /dev/null
-/* AFS Volume Location Service client interface
- *
- * Copyright (C) 2002, 2007, 2014 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * 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.
- */
-
-#ifndef AFS_VL_H
-#define AFS_VL_H
-
-#include "afs.h"
-
-#define AFS_VL_PORT 7003 /* volume location service port */
-#define VL_SERVICE 52 /* RxRPC service ID for the Volume Location service */
-
-enum AFSVL_Operations {
- VLCREATEENTRY = 501, /* AFS Create VLDB entry */
- VLDELETEENTRY = 502, /* AFS Delete VLDB entry */
- VLGETENTRYBYID = 503, /* AFS Get Cache Entry By ID operation ID */
- VLGETENTRYBYNAME = 504, /* AFS Get Cache Entry By Name operation ID */
- VLGETNEWVOLUMEID = 505, /* AFS Generate a new volume ID */
- VLPROBE = 514, /* AFS Probe Volume Location Service operation ID */
-};
-
-enum AFSVL_Errors {
- AFSVL_IDEXIST = 363520, /* Volume Id entry exists in vl database */
- AFSVL_IO = 363521, /* I/O related error */
- AFSVL_NAMEEXIST = 363522, /* Volume name entry exists in vl database */
- AFSVL_CREATEFAIL = 363523, /* Internal creation failure */
- AFSVL_NOENT = 363524, /* No such entry */
- AFSVL_EMPTY = 363525, /* Vl database is empty */
- AFSVL_ENTDELETED = 363526, /* Entry is deleted (soft delete) */
- AFSVL_BADNAME = 363527, /* Volume name is illegal */
- AFSVL_BADINDEX = 363528, /* Index is out of range */
- AFSVL_BADVOLTYPE = 363529, /* Bad volume type */
- AFSVL_BADSERVER = 363530, /* Illegal server number (out of range) */
- AFSVL_BADPARTITION = 363531, /* Bad partition number */
- AFSVL_REPSFULL = 363532, /* Run out of space for Replication sites */
- AFSVL_NOREPSERVER = 363533, /* No such Replication server site exists */
- AFSVL_DUPREPSERVER = 363534, /* Replication site already exists */
- AFSVL_RWNOTFOUND = 363535, /* Parent R/W entry not found */
- AFSVL_BADREFCOUNT = 363536, /* Illegal Reference Count number */
- AFSVL_SIZEEXCEEDED = 363537, /* Vl size for attributes exceeded */
- AFSVL_BADENTRY = 363538, /* Bad incoming vl entry */
- AFSVL_BADVOLIDBUMP = 363539, /* Illegal max volid increment */
- AFSVL_IDALREADYHASHED = 363540, /* RO/BACK id already hashed */
- AFSVL_ENTRYLOCKED = 363541, /* Vl entry is already locked */
- AFSVL_BADVOLOPER = 363542, /* Bad volume operation code */
- AFSVL_BADRELLOCKTYPE = 363543, /* Bad release lock type */
- AFSVL_RERELEASE = 363544, /* Status report: last release was aborted */
- AFSVL_BADSERVERFLAG = 363545, /* Invalid replication site server flag */
- AFSVL_PERM = 363546, /* No permission access */
- AFSVL_NOMEM = 363547, /* malloc/realloc failed to alloc enough memory */
-};
-
-/*
- * Flags for struct vldbentry (AFS-3 Vol/VL Server Spec #3.2.6).
- */
-#define AFS_VLF_RWEXISTS 0x1000 /* R/W volume exists */
-#define AFS_VLF_ROEXISTS 0x2000 /* R/O volume exists */
-#define AFS_VLF_BACKEXISTS 0x4000 /* backup volume exists */
-
-#define AFS_VLSF_NEWREPSITE 0x0001 /* unused */
-#define AFS_VLSF_ROVOL 0x0002 /* this server holds a R/O instance of the volume */
-#define AFS_VLSF_RWVOL 0x0004 /* this server holds a R/W instance of the volume */
-#define AFS_VLSF_BACKVOL 0x0008 /* this server holds a backup instance of the volume */
-
-/*
- * AFS Volume Location Database entry (AFS-3 Vol/VL Server Spec #3.3.1).
- */
-struct vldbentry {
- char name[MAXNAMELEN]; /* The volume name */
- uint32_t volumeType; /* The volume type */
- uint32_t nServers; /* The number of servers having an instance */
- uint32_t serverNumber[MAXNSERVERS]; /* Server addresses */
- uint32_t serverPartition[MAXNSERVERS]; /* Partition ID on corresponding servers */
- uint32_t serverFlags[MAXNSERVERS]; /* Flags for corresponding servers */
- uint32_t volumeId[MAXTYPES]; /* Volume ID for each type */
- uint32_t cloneId; /* Cloning operation ID */
- uint32_t flags; /* Flags indicating presence of fields */
-};
-
-/*
- * AFS Volume Location Database entry update request (AFS-3 Vol/VL Server Spec #3.3.5).
- */
-struct VldbUpdateEntry {
- uint32_t Mask; /* Bit mask indicating fields to be affected */
- char name[MAXNAMELEN]; /* The volume name */
- uint32_t volumeType; /* The volume type */
- uint32_t flags; /* Used in conjunction with Mask to select valid fields */
- uint32_t ReadOnlyId; /* The read-only ID */
- uint32_t BackupId; /* The backup ID */
- uint32_t cloneId; /* The clone ID */
- uint32_t nModifiedRepsites; /* Number of replication site entries to be changed */
- uint32_t RepsitesMask[MAXNSERVERS]; /* Bit mask for each rep site */
- uint32_t RepsitesTargetServer[MAXNSERVERS]; /* Target servers */
- uint32_t RepsitesTargetPart[MAXNSERVERS]; /* Target server partitions */
- uint32_t RepsitesNewServer[MAXNSERVERS]; /* New server sites */
- uint32_t RepsitesNewPart[MAXNSERVERS]; /* New server partitions */
- uint32_t RepsitesNewFlags[MAXNSERVERS]; /* Flags applying to each new site */
-};
-
-/*
- * AFS VLDB list query by-attribute filter (AFS-3 Vol/VL Server Spec #3.3.6).
- */
-struct VldbListByAttributes {
- uint32_t Mask; /* Bit mask used to select attr fields to match */
- uint32_t server; /* The server address to match */
- uint32_t partition; /* The partition ID to match */
- uint32_t volumetype; /* The volume type to match */
- uint32_t volumeid; /* The volume ID to match */
- uint32_t flag; /* Flags concerning these values */
-};
-
-/*
- * Create a VLDB entry (AFS-3 Vol/VL Server Spec #3.6.1)
- *
- * Operation: VLCREATEENTRY
- */
-extern int VL_CreateEntry(
- struct rx_connection *z_conn,
- /*IN*/ const struct vldbentry *newentry);
-
-/*
- * Delete a VLDB entry (AFS-3 Vol/VL Server Spec #3.6.2)
- *
- * Operation: VLDELETEENTRY
- */
-extern int VL_DeleteEntry(
- struct rx_connection *z_conn,
- /*IN*/ uint32_t Volid,
- /*IN*/ uint32_t voltype);
-
-/*
- * Get a VLDB entry by ID/type (AFS-3 Vol/VL Server Spec #3.6.3)
- *
- * Operation: VLGETENTRYBYID
- */
-extern int VL_GetEntryByID(
- struct rx_connection *z_conn,
- /*IN*/ uint32_t Volid,
- /*IN*/ uint32_t voltype,
- /*OUT*/ struct vldbentry *entry);
-
-/*
- * Get a VLDB entry by volume name (AFS-3 Vol/VL Server Spec #3.6.4)
- *
- * Operation: VLGETENTRYBYNAME
- */
-extern int VL_GetEntryByName(
- struct rx_connection *z_conn,
- /*IN*/ const char *volumename, /* Max MAXNAMELEN */
- /*OUT*/ struct vldbentry *entry);
-
-/*
- * Generate a new volume ID (AFS-3 Vol/VL Server Spec #3.6.5)
- *
- * Operation: VLGETNEWVOLUMEID
- */
-extern int VL_GetNewVolumeId(
- struct rx_connection *z_conn,
- /*IN*/ uint32_t bumpcount,
- /*OUT*/ uint32_t *newvolumid);
-
-/*
- * Probe an AFS VL server (AFS-3 Vol/VL Server Spec #3.6.14)
- *
- * Operation: VLPROBE
- */
-extern int VL_Probe(
- struct rx_connection *z_conn);
-
-#endif /* AFS_VL_H */
+++ /dev/null
-/*
- * See Documentation/circular-buffers.txt for more information.
- */
-
-#ifndef _LINUX_CIRC_BUF_H
-#define _LINUX_CIRC_BUF_H 1
-
-/* Return count in buffer. */
-#define CIRC_CNT(head,tail,size) (((head) - (tail)) & ((size)-1))
-
-/* Return space available, 0..size-1. We always leave one free char
- as a completely full buffer has head == tail, which is the same as
- empty. */
-#define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size))
-
-/* Return count up to the end of the buffer. Carefully avoid
- accessing head and tail more than once, so they can change
- underneath us without returning inconsistent results. */
-#define CIRC_CNT_TO_END(head,tail,size) \
- ({int end = (size) - (tail); \
- int n = ((head) + end) & ((size)-1); \
- n < end ? n : end;})
-
-/* Return space available up to the end of the buffer. */
-#define CIRC_SPACE_TO_END(head,tail,size) \
- ({int end = (size) - 1 - (head); \
- int n = (end + (tail)) & ((size)-1); \
- n <= end ? n : end+1;})
-
-#endif /* _LINUX_CIRC_BUF_H */