1
2
3
4
5
6
7
8#ifndef AFS_VL_H
9#define AFS_VL_H
10
11#include "afs.h"
12
13#define AFS_VL_PORT 7003
14#define VL_SERVICE 52
15#define YFS_VL_SERVICE 2503
16
17enum AFSVL_Operations {
18 VLGETENTRYBYID = 503,
19 VLGETENTRYBYNAME = 504,
20 VLPROBE = 514,
21 VLGETENTRYBYIDU = 526,
22 VLGETENTRYBYNAMEU = 527,
23 VLGETADDRSU = 533,
24 YVLGETENDPOINTS = 64002,
25 YVLGETCELLNAME = 64014,
26 VLGETCAPABILITIES = 65537,
27};
28
29enum AFSVL_Errors {
30 AFSVL_IDEXIST = 363520,
31 AFSVL_IO = 363521,
32 AFSVL_NAMEEXIST = 363522,
33 AFSVL_CREATEFAIL = 363523,
34 AFSVL_NOENT = 363524,
35 AFSVL_EMPTY = 363525,
36 AFSVL_ENTDELETED = 363526,
37 AFSVL_BADNAME = 363527,
38 AFSVL_BADINDEX = 363528,
39 AFSVL_BADVOLTYPE = 363529,
40 AFSVL_BADSERVER = 363530,
41 AFSVL_BADPARTITION = 363531,
42 AFSVL_REPSFULL = 363532,
43 AFSVL_NOREPSERVER = 363533,
44 AFSVL_DUPREPSERVER = 363534,
45 AFSVL_RWNOTFOUND = 363535,
46 AFSVL_BADREFCOUNT = 363536,
47 AFSVL_SIZEEXCEEDED = 363537,
48 AFSVL_BADENTRY = 363538,
49 AFSVL_BADVOLIDBUMP = 363539,
50 AFSVL_IDALREADYHASHED = 363540,
51 AFSVL_ENTRYLOCKED = 363541,
52 AFSVL_BADVOLOPER = 363542,
53 AFSVL_BADRELLOCKTYPE = 363543,
54 AFSVL_RERELEASE = 363544,
55 AFSVL_BADSERVERFLAG = 363545,
56 AFSVL_PERM = 363546,
57 AFSVL_NOMEM = 363547,
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
75
76struct afs_vldbentry {
77 char name[65];
78 afs_voltype_t type;
79 unsigned num_servers;
80 unsigned clone_id;
81
82 unsigned flags;
83#define AFS_VLF_RWEXISTS 0x1000
84#define AFS_VLF_ROEXISTS 0x2000
85#define AFS_VLF_BACKEXISTS 0x4000
86
87 afs_volid_t volume_ids[3];
88
89 struct {
90 struct in_addr addr;
91 unsigned partition;
92 unsigned flags;
93#define AFS_VLSF_NEWREPSITE 0x0001
94#define AFS_VLSF_ROVOL 0x0002
95#define AFS_VLSF_RWVOL 0x0004
96#define AFS_VLSF_BACKVOL 0x0008
97#define AFS_VLSF_UUID 0x0010
98#define AFS_VLSF_DONTUSE 0x0020
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
108#define AFS_VLADDR_INDEX 0x2
109#define AFS_VLADDR_UUID 0x4
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
147