*** empty log message ***
[arla.git] / rxdef / pts.xg
blobc54800c78636c8b064dcb3bfb50afac1064be50a
1 /* This is -*-c-*- */
3 /*
4  * Copyright (c) 1998 - 2002 Kungliga Tekniska Högskolan
5  * (Royal Institute of Technology, Stockholm, Sweden).
6  * All rights reserved.
7  * 
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  * 
19  * 3. Neither the name of the Institute nor the names of its contributors
20  *    may be used to endorse or promote products derived from this software
21  *    without specific prior written permission.
22  * 
23  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33  * SUCH DAMAGE.
34  */
37  * Interface to PTS
38  */
40 package PR_
42 %#include <fs_errors.h>
44 error-function conv_to_arla_errno
47  * Interface
48  */
51 /* Opcodes */
53 const PRINEWUSER = 500;
54 const PRWHEREISIT = 501;
55 const PRDUMPENTRY = 502;
56 const PRADDTOGROUP = 503;
57 const PRNAMETOUID = 504;
58 const PRIDTONAME = 505;
59 const PRDELETE = 506;
60 const PRREMOVEFROMGROUP = 507;
61 const PRGETCPS = 508;
62 const PRNEWENTRY = 509;
63 const PRLISTMAX = 510;
64 const PRSETMAX = 511;
65 const PRLISTENTRY = 512;
66 const PRCHANGEENTRY = 513;
67 const PRLISTELEMENTS = 514;
68 const PROSAMEMBEROF = 515;
69 const PRSETFIELDSENTRY = 516;
70 const PRLISTOWNED = 517;
71 const PRGETCPS2 = 518;
72 const PRGETHOSTCPS = 519;
74 /* Constants */
76 const PR_MAXNAMELEN = 64;
77 const PR_MAXGROUPS = 5000;
78 const PR_MAXLIST = 5000;
79 const PRSIZE = 10;
80 const COSIZE = 39;
81 const PRSRV = 73;
82 const ENTRYSIZE = 192;
83 const HASHSIZE = 8191;
85 const PRDBVERSION = 0;
87 /* Bits for PR_SetFieldsEntry() */
89 const PR_SF_NGROUPS = 0x80000000;
90 const PR_SF_NUSERS = 0x40000000;
91 const PR_SF_ALLBITS = 0xff;
93 /* Reserved IDs */
94 const PR_SYSADMINID = -204;
95 const PR_ANYUSERID = -101;
96 const PR_AUTHUSERID = -102;
97 const PR_ANONYMOUSID = 32766;
98 const PR_BADID = 0x80000000;
100 /* Bits for struct prentry flags */
101 const PRTYPE = 0x3f;
102 const PRFREE = 1;
103 const PRGRP = 2;
104 const PRCONT = 4;
105 const PRCELL = 8;
106 const PRFOREIGN = 16;
107 const PRINST = 32;
108 const PRUSER = 0;
110 const PRACCESS = 0x40;
111 const PRQUOTA = 0x80;
113 /* Privacy Bits */
115 const PRP_REMOVE_MEM = 0x010000;
116 const PRP_ADD_MEM    = 0x020000;
117 const PRP_ADD_ANY    = 0x040000;
118 const PRP_MEMBER_MEM = 0x080000;
119 const PRP_MEMBER_ANY = 0x100000;
120 const PRP_OWNED_ANY  = 0x200000;
121 const PRP_STATUS_MEM = 0x400000;
122 const PRP_STATUS_ANY = 0x800000;
124 /* Misc */
125 const PRSUCCESS = 0;
126 const PR_REMEMBER_TIMES = 1;
129 struct prheader {
130     long version;
131     long headerSize;
132     long freePtr;
133     long eofPtr;
134     long maxGroup;
135     long maxID;
136     long maxForeign;
137     long maxInst;
138     long orphan;
139     long usercount;
140     long groupcount;
141     long foreigncount;
142     long instcount;
143     long reserved[5];
144     long nameHash[HASHSIZE];
145     long idHash[HASHSIZE];
148 struct prheader_disk {
149     long version;
150     long headerSize;
151     long maxGroup;
152     long maxID;
153     long orphan<>;
154     long usercount;
155     long groupcount;
158 struct prentry {
159     long flags;
160     long id;
161     long cellid;
162     long next;
163     long reserved[5];
164     long entries[PRSIZE];
165     long nextID;
166     long nextName;
167     long owner;
168     long creator;
169     long ngroups;
170     long nusers;
171     long count;
172     long instance;
173     long owned;
174     long nextOwned;
175     long parent;
176     long sibling;
177     long child;
178     char name[PR_MAXNAMELEN];
181 struct prentry_disk {
182     long flags;
183     long id;
184     long cellid;
185     long owner;
186     long creator;
187     long ngroups;
188     long owned<PR_MAXGROUPS>;
189     string name<PR_MAXNAMELEN>;
190     long entries<PR_MAXGROUPS>;
193 struct prdebugentry {
194     long flags;
195     long id;
196     long cellid;
197     long next;
198     long reserved[5];
199     long entries[PRSIZE];
200     long nextID;
201     long nextname;
202     long owner;
203     long creator;
204     long ngroups;
205     long nusers;
206     long count;
207     long instance;
208     long owned;
209     long nextOwned;
210     long parent;
211     long sibling;
212     long child;
213     char name[PR_MAXNAMELEN];
216 struct prcheckentry {
217     long flags;
218     long id;
219     long owner;
220     long creator;
221     long ngroups;
222     long nusers;
223     long count;
224     long reserved[5];
225     char name[PR_MAXNAMELEN];
229 typedef char prname[PR_MAXNAMELEN];
231 typedef prname namelist<PR_MAXLIST>;
233 typedef long idlist<PR_MAXLIST>;
235 typedef long prlist<PR_MAXGROUPS>;
238 /* Error codes */
240 const PREXIST        = 267264 ;
241 const PRIDEXIST      = 267265 ;
242 const PRNOIDS        = 267266 ;
243 const PRDBFAIL       = 267267 ;
244 const PRNOENT        = 267268 ;
245 const PRPERM         = 267269 ;
246 const PRNOTGROUP     = 267270 ;
247 const PRNOTUSER      = 267271 ;
248 const PRBADNAM       = 267272 ;
249 const PRBADARG       = 267273 ;
250 const PRNOMORE       = 267274 ;
251 const PRDBBAD        = 267275 ;
252 const PRGROUPEMPTY   = 267276 ;
253 const PRINCONSISTENT = 267277 ;
254 const PRBADDR        = 267278 ;
255 const PRTOOMANY      = 267279 ;
258 NameToID(IN namelist *nlist,
259          OUT idlist *ilist) = 504;
261 IDToName(IN idlist *ilist,
262          OUT namelist *nlist) = 505;
264 NewEntry(IN string name<PR_MAXNAMELEN>,
265          IN long flag,
266          IN long oid,
267          OUT long *id) = 509;
269 INewEntry(IN string name<PR_MAXNAMELEN>,
270           IN long id,
271           IN long oid) = 500;
273 ListEntry(IN long id,
274           OUT struct prcheckentry *entry) = 512;
276 DumpEntry(IN long pos,
277           OUT struct prdebugentry *entry) = 502;
279 ChangeEntry(IN long id,
280             IN string name<PR_MAXNAMELEN>,
281             IN long oid,
282             IN long newid) = 513;
284 SetFieldsEntry(IN long id,
285                IN long mask,
286                IN long flags,
287                IN long ngroups,
288                IN long nusers,
289                IN long spare1,
290                IN long spare2) = 516;
293  * Group/entries that can't be deleted: SYSADMINID, ANYUSERID,
294  * AUTHUSERID, ANONYMOUSID. Error returned is PRPERM.
296  * Rights: member of SYSADMINID, or owner to entry, or member of the
297  * owner to `id'.
299  * Success: PRSUCCESS.
300  */
302 Delete(IN long id) = 506;
304 WhereIsIt(IN long id,
305           OUT long *ps) = 501;
307 AddToGroup(IN long uid,
308            IN long gid) = 503;
310 RemoveFromGroup(IN long id,
311                 IN long gid) = 507;
313 ListMax(OUT long *uid,
314         OUT long *gid) = 510;
316 SetMax(IN long uid,
317        IN long gflag) = 511;
319 ListElements(IN long id,
320              OUT prlist *elist,
321              OUT long *over) = 514;
323 GetCPS(IN long id,
324        OUT prlist *elist,
325        OUT long *over) = 508;
327 ListOwned(IN long id,
328           OUT prlist *elist,
329           INOUT long *over) = 517;
331 IsAMemberOf(IN long uid,
332             IN long gid,
333             OUT long *flag) = 515;
335 GetCPS2(IN long id,
336         IN long host,
337         OUT prlist *elist,
338         OUT long *over) = 518;
340 GetHostCPS(IN long host,
341            OUT prlist *elist,
342            OUT long *over) = 519;
345 /* the end */