Linux Audio

Check our new training course

Loading...
v6.9.4
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/* AFS Volume Location Service client interface
  3 *
  4 * Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved.
  5 * Written by David Howells (dhowells@redhat.com)
  6 */
  7
  8#ifndef AFS_VL_H
  9#define AFS_VL_H
 10
 11#include "afs.h"
 12
 13#define AFS_VL_PORT		7003	/* volume location service port */
 14#define VL_SERVICE		52	/* RxRPC service ID for the Volume Location service */
 15#define YFS_VL_SERVICE		2503	/* Service ID for AuriStor upgraded VL service */
 16
 17enum AFSVL_Operations {
 18	VLGETENTRYBYID		= 503,	/* AFS Get VLDB entry by ID */
 19	VLGETENTRYBYNAME	= 504,	/* AFS Get VLDB entry by name */
 20	VLPROBE			= 514,	/* AFS probe VL service */
 21	VLGETENTRYBYIDU		= 526,	/* AFS Get VLDB entry by ID (UUID-variant) */
 22	VLGETENTRYBYNAMEU	= 527,	/* AFS Get VLDB entry by name (UUID-variant) */
 23	VLGETADDRSU		= 533,	/* AFS Get addrs for fileserver */
 24	YVLGETENDPOINTS		= 64002, /* YFS Get endpoints for file/volume server */
 25	YVLGETCELLNAME		= 64014, /* YFS Get actual cell name */
 26	VLGETCAPABILITIES	= 65537, /* AFS Get server capabilities */
 27};
 28
 29enum AFSVL_Errors {
 30	AFSVL_IDEXIST 		= 363520,	/* Volume Id entry exists in vl database */
 31	AFSVL_IO 		= 363521,	/* I/O related error */
 32	AFSVL_NAMEEXIST 	= 363522,	/* Volume name entry exists in vl database */
 33	AFSVL_CREATEFAIL 	= 363523,	/* Internal creation failure */
 34	AFSVL_NOENT 		= 363524,	/* No such entry */
 35	AFSVL_EMPTY 		= 363525,	/* Vl database is empty */
 36	AFSVL_ENTDELETED 	= 363526,	/* Entry is deleted (soft delete) */
 37	AFSVL_BADNAME 		= 363527,	/* Volume name is illegal */
 38	AFSVL_BADINDEX 		= 363528,	/* Index is out of range */
 39	AFSVL_BADVOLTYPE 	= 363529,	/* Bad volume type */
 40	AFSVL_BADSERVER 	= 363530,	/* Illegal server number (out of range) */
 41	AFSVL_BADPARTITION 	= 363531,	/* Bad partition number */
 42	AFSVL_REPSFULL 		= 363532,	/* Run out of space for Replication sites */
 43	AFSVL_NOREPSERVER 	= 363533,	/* No such Replication server site exists */
 44	AFSVL_DUPREPSERVER 	= 363534,	/* Replication site already exists */
 45	AFSVL_RWNOTFOUND 	= 363535,	/* Parent R/W entry not found */
 46	AFSVL_BADREFCOUNT 	= 363536,	/* Illegal Reference Count number */
 47	AFSVL_SIZEEXCEEDED 	= 363537,	/* Vl size for attributes exceeded */
 48	AFSVL_BADENTRY 		= 363538,	/* Bad incoming vl entry */
 49	AFSVL_BADVOLIDBUMP 	= 363539,	/* Illegal max volid increment */
 50	AFSVL_IDALREADYHASHED 	= 363540,	/* RO/BACK id already hashed */
 51	AFSVL_ENTRYLOCKED 	= 363541,	/* Vl entry is already locked */
 52	AFSVL_BADVOLOPER 	= 363542,	/* Bad volume operation code */
 53	AFSVL_BADRELLOCKTYPE 	= 363543,	/* Bad release lock type */
 54	AFSVL_RERELEASE 	= 363544,	/* Status report: last release was aborted */
 55	AFSVL_BADSERVERFLAG 	= 363545,	/* Invalid replication site server flag */
 56	AFSVL_PERM 		= 363546,	/* No permission access */
 57	AFSVL_NOMEM 		= 363547,	/* malloc/realloc failed to alloc enough memory */
 58};
 59
 60enum {
 61	YFS_SERVER_INDEX	= 0,
 62	YFS_SERVER_UUID		= 1,
 63	YFS_SERVER_ENDPOINT	= 2,
 64};
 65
 66enum {
 67	YFS_ENDPOINT_IPV4	= 0,
 68	YFS_ENDPOINT_IPV6	= 1,
 69};
 70
 71#define YFS_MAXENDPOINTS	16
 72
 73/*
 74 * maps to "struct vldbentry" in vvl-spec.pdf
 75 */
 76struct afs_vldbentry {
 77	char		name[65];		/* name of volume (with NUL char) */
 78	afs_voltype_t	type;			/* volume type */
 79	unsigned	num_servers;		/* num servers that hold instances of this vol */
 80	unsigned	clone_id;		/* cloning ID */
 81
 82	unsigned	flags;
 83#define AFS_VLF_RWEXISTS	0x1000		/* R/W volume exists */
 84#define AFS_VLF_ROEXISTS	0x2000		/* R/O volume exists */
 85#define AFS_VLF_BACKEXISTS	0x4000		/* backup volume exists */
 86
 87	afs_volid_t	volume_ids[3];		/* volume IDs */
 88
 89	struct {
 90		struct in_addr	addr;		/* server address */
 91		unsigned	partition;	/* partition ID on this server */
 92		unsigned	flags;		/* server specific flags */
 93#define AFS_VLSF_NEWREPSITE	0x0001	/* Ignore all 'non-new' servers */
 94#define AFS_VLSF_ROVOL		0x0002	/* this server holds a R/O instance of the volume */
 95#define AFS_VLSF_RWVOL		0x0004	/* this server holds a R/W instance of the volume */
 96#define AFS_VLSF_BACKVOL	0x0008	/* this server holds a backup instance of the volume */
 97#define AFS_VLSF_UUID		0x0010	/* This server is referred to by its UUID */
 98#define AFS_VLSF_DONTUSE	0x0020	/* This server ref should be ignored */
 99	} servers[8];
100};
101
102#define AFS_VLDB_MAXNAMELEN 65
103
104
105struct afs_ListAddrByAttributes__xdr {
106	__be32			Mask;
107#define AFS_VLADDR_IPADDR	0x1	/* Match by ->ipaddr */
108#define AFS_VLADDR_INDEX	0x2	/* Match by ->index */
109#define AFS_VLADDR_UUID		0x4	/* Match by ->uuid */
110	__be32			ipaddr;
111	__be32			index;
112	__be32			spare;
113	struct afs_uuid__xdr	uuid;
114};
115
116struct afs_uvldbentry__xdr {
117	__be32			name[AFS_VLDB_MAXNAMELEN];
118	__be32			nServers;
119	struct afs_uuid__xdr	serverNumber[AFS_NMAXNSERVERS];
120	__be32			serverUnique[AFS_NMAXNSERVERS];
121	__be32			serverPartition[AFS_NMAXNSERVERS];
122	__be32			serverFlags[AFS_NMAXNSERVERS];
123	__be32			volumeId[AFS_MAXTYPES];
124	__be32			cloneId;
125	__be32			flags;
126	__be32			spares1;
127	__be32			spares2;
128	__be32			spares3;
129	__be32			spares4;
130	__be32			spares5;
131	__be32			spares6;
132	__be32			spares7;
133	__be32			spares8;
134	__be32			spares9;
135};
136
137struct afs_address_list {
138	refcount_t		usage;
139	unsigned int		version;
140	unsigned int		nr_addrs;
141	struct sockaddr_rxrpc	addrs[];
142};
143
144extern void afs_put_address_list(struct afs_address_list *alist);
145
146#endif /* AFS_VL_H */
v6.2
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/* AFS Volume Location Service client interface
  3 *
  4 * Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved.
  5 * Written by David Howells (dhowells@redhat.com)
  6 */
  7
  8#ifndef AFS_VL_H
  9#define AFS_VL_H
 10
 11#include "afs.h"
 12
 13#define AFS_VL_PORT		7003	/* volume location service port */
 14#define VL_SERVICE		52	/* RxRPC service ID for the Volume Location service */
 15#define YFS_VL_SERVICE		2503	/* Service ID for AuriStor upgraded VL service */
 16
 17enum AFSVL_Operations {
 18	VLGETENTRYBYID		= 503,	/* AFS Get VLDB entry by ID */
 19	VLGETENTRYBYNAME	= 504,	/* AFS Get VLDB entry by name */
 20	VLPROBE			= 514,	/* AFS probe VL service */
 21	VLGETENTRYBYIDU		= 526,	/* AFS Get VLDB entry by ID (UUID-variant) */
 22	VLGETENTRYBYNAMEU	= 527,	/* AFS Get VLDB entry by name (UUID-variant) */
 23	VLGETADDRSU		= 533,	/* AFS Get addrs for fileserver */
 24	YVLGETENDPOINTS		= 64002, /* YFS Get endpoints for file/volume server */
 25	YVLGETCELLNAME		= 64014, /* YFS Get actual cell name */
 26	VLGETCAPABILITIES	= 65537, /* AFS Get server capabilities */
 27};
 28
 29enum AFSVL_Errors {
 30	AFSVL_IDEXIST 		= 363520,	/* Volume Id entry exists in vl database */
 31	AFSVL_IO 		= 363521,	/* I/O related error */
 32	AFSVL_NAMEEXIST 	= 363522,	/* Volume name entry exists in vl database */
 33	AFSVL_CREATEFAIL 	= 363523,	/* Internal creation failure */
 34	AFSVL_NOENT 		= 363524,	/* No such entry */
 35	AFSVL_EMPTY 		= 363525,	/* Vl database is empty */
 36	AFSVL_ENTDELETED 	= 363526,	/* Entry is deleted (soft delete) */
 37	AFSVL_BADNAME 		= 363527,	/* Volume name is illegal */
 38	AFSVL_BADINDEX 		= 363528,	/* Index is out of range */
 39	AFSVL_BADVOLTYPE 	= 363529,	/* Bad volume type */
 40	AFSVL_BADSERVER 	= 363530,	/* Illegal server number (out of range) */
 41	AFSVL_BADPARTITION 	= 363531,	/* Bad partition number */
 42	AFSVL_REPSFULL 		= 363532,	/* Run out of space for Replication sites */
 43	AFSVL_NOREPSERVER 	= 363533,	/* No such Replication server site exists */
 44	AFSVL_DUPREPSERVER 	= 363534,	/* Replication site already exists */
 45	AFSVL_RWNOTFOUND 	= 363535,	/* Parent R/W entry not found */
 46	AFSVL_BADREFCOUNT 	= 363536,	/* Illegal Reference Count number */
 47	AFSVL_SIZEEXCEEDED 	= 363537,	/* Vl size for attributes exceeded */
 48	AFSVL_BADENTRY 		= 363538,	/* Bad incoming vl entry */
 49	AFSVL_BADVOLIDBUMP 	= 363539,	/* Illegal max volid increment */
 50	AFSVL_IDALREADYHASHED 	= 363540,	/* RO/BACK id already hashed */
 51	AFSVL_ENTRYLOCKED 	= 363541,	/* Vl entry is already locked */
 52	AFSVL_BADVOLOPER 	= 363542,	/* Bad volume operation code */
 53	AFSVL_BADRELLOCKTYPE 	= 363543,	/* Bad release lock type */
 54	AFSVL_RERELEASE 	= 363544,	/* Status report: last release was aborted */
 55	AFSVL_BADSERVERFLAG 	= 363545,	/* Invalid replication site server flag */
 56	AFSVL_PERM 		= 363546,	/* No permission access */
 57	AFSVL_NOMEM 		= 363547,	/* malloc/realloc failed to alloc enough memory */
 58};
 59
 60enum {
 61	YFS_SERVER_INDEX	= 0,
 62	YFS_SERVER_UUID		= 1,
 63	YFS_SERVER_ENDPOINT	= 2,
 64};
 65
 66enum {
 67	YFS_ENDPOINT_IPV4	= 0,
 68	YFS_ENDPOINT_IPV6	= 1,
 69};
 70
 71#define YFS_MAXENDPOINTS	16
 72
 73/*
 74 * maps to "struct vldbentry" in vvl-spec.pdf
 75 */
 76struct afs_vldbentry {
 77	char		name[65];		/* name of volume (with NUL char) */
 78	afs_voltype_t	type;			/* volume type */
 79	unsigned	num_servers;		/* num servers that hold instances of this vol */
 80	unsigned	clone_id;		/* cloning ID */
 81
 82	unsigned	flags;
 83#define AFS_VLF_RWEXISTS	0x1000		/* R/W volume exists */
 84#define AFS_VLF_ROEXISTS	0x2000		/* R/O volume exists */
 85#define AFS_VLF_BACKEXISTS	0x4000		/* backup volume exists */
 86
 87	afs_volid_t	volume_ids[3];		/* volume IDs */
 88
 89	struct {
 90		struct in_addr	addr;		/* server address */
 91		unsigned	partition;	/* partition ID on this server */
 92		unsigned	flags;		/* server specific flags */
 93#define AFS_VLSF_NEWREPSITE	0x0001	/* Ignore all 'non-new' servers */
 94#define AFS_VLSF_ROVOL		0x0002	/* this server holds a R/O instance of the volume */
 95#define AFS_VLSF_RWVOL		0x0004	/* this server holds a R/W instance of the volume */
 96#define AFS_VLSF_BACKVOL	0x0008	/* this server holds a backup instance of the volume */
 97#define AFS_VLSF_UUID		0x0010	/* This server is referred to by its UUID */
 98#define AFS_VLSF_DONTUSE	0x0020	/* This server ref should be ignored */
 99	} servers[8];
100};
101
102#define AFS_VLDB_MAXNAMELEN 65
103
104
105struct afs_ListAddrByAttributes__xdr {
106	__be32			Mask;
107#define AFS_VLADDR_IPADDR	0x1	/* Match by ->ipaddr */
108#define AFS_VLADDR_INDEX	0x2	/* Match by ->index */
109#define AFS_VLADDR_UUID		0x4	/* Match by ->uuid */
110	__be32			ipaddr;
111	__be32			index;
112	__be32			spare;
113	struct afs_uuid__xdr	uuid;
114};
115
116struct afs_uvldbentry__xdr {
117	__be32			name[AFS_VLDB_MAXNAMELEN];
118	__be32			nServers;
119	struct afs_uuid__xdr	serverNumber[AFS_NMAXNSERVERS];
120	__be32			serverUnique[AFS_NMAXNSERVERS];
121	__be32			serverPartition[AFS_NMAXNSERVERS];
122	__be32			serverFlags[AFS_NMAXNSERVERS];
123	__be32			volumeId[AFS_MAXTYPES];
124	__be32			cloneId;
125	__be32			flags;
126	__be32			spares1;
127	__be32			spares2;
128	__be32			spares3;
129	__be32			spares4;
130	__be32			spares5;
131	__be32			spares6;
132	__be32			spares7;
133	__be32			spares8;
134	__be32			spares9;
135};
136
137struct afs_address_list {
138	refcount_t		usage;
139	unsigned int		version;
140	unsigned int		nr_addrs;
141	struct sockaddr_rxrpc	addrs[];
142};
143
144extern void afs_put_address_list(struct afs_address_list *alist);
145
146#endif /* AFS_VL_H */