]> andersk Git - moira.git/blob - server/queries2.c
Add sponsor_type/sponsor_id column to users table, and client support for manipulatin...
[moira.git] / server / queries2.c
1 /* $Id$
2  *
3  * This file defines the query dispatch table
4  *
5  * Copyright (C) 1987-1998 by the Massachusetts Institute of Technology.
6  * For copying and distribution information, please see the file
7  * <mit-copyright.h>.
8  */
9
10 #include <mit-copyright.h>
11 #include "mr_server.h"
12 #include "query.h"
13
14 #include "mr_et.h"
15
16 /* VALOBJS
17  * These are commonly used validation objects, defined here so that they
18  * can be shared.
19  */
20
21 static struct valobj VOuser0[] = {
22   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
23 };
24
25 static struct valobj VOmach0[] = {
26   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
27 };
28
29 static struct valobj VOclu0[] = {
30   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
31 };
32
33 static struct valobj VOsnet0[] = {
34   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
35 };
36
37 static struct valobj VOlist0[] = {
38   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
39 };
40
41 static struct valobj VOfilesys0[] = {
42   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
43 };
44
45 static struct valobj VOcon0[] = {
46   {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
47 };
48
49 static struct valobj VOnum0[] = {
50   {V_NUM, 0},
51 };
52
53 /* Validations
54  * Commonly used validation records defined here so that they may
55  * be shared.
56  */
57
58 static struct validate VDmach = { VOmach0, 1 };
59
60 static struct validate VDfix_modby = {
61   0,
62   0,
63   0,
64   0,
65   0,
66   0,
67   0,
68   0,
69   followup_fix_modby,
70 };
71
72 /* Query data */
73
74 static char *galo2_fields[] = {
75   "login", "unix_uid", "shell", "last", "first", "middle",
76 };
77
78 static char *galo_fields[] = {
79   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
80 };
81
82 static char *gual2_fields[] = {
83   "login",
84   "login", "unix_uid", "shell", "last", "first", "middle", "status",
85   "clearid", "class", "comments", "signature", "secure",
86   "modtime", "modby", "modwith",
87 };
88
89 static char *gual3_fields[] = {
90   "login",
91   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
92   "status", "clearid", "class", "comments", "signature", "secure", "modtime",
93   "modby", "modwith", "created", "creator",
94 };
95
96 static char *gual11_fields[] = {
97   "login",
98   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
99   "status", "clearid", "class", "comments", "signature", "secure",
100   "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
101   "creator",
102 };
103
104 static char *gual_fields[] = {
105   "login",
106   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
107   "status", "clearid", "class", "comments", "signature", "secure",
108   "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
109   "modby", "modwith", "created", "creator",
110 };
111
112 static char *gubl2_fields[] = {
113   "login",
114   "login", "unix_uid", "shell", "last", "first", "middle", "status",
115   "clearid", "class", "modtime", "modby", "modwith",
116 };
117
118 static char *gubl_fields[] = {
119   "login",
120   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
121   "status", "clearid", "class", "modtime", "modby", "modwith", "created",
122   "creator", 
123 };
124
125 static struct validate gubl2_validate =
126 {
127   0,
128   0,
129   0,
130   0,
131   0,
132   0,
133   access_login,
134   0,
135   followup_fix_modby,
136 };
137
138 static struct validate gubl_validate =
139 {
140   0,
141   0,
142   0,
143   0,
144   0,
145   0,
146   access_login,
147   0,
148   followup_get_user,
149 };
150
151 static char *guau2_fields[] = {
152   "unix_uid",
153   "login", "unix_uid", "shell", "last", "first", "middle", "status",
154   "clearid", "class", "comments", "signature", "secure",
155   "modtime", "modby", "modwith",
156 };
157
158 static char *guau3_fields[] = {
159   "unix_uid",
160   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
161   "status", "clearid", "class", "comments", "signature", "secure",
162   "modtime", "modby", "modwith", "created", "creator",
163 };
164
165 static char *guau11_fields[] = {
166   "unix_uid",
167   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
168   "status", "clearid", "class", "comments", "signature", "secure", 
169   "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
170   "creator",
171 };
172
173 static char *guau_fields[] = {
174   "unix_uid",
175   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
176   "status", "clearid", "class", "comments", "signature", "secure", 
177   "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
178   "modby", "modwith", "created", "creator",
179 };
180
181 static char *guan2_fields[] = {
182   "first", "last",
183   "login", "unix_uid", "shell", "last", "first", "middle", "status",
184   "clearid", "class", "comments", "signature", "secure",
185   "modtime", "modby", "modwith",
186 };
187
188 static char *guan3_fields[] = {
189   "first", "last",
190   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
191   "status", "clearid", "class", "comments", "signature", "secure",
192   "modtime", "modby", "modwith", "created", "creator",
193 };
194
195 static char *guan11_fields[] = {
196   "first", "last",
197   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
198   "status", "clearid", "class", "comments", "signature", "secure",
199   "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
200   "creator",
201 };
202
203 static char *guan_fields[] = {
204   "first", "last",
205   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
206   "status", "clearid", "class", "comments", "signature", "secure",
207   "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
208   "modby", "modwith", "created", "creator",
209 };
210
211 static struct validate guan2_validate =
212 {
213   0,
214   0,
215   0,
216   0,
217   0,
218   0,
219   0,
220   0,
221   followup_fix_modby,
222 };
223
224 static struct validate guan_validate =
225 {
226   0,
227   0,
228   0,
229   0,
230   0,
231   0,
232   0,
233   0,
234   followup_get_user,
235 };
236
237 static char *guac2_fields[] = {
238   "class",
239   "login", "unix_uid", "shell", "last", "first", "middle", "status",
240   "clearid", "class", "comments", "signature", "secure",
241   "modtime", "modby", "modwith",
242 };
243
244 static char *guac3_fields[] = {
245   "class",
246   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
247   "status", "clearid", "class", "comments", "signature", "secure",
248   "modtime", "modby", "modwith", "created", "creator",
249 };
250
251 static char *guac11_fields[] = {
252   "class",
253   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
254   "status", "clearid", "class", "comments", "signature", "secure",
255   "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
256   "creator",
257 };
258
259 static char *guac_fields[] = {
260   "class",
261   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
262   "status", "clearid", "class", "comments", "signature", "secure",
263   "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime",
264   "modby", "modwith", "created", "creator",
265 };
266
267 static char *guam2_fields[] = {
268   "clearid",
269   "login", "unix_uid", "shell", "last", "first", "middle", "status",
270   "clearid", "class", "comments", "signature", "secure",
271   "modtime", "modby", "modwith",
272 };
273
274 static char *guam3_fields[] = {
275   "clearid",
276   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
277   "status", "clearid", "class", "comments", "signature", "secure",
278   "modtime", "modby", "modwith", "created", "creator", 
279 };
280
281 static char *guam11_fields[] = {
282   "clearid",
283   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
284   "status", "clearid", "class", "comments", "signature", "secure",
285   "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
286   "creator", 
287 };
288
289 static char *guam_fields[] = {
290   "clearid",
291   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
292   "status", "clearid", "class", "comments", "signature", "secure",
293   "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "modtime", 
294   "modby", "modwith", "created", "creator", 
295 };
296
297 static char *guas_fields[] = {
298   "sponsor_type", "sponsor_name",
299   "login",
300 };
301
302 static struct valobj guas_valobj[] = {
303   {V_TYPE, 0, 0, "ace_type", 0, MR_ACE},
304   {V_TYPEDATA, 1, 0, "list_id", 0, MR_ACE},
305 };
306
307 static struct validate guas_validate = {
308   guas_valobj,
309   2,
310   0,
311   0,
312   0,
313   0,
314   access_member,
315   0,
316   get_user_account_by_sponsor,
317 };
318
319 static char *gubu2_fields[] = {
320   "unix_uid",
321   "login", "unix_uid", "shell", "last", "first", "middle", "status",
322   "clearid", "class", "modtime", "modby", "modwith",
323 };
324
325 static char *gubu_fields[] = {
326   "unix_uid",
327   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
328   "status", "clearid", "class", "modtime", "modby", "modwith", "created",
329   "creator",
330 };
331
332 static struct validate gubu2_validate =
333 {
334   VOnum0,
335   1,
336   0,
337   0,
338   0,
339   0,
340   access_login,
341   0,
342   followup_fix_modby,
343 };
344
345 static struct validate gubu_validate =
346 {
347   VOnum0,
348   1,
349   0,
350   0,
351   0,
352   0,
353   access_login,
354   0,
355   followup_get_user,
356 };
357
358 static char *gubn2_fields[] = {
359   "first", "last",
360   "login", "unix_uid", "shell", "last", "first", "middle", "status",
361   "clearid", "class", "modtime", "modby", "modwith",
362 };
363
364 static char *gubn_fields[] = {
365   "first", "last",
366   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
367   "status", "clearid", "class", "modtime", "modby", "modwith", "created",
368   "creator",
369 };
370
371 static struct validate gubn2_validate =
372 {
373   0,
374   0,
375   0,
376   0,
377   0,
378   0,
379   0,
380   0,
381   followup_fix_modby,
382 };
383
384 static struct validate gubn_validate =
385 {
386   0,
387   0,
388   0,
389   0,
390   0,
391   0,
392   0,
393   0,
394   followup_get_user,
395 };
396
397 static char *gubc2_fields[] = {
398   "class",
399   "login", "unix_uid", "shell", "last", "first", "middle", "status",
400   "clearid", "class", "modtime", "modby", "modwith",
401 };
402
403 static char *gubc_fields[] = {
404   "class",
405   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle", 
406   "status", "clearid", "class", "modtime", "modby", "modwith",
407   "created", "creator",
408 };
409
410 static char *gubm2_fields[] = {
411   "clearid",
412   "login", "unix_uid", "shell", "last", "first", "middle", "status",
413   "clearid", "class", "modtime", "modby", "modwith",
414 };
415
416 static char *gubm_fields[] = {
417   "clearid",
418   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", 
419   "middle", "status", "clearid", "class", "modtime", "modby", "modwith",
420   "created", "creator",
421 };
422
423 static char *auac2_fields[] = {
424   "login", "unix_uid", "shell", "last", "first", "middle", "status",
425   "clearid", "class", "comments", "signature", "secure",
426 };
427
428 static char *auac3_fields[] = {
429   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", 
430   "middle", "status", "clearid", "class", "comments", "signature", "secure",
431 };
432
433 static char *auac11_fields[] = {
434   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
435   "status", "clearid", "class", "comments", "signature", "secure",
436   "winhomedir", "winprofiledir",
437 };
438
439 static char *auac_fields[] = {
440   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
441   "status", "clearid", "class", "comments", "signature", "secure",
442   "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name",
443 };
444
445 static struct valobj auac2_valobj[] = {
446   {V_CHAR, 0, USERS_TABLE, "login"},
447   {V_NUM, 1},
448   {V_CHAR, 2, USERS_TABLE, "shell"},
449   {V_CHAR, 3, USERS_TABLE, "last"},
450   {V_CHAR, 4, USERS_TABLE, "first"},
451   {V_CHAR, 5, USERS_TABLE, "middle"},
452   {V_NUM, 6},
453   {V_CHAR, 7, USERS_TABLE, "clearid"},
454   {V_TYPE, 8, 0, "class", 0, MR_BAD_CLASS},
455   {V_ID, 9, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
456   {V_NUM, 11},
457 };
458
459 static struct valobj auac3_valobj[] = {
460   {V_CHAR, 0, USERS_TABLE, "login"},
461   {V_NUM, 1},
462   {V_CHAR, 2, USERS_TABLE, "shell"},
463   {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
464   {V_CHAR, 4, USERS_TABLE, "last"},
465   {V_CHAR, 5, USERS_TABLE, "first"},
466   {V_CHAR, 6, USERS_TABLE, "middle"},
467   {V_NUM, 7},
468   {V_CHAR, 8, USERS_TABLE, "clearid"},
469   {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
470   {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
471   {V_NUM, 12},
472 };
473
474 static struct valobj auac11_valobj[] = {
475   {V_CHAR, 0, USERS_TABLE, "login"},
476   {V_NUM, 1},
477   {V_CHAR, 2, USERS_TABLE, "shell"},
478   {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
479   {V_CHAR, 4, USERS_TABLE, "last"},
480   {V_CHAR, 5, USERS_TABLE, "first"},
481   {V_CHAR, 6, USERS_TABLE, "middle"},
482   {V_NUM, 7},
483   {V_CHAR, 8, USERS_TABLE, "clearid"},
484   {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
485   {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
486   {V_NUM, 12},
487   {V_LEN, 13, USERS_TABLE, "winhomedir"},
488   {V_LEN, 14, USERS_TABLE, "winprofiledir"},
489 };
490
491 static struct valobj auac_valobj[] = {
492   {V_CHAR, 0, USERS_TABLE, "login"},
493   {V_NUM, 1},
494   {V_CHAR, 2, USERS_TABLE, "shell"},
495   {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
496   {V_CHAR, 4, USERS_TABLE, "last"},
497   {V_CHAR, 5, USERS_TABLE, "first"},
498   {V_CHAR, 6, USERS_TABLE, "middle"},
499   {V_NUM, 7},
500   {V_CHAR, 8, USERS_TABLE, "clearid"},
501   {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
502   {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
503   {V_NUM, 12},
504   {V_LEN, 13, USERS_TABLE, "winhomedir"},
505   {V_LEN, 14, USERS_TABLE, "winprofiledir"},
506   {V_TYPE, 15, 0, "ace_type", 0, MR_ACE},
507   {V_TYPEDATA, 16, 0, 0, "list_id", MR_ACE},
508 };
509
510 static struct validate auac2_validate = {
511   auac2_valobj,
512   11,
513   "login",
514   "login = '%s'",
515   1,
516   "users_id",
517   0,
518   setup_ausr,
519   followup_ausr,
520 };
521
522 static struct validate auac3_validate = {
523   auac3_valobj,
524   12,
525   "login",
526   "login = '%s'",
527   1,
528   "users_id",
529   0,
530   setup_ausr,
531   followup_ausr,
532 };
533
534 static struct validate auac11_validate = {
535   auac11_valobj,
536   14,
537   "login",
538   "login = '%s'",
539   1,
540   "users_id",
541   0,
542   setup_ausr,
543   followup_ausr,
544 };
545
546 static struct validate auac_validate = {
547   auac_valobj,
548   16,
549   "login",
550   "login = '%s'",
551   1,
552   "users_id",
553   0,
554   setup_ausr,
555   followup_ausr,
556 };
557
558 static struct validate ausr2_validate = {
559   auac2_valobj,
560   9,
561   "login",
562   "login = '%s'",
563   1,
564   "users_id",
565   0,
566   setup_ausr,
567   followup_ausr,
568 };
569
570 static struct validate ausr3_validate = {
571   auac3_valobj,
572   10,
573   "login",
574   "login = '%s'",
575   1,
576   "users_id",
577   0,
578   setup_ausr,
579   followup_ausr,
580 };
581
582 static struct validate ausr11_validate = {
583   auac11_valobj,
584   12,
585   "login",
586   "login = '%s'",
587   1,
588   "users_id",
589   0,
590   setup_ausr,
591   followup_ausr,
592 };
593
594 static struct validate ausr_validate = {
595   auac_valobj,
596   14,
597   "login",
598   "login = '%s'",
599   1,
600   "users_id",
601   0,
602   setup_ausr,
603   followup_ausr,
604 };
605
606 static char *rusr_fields[] = {
607   "unix_uid", "login", "pobox_type"
608 };
609
610 static struct valobj rusr_valobj[] = {
611   {V_NUM, 0},
612   {V_CHAR, 1, USERS_TABLE, "login"},
613 };
614
615 static struct validate rusr_validate = {
616   rusr_valobj,
617   2,
618   0,
619   0,
620   0,
621   0,
622   0,
623   register_user,
624   0,
625 };
626
627 static char *uuac2_fields[] = {
628   "login",
629   "newlogin", "unix_uid", "shell", "last", "first", "middle", "status",
630   "clearid", "class", "comments", "signature", "secure",
631 };
632
633 static char *uuac3_fields[] = {
634   "login",
635   "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first", 
636   "middle", "status", "clearid", "class", "comments", "signature", "secure",
637 };
638
639 static char *uuac11_fields[] = {
640   "login",
641   "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
642   "middle", "status", "clearid", "class", "comments", "signature", "secure",
643   "winhomedir", "winprofiledir",
644 };
645
646 static char *uuac_fields[] = {
647   "login",
648   "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
649   "middle", "status", "clearid", "class", "comments", "signature", "secure",
650   "winhomedir", "winprofiledir, sponsor_type, sponsor_name",
651 };
652
653 static struct valobj uuac2_valobj[] = {
654   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
655   {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
656   {V_NUM, 2},
657   {V_CHAR, 3, USERS_TABLE, "shell"},
658   {V_CHAR, 4, USERS_TABLE, "first"},
659   {V_CHAR, 5, USERS_TABLE, "last"},
660   {V_CHAR, 6, USERS_TABLE, "middle"},
661   {V_NUM, 7},
662   {V_CHAR, 8, USERS_TABLE, "clearid"},
663   {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
664   {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
665   {V_NUM, 12},
666 };
667   
668 static struct valobj uuac3_valobj[] = {
669   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
670   {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
671   {V_NUM, 2},
672   {V_CHAR, 3, USERS_TABLE, "shell"},
673   {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
674   {V_CHAR, 5, USERS_TABLE, "first"},
675   {V_CHAR, 6, USERS_TABLE, "last"},
676   {V_CHAR, 7, USERS_TABLE, "middle"},
677   {V_NUM, 8},
678   {V_CHAR, 9, USERS_TABLE, "clearid"},
679   {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
680   {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
681   {V_NUM, 13},
682 };
683
684 static struct valobj uuac11_valobj[] = {
685   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
686   {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
687   {V_NUM, 2},
688   {V_CHAR, 3, USERS_TABLE, "shell"},
689   {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
690   {V_CHAR, 5, USERS_TABLE, "first"},
691   {V_CHAR, 6, USERS_TABLE, "last"},
692   {V_CHAR, 7, USERS_TABLE, "middle"},
693   {V_NUM, 8},
694   {V_CHAR, 9, USERS_TABLE, "clearid"},
695   {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
696   {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
697   {V_NUM, 13},
698   {V_LEN, 14, USERS_TABLE, "winhomedir"},
699   {V_LEN, 15, USERS_TABLE, "winprofiledir"},
700 };
701
702 static struct valobj uuac_valobj[] = {
703   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
704   {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
705   {V_NUM, 2},
706   {V_CHAR, 3, USERS_TABLE, "shell"},
707   {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
708   {V_CHAR, 5, USERS_TABLE, "first"},
709   {V_CHAR, 6, USERS_TABLE, "last"},
710   {V_CHAR, 7, USERS_TABLE, "middle"},
711   {V_NUM, 8},
712   {V_CHAR, 9, USERS_TABLE, "clearid"},
713   {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
714   {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
715   {V_NUM, 13},
716   {V_LEN, 14, USERS_TABLE, "winhomedir"},
717   {V_LEN, 15, USERS_TABLE, "winprofiledir"},
718   {V_TYPE, 16, 0, "ace_type", 0, MR_ACE},
719   {V_TYPEDATA, 17, 0, 0, "list_id", MR_ACE},
720 };
721
722 static struct validate uuac2_validate = {
723   uuac2_valobj,
724   12,
725   0,
726   0,
727   0,
728   "users_id",
729   0,
730   setup_ausr,
731   set_modtime_by_id,
732 };
733
734 static struct validate uuac3_validate = {
735   uuac3_valobj,
736   13,
737   0,
738   0,
739   0,
740   "users_id",
741   0,
742   setup_ausr,
743   set_modtime_by_id,
744 };
745
746 static struct validate uuac11_validate = {
747   uuac11_valobj,
748   15,
749   0,
750   0,
751   0,
752   "users_id",
753   access_update_user,
754   setup_ausr,
755   set_modtime_by_id,
756 };
757
758 static struct validate uuac_validate = {
759   uuac_valobj,
760   17,
761   0,
762   0,
763   0,
764   "users_id",
765   access_update_user,
766   setup_ausr,
767   set_modtime_by_id,
768 };
769
770 static struct validate uusr2_validate = {
771   uuac2_valobj,
772   10,
773   0,
774   0,
775   0,
776   "users_id",
777   0,
778   setup_ausr,
779   set_modtime_by_id,
780 };
781
782 static struct validate uusr3_validate = {
783   uuac3_valobj,
784   11,
785   0,
786   0,
787   0,
788   "users_id",
789   0,
790   setup_ausr,
791   set_modtime_by_id,
792 };
793
794 static struct validate uusr11_validate = {
795   uuac11_valobj,
796   13,
797   0,
798   0,
799   0,
800   "users_id",
801   0,
802   setup_ausr,
803   set_modtime_by_id,
804 };
805
806 static struct validate uusr_validate = {
807   uuac_valobj,
808   15,
809   0,
810   0,
811   0,
812   "users_id",
813   0,
814   setup_ausr,
815   set_modtime_by_id,
816 };
817
818 static char *uush_fields[] = {
819   "login",
820   "shell",
821 };
822
823 static struct valobj uush_valobj[] = {
824   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
825   {V_CHAR, 1, USERS_TABLE, "shell"},
826 };
827
828 static struct validate uush_validate = {
829   uush_valobj,
830   2,
831   0,
832   0,
833   0,
834   "users_id",
835   access_user,
836   0,
837   set_finger_modtime,
838 };
839
840 static char *uuws_fields[] = {
841   "login",
842   "winconsoleshell",
843 };
844
845 static struct valobj uuws_valobj[] = {
846   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
847   {V_CHAR, 1, USERS_TABLE, "winconsoleshell"},
848 };
849
850 static struct validate uuws_validate = {
851   uuws_valobj,
852   2,
853   0,
854   0,
855   0,
856   "users_id",
857   access_user,
858   0,
859   set_finger_modtime,
860 };
861
862 static char *uust_fields[] = {
863   "login",
864   "status",
865 };
866
867 static char *uuss_fields[] = {
868   "login",
869   "secure",
870 };
871
872 static struct valobj uust_valobj[] = {
873   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
874   {V_NUM, 1},
875   {V_NUM, 2},
876 };
877
878 static struct validate uust_validate = {
879   uust_valobj,
880   2,
881   0,
882   0,
883   0,
884   "users_id",
885   0,
886   0,
887   set_modtime_by_id,
888 };
889
890 static char *dusr_fields[] = {
891   "login",
892 };
893
894 static struct validate dusr_validate = {
895   VOuser0,
896   1,
897   0,
898   0,
899   0,
900   0,
901   0,
902   setup_dusr,
903   0,
904 };
905
906 static char *aurv_fields[] = {
907   "login", "reservation",
908 };
909
910 static struct validate aurv_validate = {
911   VOuser0,
912   1,
913   0,
914   0,
915   0,
916   "users_id",
917   0,
918   0,
919   do_user_reservation,
920 };
921
922 static char *gurv_fields[] = {
923   "login",
924   "reservation",
925 };
926
927 static struct validate gurv_validate = {
928   VOuser0,
929   1,
930   0,
931   0,
932   0,
933   0,
934   0,
935   0,
936   get_user_reservations,
937 };
938
939 static char *gubr_fields[] = {
940   "reservation",
941   "login",
942 };
943
944 static struct validate gubr_validate = {
945   0,
946   0,
947   0,
948   0,
949   0,
950   0,
951   0,
952   0,
953   get_user_by_reservation,
954 };
955
956 static char *gkum_fields[] = { "login", "kerberos",
957                                    "login", "kerberos" };
958
959 static char *akum_fields[] = { "login", "kerberos" };
960
961 static struct valobj akum_valobj[] =
962 {
963   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
964   {V_ID, 1, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
965 };
966
967 static struct validate akum_validate =
968 {
969   akum_valobj,
970   2,
971   "users_id",
972   "users_id = %d or string_id = %d",
973   2,
974   "users_id",
975   access_user,
976   0,
977   0,
978 };
979
980 static struct validate dkum_validate =
981 {
982   akum_valobj,
983   2,
984   "users_id",
985   "users_id = %d and string_id = %d",
986   2,
987   "users_id",
988   access_user,
989   0,
990   0,
991 };
992
993 static char *gfbl_fields[] = {
994   "login",
995   "login", "fullname", "nickname", "home_addr",
996   "home_phone", "office_addr", "office_phone", "department",
997   "affiliation", "modtime", "modby", "modwith",
998 };
999
1000 static struct validate gfbl_validate = {
1001   VOuser0,
1002   1,
1003   0,
1004   0,
1005   0,
1006   0,
1007   access_user,
1008   0,
1009   followup_fix_modby,
1010 };
1011
1012 static char *ufbl_fields[] = {
1013   "login",
1014   "fullname", "nickname", "home_addr",
1015   "home_phone", "office_addr", "office_phone", "department",
1016   "affiliation",
1017 };
1018
1019 static struct valobj ufbl_valobj[] = {
1020   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
1021   {V_LEN, 1, USERS_TABLE, "fullname"},
1022   {V_LEN, 2, USERS_TABLE, "nickname"},
1023   {V_LEN, 3, USERS_TABLE, "home_addr"},
1024   {V_LEN, 4, USERS_TABLE, "home_phone"},
1025   {V_LEN, 5, USERS_TABLE, "office_addr"},
1026   {V_LEN, 6, USERS_TABLE, "office_phone"},
1027   {V_LEN, 7, USERS_TABLE, "department"},
1028   {V_LEN, 8, USERS_TABLE, "affiliation"},
1029 };
1030
1031 static struct validate ufbl_validate = {
1032   ufbl_valobj,
1033   9,
1034   0,
1035   0,
1036   0,
1037   0,
1038   access_user,
1039   0,
1040   set_finger_modtime,
1041 };
1042
1043 static char *gpob_fields[] = {
1044   "login",
1045   "login", "type", "box", "address", "modtime", "modby", "modwith",
1046 };
1047
1048 static struct validate gpob_validate = {
1049   VOuser0,
1050   1,
1051   "potype",
1052   "potype != 'NONE' and users_id = %d",
1053   1,
1054   0,
1055   access_user,
1056   0,
1057   followup_gpob,
1058 };
1059
1060 static char *gpox_fields[] = {
1061   "login", "type", "box",
1062 };
1063
1064 static struct validate gpox_validate = {
1065   0,
1066   0,
1067   0,
1068   0,
1069   0,
1070   0,
1071   0,
1072   0,
1073   followup_gpob,
1074 };
1075
1076 static char *spob_fields[] = {
1077   "login", "type", "box",
1078 };
1079
1080 static struct valobj spob_valobj[] = {
1081   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
1082   {V_TYPE, 1, 0, "pobox", 0, MR_TYPE},
1083 };
1084
1085 static struct validate spob_validate =  /* SET_POBOX */
1086 {
1087   spob_valobj,
1088   2,
1089   0,
1090   0,
1091   0,
1092   0,
1093   access_spob,
1094   0,
1095   set_pobox,
1096 };
1097
1098 static struct validate spop_validate =  /* SET_POBOX_POP */
1099 {
1100   VOuser0,
1101   1,
1102   0,
1103   0,
1104   0,
1105   0,
1106   access_user,
1107   0,
1108   set_pobox_pop,
1109 };
1110
1111 static struct validate dpob_validate =  /* DELETE_POBOX */
1112 {
1113   VOuser0,
1114   1,
1115   0,
1116   0,
1117   0,
1118   0,
1119   access_user,
1120   setup_dpob,
1121   set_pobox_modtime,
1122 };
1123
1124 static char *gmac_fields[] = {
1125   "name",
1126   "name", "type", "modtime", "modby", "modwith",
1127 };
1128
1129 static char *ghst2_fields[] = {
1130   "name", "address", "location", "network",
1131   "name", "vendor", "model", "os", "location", "contact", "use",
1132   "status", "status_change", "network", "address", "ace_type",
1133   "ace_name", "admin_comment", "ops_comment", "created", "creator",
1134   "inuse", "modtime", "modby", "modwith",
1135 };
1136
1137 static char *ghbh2_fields[] = {
1138   "hwaddr",
1139   "name", "vendor", "model", "os", "location", "contact", "use",
1140   "status", "status_change", "network", "address", "ace_type",
1141   "ace_name", "admin_comment", "ops_comment", "created", "creator",
1142   "inuse", "modtime", "modby", "modwith",
1143 };
1144
1145 static char *ghst6_fields[] = {
1146   "name", "address", "location", "network",
1147   "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1148   "use", "status", "status_change", "network", "address", "ace_type",
1149   "ace_name", "admin_comment", "ops_comment", "created", "creator",
1150   "inuse", "modtime", "modby", "modwith",
1151 };
1152
1153 static char *ghbh6_fields[] = {
1154   "hwaddr",
1155   "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1156   "use", "status", "status_change", "network", "address", "ace_type",
1157   "ace_name", "admin_comment", "ops_comment", "created", "creator",
1158   "inuse", "modtime", "modby", "modwith",
1159 };
1160
1161 static char *ghst_fields[] = {
1162   "name", "address", "location", "network",
1163   "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1164   "account_number", "use", "status", "status_change", "network", "address", 
1165   "ace_type", "ace_name", "admin_comment", "ops_comment", "created", "creator",
1166   "inuse", "modtime", "modby", "modwith",
1167 };
1168
1169 static char *ghbh_fields[] = {
1170   "hwaddr",
1171   "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1172   "account_number", "use", "status", "status_change", "network", "address", 
1173   "ace_type", "ace_name", "admin_comment", "ops_comment", "created", "creator",
1174   "inuse", "modtime", "modby", "modwith",
1175 };
1176
1177 static char *ghba_fields[] = {
1178   "account_number",
1179   "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1180   "account_number", "use", "status", "status_change", "network", "address", 
1181   "ace_type", "ace_name", "admin_comment", "ops_comment", "created", "creator",
1182   "inuse", "modtime", "modby", "modwith",
1183 };
1184
1185 static struct validate ghst_validate = {
1186   0,
1187   0,
1188   0,
1189   0,
1190   0,
1191   0,
1192   0,
1193   setup_ghst,
1194   followup_ghst,
1195 };
1196
1197 static char *ghha_fields[] = {
1198   "name",
1199   "hwaddr",
1200 };
1201
1202 static char *ahst2_fields[] = {
1203   "name", "vendor", "model", "os", "location", "contact", "use",
1204   "status", "subnet", "address", "ace_type", "ace_name",
1205   "admin_comment", "ops_comment",
1206 };
1207
1208 static struct valobj ahst2_valobj[] = {
1209   {V_CHAR, 0, MACHINE_TABLE, "name"},
1210   {V_CHAR, 1, MACHINE_TABLE, "vendor"},
1211   {V_CHAR, 2, MACHINE_TABLE, "model"},
1212   {V_CHAR, 3, MACHINE_TABLE, "os"},
1213   {V_CHAR, 4, MACHINE_TABLE, "location"},
1214   {V_CHAR, 5, MACHINE_TABLE, "contact"},
1215   {V_NUM, 6},
1216   {V_NUM, 7},
1217   {V_ID, 8, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1218   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1219   {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
1220   {V_ID, 12, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1221   {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1222 };
1223
1224 static struct validate ahst2_validate = {
1225   ahst2_valobj,
1226   13,
1227   "name",
1228   "name = UPPER('%s')",
1229   1,
1230   "mach_id",
1231   access_host,
1232   setup_ahst,
1233   set_uppercase_modtime,
1234 };
1235
1236 static char *ahst6_fields[] = {
1237   "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1238   "use", "status", "subnet", "address", "ace_type", "ace_name",
1239   "admin_comment", "ops_comment",
1240 };
1241
1242 static struct valobj ahst6_valobj[] = {
1243   {V_CHAR, 0, MACHINE_TABLE, "name"},
1244   {V_CHAR, 1, MACHINE_TABLE, "vendor"},
1245   {V_CHAR, 2, MACHINE_TABLE, "model"},
1246   {V_CHAR, 3, MACHINE_TABLE, "os"},
1247   {V_CHAR, 4, MACHINE_TABLE, "location"},
1248   {V_CHAR, 5, MACHINE_TABLE, "contact"},
1249   {V_CHAR, 6, MACHINE_TABLE, "billing_contact"},
1250   {V_NUM, 7},
1251   {V_NUM, 8},
1252   {V_ID, 9, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1253   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
1254   {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
1255   {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1256   {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1257 };
1258
1259 static struct validate ahst6_validate = {
1260   ahst6_valobj,
1261   14,
1262   "name",
1263   "name = UPPER('%s')",
1264   1,
1265   "mach_id",
1266   access_host,
1267   setup_ahst,
1268   set_uppercase_modtime,
1269 };
1270
1271 static char *ahst_fields[] = {
1272   "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1273   "account_number", "use", "status", "subnet", "address", "ace_type", 
1274   "ace_name", "admin_comment", "ops_comment",
1275 };
1276
1277 static struct valobj ahst_valobj[] = {
1278   {V_CHAR, 0, MACHINE_TABLE, "name"},
1279   {V_CHAR, 1, MACHINE_TABLE, "vendor"},
1280   {V_CHAR, 2, MACHINE_TABLE, "model"},
1281   {V_CHAR, 3, MACHINE_TABLE, "os"},
1282   {V_CHAR, 4, MACHINE_TABLE, "location"},
1283   {V_CHAR, 5, MACHINE_TABLE, "contact"},
1284   {V_CHAR, 6, MACHINE_TABLE, "billing_contact"},
1285   {V_CHAR, 7, MACHINE_TABLE, "account_number"},
1286   {V_NUM, 8},
1287   {V_NUM, 9},
1288   {V_ID, 10, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1289   {V_TYPE, 12, 0, "ace_type", 0, MR_ACE},
1290   {V_TYPEDATA, 13, 0, 0, 0, MR_ACE},
1291   {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1292   {V_ID, 15, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1293 };
1294
1295 static struct validate ahst_validate = {
1296   ahst_valobj,
1297   15,
1298   "name",
1299   "name = UPPER('%s')",
1300   1,
1301   "mach_id",
1302   access_host,
1303   setup_ahst,
1304   set_uppercase_modtime,
1305 };
1306
1307 static char *uhst2_fields[] = {
1308   "name",
1309   "newname", "vendor", "model", "os", "location", "contact", "use",
1310   "status", "subnet", "address", "ace_type", "ace_name",
1311   "admin_comment", "ops_comment",
1312 };
1313
1314 static struct valobj uhst2_valobj[] = {
1315   {V_CHAR, 0, MACHINE_TABLE, "name"},
1316   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1317   {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
1318   {V_CHAR, 2, MACHINE_TABLE, "vendor"},
1319   {V_CHAR, 3, MACHINE_TABLE, "model"},
1320   {V_CHAR, 4, MACHINE_TABLE, "os"},
1321   {V_CHAR, 5, MACHINE_TABLE, "location"},
1322   {V_CHAR, 6, MACHINE_TABLE, "contact"},
1323   {V_NUM, 7},
1324   {V_NUM, 8},
1325   {V_ID, 9, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1326   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
1327   {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
1328   {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1329   {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1330 };
1331
1332 static struct validate uhst2_validate = {
1333   uhst2_valobj,
1334   15,
1335   0,
1336   0,
1337   0,
1338   "mach_id",
1339   access_host,
1340   setup_ahst,
1341   set_modtime_by_id,
1342 };
1343
1344 static char *uhst6_fields[] = {
1345   "name",
1346   "newname", "vendor", "model", "os", "location", "contact", "billing_contact",
1347   "use", "status", "subnet", "address", "ace_type", "ace_name",
1348   "admin_comment", "ops_comment",
1349 };
1350
1351 static struct valobj uhst6_valobj[] = {
1352   {V_CHAR, 0, MACHINE_TABLE, "name"},
1353   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1354   {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
1355   {V_CHAR, 2, MACHINE_TABLE, "vendor"},
1356   {V_CHAR, 3, MACHINE_TABLE, "model"},
1357   {V_CHAR, 4, MACHINE_TABLE, "os"},
1358   {V_CHAR, 5, MACHINE_TABLE, "location"},
1359   {V_CHAR, 6, MACHINE_TABLE, "contact"},
1360   {V_CHAR, 7, MACHINE_TABLE, "billing_contact"},
1361   {V_NUM, 8},
1362   {V_NUM, 9},
1363   {V_ID, 10, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1364   {V_TYPE, 12, 0, "ace_type", 0, MR_ACE},
1365   {V_TYPEDATA, 13, 0, 0, 0, MR_ACE},
1366   {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1367   {V_ID, 15, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1368 };
1369
1370 static struct validate uhst6_validate = {
1371   uhst6_valobj,
1372   16,
1373   0,
1374   0,
1375   0,
1376   "mach_id",
1377   access_host,
1378   setup_ahst,
1379   set_modtime_by_id,
1380 };
1381
1382 static char *uhst_fields[] = {
1383   "name",
1384   "newname", "vendor", "model", "os", "location", "contact", "billing_contact",
1385   "account_number", "use", "status", "subnet", "address", "ace_type", 
1386   "ace_name", "admin_comment", "ops_comment",
1387 };
1388
1389 static struct valobj uhst_valobj[] = {
1390   {V_CHAR, 0, MACHINE_TABLE, "name"},
1391   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1392   {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
1393   {V_CHAR, 2, MACHINE_TABLE, "vendor"},
1394   {V_CHAR, 3, MACHINE_TABLE, "model"},
1395   {V_CHAR, 4, MACHINE_TABLE, "os"},
1396   {V_CHAR, 5, MACHINE_TABLE, "location"},
1397   {V_CHAR, 6, MACHINE_TABLE, "contact"},
1398   {V_CHAR, 7, MACHINE_TABLE, "billing_contact"},
1399   {V_CHAR, 8, MACHINE_TABLE, "account_number"},
1400   {V_NUM, 9},
1401   {V_NUM, 10},
1402   {V_ID, 11, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1403   {V_TYPE, 13, 0, "ace_type", 0, MR_ACE},
1404   {V_TYPEDATA, 14, 0, 0, 0, MR_ACE},
1405   {V_ID, 15, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1406   {V_ID, 16, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1407 };
1408
1409 static struct validate uhst_validate = {
1410   uhst_valobj,
1411   17,
1412   0,
1413   0,
1414   0,
1415   "mach_id",
1416   access_host,
1417   setup_ahst,
1418   set_modtime_by_id,
1419 };
1420
1421 static char *uhha_fields[] = {
1422   "name",
1423   "hwaddr"
1424 };
1425
1426 static struct valobj uhha_valobj[] = {
1427   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1428   {V_CHAR, 1, MACHINE_TABLE, "hwaddr"},
1429 };
1430
1431 static struct validate uhha_validate = {
1432   uhha_valobj,
1433   2,
1434   0,
1435   0,
1436   0,
1437   "mach_id",
1438   0,
1439   setup_uhha,
1440   set_modtime_by_id,
1441 };
1442
1443 static char *dhst_fields[] = {
1444   "name",
1445 };
1446
1447 static struct validate dhst_validate = {
1448   VOmach0,
1449   1,
1450   0,
1451   0,
1452   0,
1453   0,
1454   0,
1455   setup_dmac,
1456   0,
1457 };
1458
1459 static char *ghal_fields[] = {
1460   "alias", "canonical_hostname",
1461   "alias", "canonical_hostname"
1462 };
1463
1464 static struct validate ghal_validate = {
1465   0,
1466   0,
1467   0,
1468   0,
1469   0,
1470   0,
1471   access_ahal,
1472   0,
1473   0,
1474 };
1475
1476 static struct valobj ahal_valobj[] = {
1477   {V_CHAR, 0, HOSTALIAS_TABLE, "name"},
1478   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1479 };
1480
1481 static struct validate ahal_validate = {
1482   ahal_valobj,
1483   2,
1484   "name",
1485   "name = UPPER('%s')",
1486   1,
1487   "mach_id",
1488   access_ahal,
1489   setup_ahal,
1490   0,
1491 };
1492
1493 static struct valobj dhal_valobj[] = {
1494   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1495 };
1496
1497 static struct validate dhal_validate = {
1498   dhal_valobj,
1499   1,
1500   "name",
1501   "name = UPPER('%s') AND mach_id = %d",
1502   2,
1503   "mach_id",
1504   access_ahal,
1505   0,
1506   0,
1507 };
1508
1509 static char *gsnt2_fields[] = {
1510   "name",
1511   "name", "description", "address", "mask", "low", "high", "prefix",
1512   "ace_type", "ace_name", "modtime", "modby", "modwith"
1513 };
1514
1515 static char *gsnt_fields[] = {
1516   "name",
1517   "name", "description", "status", "contact", "account_number", "address", 
1518   "mask", "low", "high", "prefix", "ace_type", "ace_name", "modtime", 
1519   "modby", "modwith"
1520 };
1521
1522 static struct validate gsnt_validate = {
1523   0,
1524   0,
1525   0,
1526   0,
1527   0,
1528   0,
1529   access_snt,
1530   0,
1531   followup_gsnt,
1532 };
1533
1534 static char *asnt2_fields[] = {
1535   "name", "description", "address", "mask", "low", "high", "prefix",
1536   "ace_type", "ace_name",
1537 };
1538
1539 static struct valobj asnt2_valobj[] = {
1540   {V_CHAR, 0, SUBNET_TABLE, "name"},
1541   {V_LEN, 1, SUBNET_TABLE, "description"},
1542   {V_NUM, 2},
1543   {V_NUM, 3},
1544   {V_NUM, 4},
1545   {V_NUM, 5},
1546   {V_LEN, 6, SUBNET_TABLE, "prefix"},
1547   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
1548   {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
1549 };
1550
1551 static struct validate asnt2_validate =
1552 {
1553   asnt2_valobj,
1554   9,
1555   "name",
1556   "name = UPPER('%s')",
1557   1,
1558   "snet_id",
1559   0,
1560   prefetch_value,
1561   set_uppercase_modtime,
1562 };
1563
1564 static char *asnt_fields[] = {
1565   "name", "description", "status", "contact", "account_number", "address", 
1566   "mask", "low", "high", "prefix", "ace_type", "ace_name",
1567 };
1568
1569 static struct valobj asnt_valobj[] = {
1570   {V_CHAR, 0, SUBNET_TABLE, "name"},
1571   {V_LEN, 1, SUBNET_TABLE, "description"},
1572   {V_NUM, 2},
1573   {V_CHAR, 3, SUBNET_TABLE, "contact"},
1574   {V_CHAR, 4, SUBNET_TABLE, "account_number"},
1575   {V_NUM, 5},
1576   {V_NUM, 6},
1577   {V_NUM, 7},
1578   {V_NUM, 8},
1579   {V_LEN, 9, SUBNET_TABLE, "prefix"},
1580   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1581   {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
1582 };
1583
1584 static struct validate asnt_validate =
1585 {
1586   asnt_valobj,
1587   12,
1588   "name",
1589   "name = UPPER('%s')",
1590   1,
1591   "snet_id",
1592   0,
1593   setup_asnt,
1594   set_uppercase_modtime,
1595 };
1596
1597 static char *usnt2_fields[] = {
1598   "name",
1599   "newname", "description", "address", "mask", "low", "high", "prefix",
1600   "ace_type", "ace_name",
1601 };
1602
1603 static struct valobj usnt2_valobj[] = {
1604   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_NO_MATCH},
1605   {V_RENAME, 1, SUBNET_TABLE, "name", "snet_id", MR_NOT_UNIQUE},
1606   {V_LEN, 2, SUBNET_TABLE, "description"},
1607   {V_NUM, 3},
1608   {V_NUM, 4},
1609   {V_NUM, 5},
1610   {V_NUM, 6},
1611   {V_LEN, 7, SUBNET_TABLE, "prefix"},
1612   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1613   {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
1614 };
1615
1616 static struct validate usnt2_validate =
1617 {
1618   usnt2_valobj,
1619   10,
1620   "name",
1621   "snet_id = %d",
1622   1,
1623   "snet_id",
1624   0,
1625   0,
1626   set_modtime_by_id,
1627 };
1628
1629 static char *usnt_fields[] = {
1630   "name",
1631   "newname", "description", "status", "contact", "account_number", "address", 
1632   "mask", "low", "high", "prefix", "ace_type", "ace_name",
1633 };
1634
1635 static struct valobj usnt_valobj[] = {
1636   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_NO_MATCH},
1637   {V_RENAME, 1, SUBNET_TABLE, "name", "snet_id", MR_NOT_UNIQUE},
1638   {V_LEN, 2, SUBNET_TABLE, "description"},
1639   {V_NUM, 3},
1640   {V_CHAR, 4, SUBNET_TABLE, "contact"},
1641   {V_CHAR, 5, SUBNET_TABLE, "account_number"},
1642   {V_NUM, 6},
1643   {V_NUM, 7},
1644   {V_NUM, 8},
1645   {V_NUM, 9},
1646   {V_LEN, 10, SUBNET_TABLE, "prefix"},
1647   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
1648   {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
1649 };
1650
1651 static struct validate usnt_validate =
1652 {
1653   usnt_valobj,
1654   13,
1655   "name",
1656   "snet_id = %d",
1657   1,
1658   "snet_id",
1659   0,
1660   setup_asnt,
1661   set_modtime_by_id,
1662 };
1663
1664 static char *dsnt_fields[] = {
1665   "name",
1666 };
1667
1668 static struct validate dsnt_validate = {
1669   VOsnet0,
1670   1,
1671   0,
1672   0,
1673   0,
1674   0,
1675   0,
1676   setup_dsnt,
1677   0,
1678 };
1679
1680 static char *gclu_fields[] = {
1681   "name",
1682   "name", "description", "location", "modtime", "modby", "modwith",
1683 };
1684
1685 static char *aclu_fields[] = {
1686   "name", "description", "location",
1687 };
1688
1689 static struct valobj aclu_valobj[] = {
1690   {V_CHAR, 0, CLUSTERS_TABLE, "name"},
1691   {V_LEN, 1, CLUSTERS_TABLE, "description"},
1692   {V_LEN, 2, CLUSTERS_TABLE, "location"},
1693 };
1694
1695 static struct validate aclu_validate =
1696 {
1697   aclu_valobj,
1698   3,
1699   "name",
1700   "name = '%s'",
1701   1,
1702   "clu_id",
1703   0,
1704   prefetch_value,
1705   set_modtime,
1706 };
1707
1708 static char *uclu_fields[] = {
1709   "name",
1710   "newname", "description", "location",
1711 };
1712
1713 static struct valobj uclu_valobj[] = {
1714   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1715   {V_RENAME, 1, CLUSTERS_TABLE, "name", "clu_id", MR_NOT_UNIQUE},
1716   {V_LEN, 2, CLUSTERS_TABLE, "description"},
1717   {V_LEN, 3, CLUSTERS_TABLE, "location"},
1718 };
1719
1720 static struct validate uclu_validate = {
1721   uclu_valobj,
1722   4,
1723   0,
1724   0,
1725   0,
1726   "clu_id",
1727   0,
1728   0,
1729   set_modtime_by_id,
1730 };
1731
1732 static char *dclu_fields[] = {
1733   "name",
1734 };
1735
1736 static struct validate dclu_validate = {
1737   VOclu0,
1738   1,
1739   0,
1740   0,
1741   0,
1742   0,
1743   0,
1744   setup_dclu,
1745   0,
1746 };
1747
1748 static char *gmcm_fields[] = {
1749   "machine", "cluster",
1750   "machine", "cluster",
1751 };
1752
1753 static struct valobj amtc_valobj[] =    /* ADD_MACHINE_TO_CLUSTER */
1754 {                                       /* DELETE_MACHINE_FROM_CLUSTER */
1755   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1756   {V_ID, 1, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1757 };
1758
1759 static struct validate amtc_validate = /* for amtc and dmfc */
1760 {
1761   amtc_valobj,
1762   2,
1763   "mach_id",
1764   "mach_id = %d and clu_id = %d",
1765   2,
1766   0,
1767   0,
1768   0,
1769   set_mach_modtime_by_id,
1770 };
1771
1772 static char *gcld_fields[] = {
1773   "cluster", "serv_label",
1774   "cluster", "serv_label", "serv_cluster",
1775 };
1776
1777 static char *acld_fields[] = {
1778   "cluster", "serv_label", "serv_cluster",
1779 };
1780
1781 static struct valobj acld_valobj[] =
1782 {
1783   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1784   {V_CHAR, 1, SVC_TABLE, "serv_label"},
1785   {V_CHAR, 2, SVC_TABLE, "serv_cluster"}
1786 };
1787
1788 static struct validate acld_validate =
1789 {
1790   acld_valobj,
1791   3,
1792   "clu_id",
1793   "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
1794   3,
1795   0,
1796   0,
1797   0,
1798   set_cluster_modtime_by_id,
1799 };
1800
1801 static struct validate dcld_validate =
1802 {
1803   VOclu0,
1804   1,
1805   "clu_id",
1806   "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
1807   3,
1808   0,
1809   0,
1810   0,
1811   set_cluster_modtime_by_id,
1812 };
1813
1814 static char *glin2_fields[] = {
1815   "name",
1816   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1817   "ace_type", "ace_name", "description", "modtime", "modby", "modwith",
1818 };
1819
1820 static char *glin3_fields[] = {
1821   "name",
1822   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1823   "nfsgroup", "ace_type", "ace_name", "description", "modtime", "modby", 
1824   "modwith",
1825 };
1826
1827 static char *glin4_fields[] = {
1828   "name",
1829   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1830   "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name", 
1831   "description", "modtime", "modby", "modwith",
1832 };
1833
1834 static char *glin_fields[] = {
1835   "name",
1836   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1837   "nfsgroup", "mailman", "mailman_server", "ace_type", "ace_name", 
1838   "memace_type", "memace_name", "description", "modtime", "modby", "modwith",
1839 };
1840
1841 static struct validate glin_validate = {
1842   0,
1843   0,
1844   0,
1845   0,
1846   0,
1847   0,
1848   access_vis_list_by_name,
1849   0,
1850   followup_glin,
1851 };
1852
1853 static char *alis2_fields[] = {
1854   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1855   "ace_type", "ace_name", "description",
1856 };
1857
1858 static struct valobj alis2_valobj[] = {
1859   {V_CHAR, 0, LIST_TABLE, "name"},
1860   {V_NUM, 1},
1861   {V_NUM, 2},
1862   {V_NUM, 3},
1863   {V_NUM, 4},
1864   {V_NUM, 5},
1865   {V_NUM, 6},
1866   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
1867   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
1868   {V_LEN, 9, LIST_TABLE, "description"},
1869 };
1870
1871 static struct validate alis2_validate = {
1872   alis2_valobj,
1873   10,
1874   "name",
1875   "name = '%s'",
1876   1,
1877   "list_id",
1878   0,
1879   setup_alis,
1880   set_modtime,
1881 };
1882
1883 static char *alis3_fields[] = {
1884   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1885   "nfsgroup", "ace_type", "ace_name", "description",
1886 };
1887
1888 static struct valobj alis3_valobj[] = {
1889   {V_CHAR, 0, LIST_TABLE, "name"},
1890   {V_NUM, 1},
1891   {V_NUM, 2},
1892   {V_NUM, 3},
1893   {V_NUM, 4},
1894   {V_NUM, 5},
1895   {V_NUM, 6},
1896   {V_NUM, 7},
1897   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1898   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1899   {V_LEN, 10, LIST_TABLE, "description"},
1900 };
1901
1902 static struct validate alis3_validate = {
1903   alis3_valobj,
1904   11,
1905   "name",
1906   "name = '%s'",
1907   1,
1908   "list_id",
1909   0,
1910   setup_alis,
1911   set_modtime,
1912 };
1913
1914 static char *alis4_fields[] = {
1915   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1916   "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name", 
1917   "description",
1918 };
1919
1920 static struct valobj alis4_valobj[] = {
1921   {V_CHAR, 0, LIST_TABLE, "name"},
1922   {V_NUM, 1},
1923   {V_NUM, 2},
1924   {V_NUM, 3},
1925   {V_NUM, 4},
1926   {V_NUM, 5},
1927   {V_NUM, 6},
1928   {V_NUM, 7},
1929   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1930   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1931   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1932   {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
1933   {V_LEN, 12, LIST_TABLE, "description"},
1934 };
1935
1936 static struct validate alis4_validate = {
1937   alis4_valobj,
1938   13,
1939   "name",
1940   "name = '%s'",
1941   1,
1942   "list_id",
1943   0,
1944   setup_alis,
1945   set_modtime,
1946 };
1947
1948 static char *alis_fields[] = {
1949   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1950   "nfsgroup", "mailman", "mailman_server", "ace_type", "ace_name", 
1951   "memace_type", "memace_name", "description",
1952 };
1953
1954 static struct valobj alis_valobj[] = {
1955   {V_CHAR, 0, LIST_TABLE, "name"},
1956   {V_NUM, 1},
1957   {V_NUM, 2},
1958   {V_NUM, 3},
1959   {V_NUM, 4},
1960   {V_NUM, 5},
1961   {V_NUM, 6},
1962   {V_NUM, 7},
1963   {V_NUM, 8},
1964   {V_ID, 9, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1965   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1966   {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
1967   {V_TYPE, 12, 0, "ace_type", 0, MR_ACE},
1968   {V_TYPEDATA, 13, 0, 0, "list_id", MR_ACE},
1969   {V_LEN, 14, LIST_TABLE, "description"},
1970 };
1971
1972 static struct validate alis_validate = {
1973   alis_valobj,
1974   15,
1975   "name",
1976   "name = '%s'",
1977   1,
1978   "list_id",
1979   0,
1980   setup_alis,
1981   set_modtime,
1982 };
1983
1984 static char *ulis2_fields[] = {
1985   "name",
1986   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1987   "ace_type", "ace_name", "description",
1988 };
1989
1990 static struct valobj ulis2_valobj[] = {
1991   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1992   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
1993   {V_NUM, 2},
1994   {V_NUM, 3},
1995   {V_NUM, 4},
1996   {V_NUM, 5},
1997   {V_NUM, 6},
1998   {V_NUM, 7},
1999   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
2000   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
2001   {V_LEN, 10, LIST_TABLE, "description"},
2002 };
2003
2004 static struct validate ulis2_validate = {
2005   ulis2_valobj,
2006   11,
2007   "name",
2008   "list_id = %d",
2009   1,
2010   "list_id",
2011   access_list,
2012   setup_alis,
2013   set_modtime_by_id,
2014 };
2015
2016 static char *ulis3_fields[] = {
2017   "name",
2018   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid", 
2019   "nfsgroup", "ace_type", "ace_name", "description",
2020 };
2021
2022 static struct valobj ulis3_valobj[] = {
2023   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2024   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
2025   {V_NUM, 2},
2026   {V_NUM, 3},
2027   {V_NUM, 4},
2028   {V_NUM, 5},
2029   {V_NUM, 6},
2030   {V_NUM, 7},
2031   {V_NUM, 8},
2032   {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
2033   {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
2034   {V_LEN, 11, LIST_TABLE, "description"},
2035 };
2036
2037 static struct validate ulis3_validate = {
2038   ulis3_valobj,
2039   12,
2040   "name", 
2041   "list_id = %d",
2042   1,
2043   "list_id",
2044   access_list,
2045   setup_alis,
2046   set_modtime_by_id,
2047 };
2048
2049 static char *ulis4_fields[] = {
2050   "name",
2051   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
2052   "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name",
2053   "description",
2054 };
2055
2056 static struct valobj ulis4_valobj[] = {
2057   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2058   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
2059   {V_NUM, 2},
2060   {V_NUM, 3},
2061   {V_NUM, 4},
2062   {V_NUM, 5},
2063   {V_NUM, 6},
2064   {V_NUM, 7},
2065   {V_NUM, 8},
2066   {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
2067   {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
2068   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
2069   {V_TYPEDATA, 12, 0, 0, "list_id", MR_ACE},
2070   {V_LEN, 13, LIST_TABLE, "description"},
2071 };
2072
2073 static struct validate ulis4_validate = {
2074   ulis4_valobj,
2075   14,
2076   "name",
2077   "list_id = %d",
2078   1,
2079   "list_id",
2080   access_list,
2081   setup_alis,
2082   set_modtime_by_id,
2083 };
2084
2085 static char *ulis_fields[] = {
2086   "name",
2087   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
2088   "nfsgroup", "mailman", "mailman_server", "ace_type", "ace_name", 
2089   "memace_type", "memace_name", "description",
2090 };
2091
2092 static struct valobj ulis_valobj[] = {
2093   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2094   {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
2095   {V_NUM, 2},
2096   {V_NUM, 3},
2097   {V_NUM, 4},
2098   {V_NUM, 5},
2099   {V_NUM, 6},
2100   {V_NUM, 7},
2101   {V_NUM, 8},
2102   {V_NUM, 9},
2103   {V_ID, 10, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2104   {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
2105   {V_TYPEDATA, 12, 0, 0, "list_id", MR_ACE},
2106   {V_TYPE, 13, 0, "ace_type", 0, MR_ACE},
2107   {V_TYPEDATA, 14, 0, 0, "list_id", MR_ACE},
2108   {V_LEN, 15, LIST_TABLE, "description"},
2109 };
2110
2111 static struct validate ulis_validate = {
2112   ulis_valobj,
2113   16,
2114   "name",
2115   "list_id = %d",
2116   1,
2117   "list_id",
2118   access_list,
2119   setup_alis,
2120   set_modtime_by_id,
2121 };
2122
2123 static char *dlis_fields[] = {
2124   "name",
2125 };
2126
2127 static struct validate dlis_validate = {
2128   VOlist0,
2129   1,
2130   "name",
2131   "list_id = %d",
2132   1,
2133   0,
2134   access_list,
2135   setup_dlis,
2136   0,
2137 };
2138
2139 static char *amtl_fields[] = {
2140   "list_name", "member_type", "member_name",
2141 };
2142
2143 static char *atml_fields[] = {
2144   "list_name", "member_type", "member_name", "tag",
2145 };
2146
2147 static struct valobj amtl_valobj[] = {
2148   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2149   {V_TYPE, 1, 0, "member", 0, MR_TYPE},
2150   {V_TYPEDATA, 2, 0, 0, 0, MR_NO_MATCH},
2151   {V_ID, 3, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
2152 };
2153
2154 static struct validate amtl_validate =
2155 {
2156   amtl_valobj,
2157   3,
2158   0,
2159   0,
2160   0,
2161   0,
2162   access_list,
2163   0,
2164   add_member_to_list,
2165 };
2166
2167 static struct validate atml_validate =
2168 {
2169   amtl_valobj,
2170   4,
2171   0,
2172   0,
2173   0,
2174   0,
2175   access_list,
2176   0,
2177   add_member_to_list,
2178 };
2179
2180 static struct validate tmol_validate =
2181 {
2182   amtl_valobj,
2183   4,
2184   0,
2185   0,
2186   0,
2187   0,
2188   access_list,
2189   0,
2190   tag_member_of_list,
2191 };
2192
2193 static struct validate dmfl_validate =
2194 {
2195   amtl_valobj,
2196   3,
2197   0,
2198   0,
2199   0,
2200   0,
2201   access_list,
2202   0,
2203   delete_member_from_list,
2204 };
2205
2206 static char *gaus_fields[] = {
2207   "ace_type", "ace_name",
2208   "use_type", "use_name",
2209 };
2210
2211 static struct valobj gaus_valobj[] = {
2212   {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
2213   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
2214 };
2215
2216 static struct validate gaus_validate = {
2217   gaus_valobj,
2218   2,
2219   0,
2220   0,
2221   0,
2222   0,
2223   access_member,
2224   0,
2225   get_ace_use,
2226 };
2227
2228 static char *ghbo_fields[] = {
2229   "ace_type", "ace_name",
2230   "name",
2231 };
2232
2233 static struct valobj ghbo_valobj[] = {
2234   {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
2235   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
2236 };
2237
2238 static struct validate ghbo_validate = {
2239   ghbo_valobj,
2240   2,
2241   0,
2242   0,
2243   0,
2244   0,
2245   access_member,
2246   0,
2247   get_host_by_owner,
2248 };
2249
2250 static char *qgli_fields[] = {
2251   "active", "publicflg", "hidden", "maillist", "grouplist",
2252   "list",
2253 };
2254
2255 static struct valobj qgli_valobj[] = {
2256   {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
2257   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
2258   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
2259   {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
2260   {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
2261 };
2262
2263 static struct validate qgli_validate = {
2264   qgli_valobj,
2265   5,
2266   0,
2267   0,
2268   0,
2269   0,
2270   access_qgli,
2271   0,
2272   qualified_get_lists,
2273 };
2274
2275 static char *gmol_fields[] = {
2276   "list_name",
2277   "member_type", "member_name",
2278 };
2279
2280 static char *gtml_fields[] = {
2281   "list_name",
2282   "member_type", "member_name", "tag",
2283 };
2284
2285 static struct validate gmol_validate = {
2286   VOlist0,
2287   1,
2288   0,
2289   0,
2290   0,
2291   0,
2292   access_visible_list,
2293   0,
2294   get_members_of_list,
2295 };
2296
2297 static char *glom_fields[] = {
2298   "member_type", "member_name",
2299   "list_name", "active", "publicflg", "hidden", "maillist", "grouplist",
2300 };
2301
2302 static struct valobj glom_valobj[] = {
2303   {V_TYPE, 0, 0, "rmember", 0, MR_TYPE},
2304   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
2305 };
2306
2307 static struct validate glom_validate = {
2308   glom_valobj,
2309   2,
2310   0,
2311   0,
2312   0,
2313   0,
2314   access_member,
2315   0,
2316   get_lists_of_member,
2317 };
2318
2319 static char *cmol_fields[] = {
2320   "list_name",
2321   "count",
2322 };
2323
2324 static struct validate cmol_validate = {
2325   VOlist0,
2326   1,
2327   0,
2328   0,
2329   0,
2330   0,
2331   access_visible_list,
2332   0,
2333   count_members_of_list,
2334 };
2335
2336 static char *gsin_fields[] = {
2337   "service",
2338   "service", "update_int", "target_file", "script", "dfgen", "dfcheck",
2339   "type", "enable", "inprogress", "harderror", "errmsg",
2340   "ace_type", "ace_name", "modtime", "modby", "modwith",
2341 };
2342
2343 static struct validate gsin_validate =
2344 {
2345   0,
2346   0,
2347   0,
2348   0,
2349   0,
2350   0,
2351   access_service,
2352   0,
2353   followup_gsin,
2354 };
2355
2356 static char *qgsv_fields[] = {
2357   "enable", "inprogress", "harderror",
2358   "service",
2359 };
2360
2361 static struct valobj qgsv_valobj[] = {
2362   {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
2363   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
2364   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
2365 };
2366
2367 static struct validate qgsv_validate = {
2368   qgsv_valobj,
2369   3,
2370   0,
2371   0,
2372   0,
2373   0,
2374   0,
2375   0,
2376   qualified_get_server,
2377 };
2378
2379 static char *asin_fields[] = {
2380   "service", "update_int", "target_file", "script", "type", "enable",
2381   "ace_type", "ace_name",
2382 };
2383
2384 static struct valobj asin_valobj[] = {
2385   {V_CHAR, 0, SERVERS_TABLE, "name"},
2386   {V_NUM, 1},
2387   {V_LEN, 2, SERVERS_TABLE, "target_file"},
2388   {V_LEN, 3, SERVERS_TABLE, "script"},
2389   {V_TYPE, 4, 0, "service", 0, MR_TYPE},
2390   {V_NUM, 5},
2391   {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
2392   {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
2393 };
2394
2395 static struct validate asin_validate =  /* for asin, usin */
2396 {
2397   asin_valobj,
2398   8,
2399   "name",
2400   "name = UPPER('%s')",
2401   1,
2402   0,
2403   0,
2404   0,
2405   set_uppercase_modtime,
2406 };
2407
2408 static struct validate rsve_validate = {
2409   asin_valobj,
2410   1,
2411   "name",
2412   "name = UPPER('%s')",
2413   1,
2414   0,
2415   access_service,
2416   0,
2417   set_uppercase_modtime,
2418 };
2419
2420 static char *ssif_fields[] = {
2421   "service", "dfgen", "dfcheck", "inprogress", "harderror", "errmsg",
2422 };
2423
2424 static struct valobj ssif_valobj[] = {
2425   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
2426   {V_NUM, 1},
2427   {V_NUM, 2},
2428   {V_NUM, 3},
2429   {V_NUM, 4},
2430   {V_LEN, 5, SERVERS_TABLE, "errmsg"},
2431 };
2432
2433 static struct validate ssif_validate = {
2434   ssif_valobj,
2435   6,
2436   "name",
2437   "name = UPPER('%s')",
2438   1,
2439   0,
2440   0,
2441   0,
2442   0,
2443 };
2444
2445 static char *dsin_fields[] = {
2446   "service",
2447 };
2448
2449 static struct validate dsin_validate = {
2450   asin_valobj,
2451   1,
2452   "name",
2453   "name = UPPER('%s')",
2454   1,
2455   0,
2456   0,
2457   setup_dsin,
2458   0,
2459 };
2460
2461 static char *gshi_fields[] = {
2462   "service", "machine",
2463   "service", "machine", "enable", "override", "success", "inprogress",
2464   "hosterror", "hosterrormsg", "ltt", "lts", "value1", "value2",
2465   "value3", "modtime", "modby", "modwith",
2466 };
2467
2468 static struct validate gshi_validate = {
2469   0,
2470   0,
2471   0,
2472   0,
2473   0,
2474   0,
2475   access_service,
2476   0,
2477   followup_fix_modby,
2478 };
2479
2480 static char *qgsh_fields[] = {
2481   "service", "enable", "override", "success", "inprogress", "hosterror",
2482   "service", "machine",
2483 };
2484
2485 static struct valobj qgsh_valobj[] = {
2486   {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
2487   {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
2488   {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
2489   {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
2490   {V_TYPE, 5, 0, "boolean", 0, MR_TYPE},
2491 };
2492
2493 static struct validate qgsh_validate = {
2494   qgsh_valobj,
2495   5,
2496   0,
2497   0,
2498   0,
2499   0,
2500   0,
2501   0,
2502   qualified_get_serverhost,
2503 };
2504
2505 static char *ashi_fields[] = {
2506   "service", "machine", "enable", "value1", "value2", "value3",
2507 };
2508
2509 static struct valobj ashi_valobj[] = {
2510   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
2511   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2512   {V_NUM, 2},
2513   {V_NUM, 3},
2514   {V_NUM, 4},
2515   {V_LEN, 5, SERVERHOSTS_TABLE, "value3"},
2516 };
2517
2518 static struct validate ashi_validate = /* ashi & ushi */
2519 {
2520   ashi_valobj,
2521   6,
2522   "service",
2523   "service = UPPER('%s') AND mach_id = %d",
2524   2,
2525   0,
2526   access_service,
2527   0,
2528   set_serverhost_modtime,
2529 };
2530
2531 static struct validate rshe_validate =
2532 {
2533   ashi_valobj,
2534   2,
2535   "service",
2536   "service = UPPER('%s') AND mach_id = %d",
2537   2,
2538   0,
2539   access_service,
2540   0,
2541   set_serverhost_modtime,
2542 };
2543
2544 static struct validate ssho_validate =
2545 {
2546   ashi_valobj,
2547   2,
2548   "service",
2549   "service = UPPER('%s') AND mach_id = %d",
2550   2,
2551   0,
2552   access_service,
2553   0,
2554   trigger_dcm,
2555 };
2556
2557 static char *sshi_fields[] = {
2558   "service", "machine", "override", "success", "inprogress",
2559   "hosterror", "errmsg", "ltt", "lts",
2560 };
2561
2562 static struct valobj sshi_valobj[] = {
2563   {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
2564   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2565   {V_NUM, 2},
2566   {V_NUM, 3},
2567   {V_NUM, 4},
2568   {V_NUM, 5},
2569   {V_LEN, 6, SERVERHOSTS_TABLE, "hosterrmsg"},
2570   {V_NUM, 7},
2571   {V_NUM, 8},
2572 };
2573
2574 static struct validate sshi_validate =
2575 {
2576   sshi_valobj,
2577   9,
2578   0,
2579   0,
2580   0,
2581   0,
2582   0,
2583   0,
2584   0,
2585 };
2586
2587 static char *dshi_fields[] = {
2588   "service", "machine",
2589 };
2590
2591 static struct validate dshi_validate =
2592 {
2593   ashi_valobj,
2594   2,
2595   "service",
2596   "service = UPPER('%s') AND mach_id = %d",
2597   2,
2598   0,
2599   access_service,
2600   setup_dshi,
2601   0,
2602 };
2603
2604 static char *gslo_fields[] = {
2605   "server",
2606   "server", "machine",
2607 };
2608
2609 static char *gfsl_fields[] = {
2610   "label",
2611   "label", "type", "machine", "name", "mount", "access", "comments",
2612   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2613 };
2614
2615 static struct validate gfsl_validate = {
2616   0,
2617   0,
2618   0,
2619   0,
2620   0,
2621   0,
2622   0,
2623   0,
2624   followup_fix_modby,
2625 };
2626
2627 static char *gfsm_fields[] = {
2628   "machine",
2629   "label", "type", "machine", "name", "mount", "access", "comments",
2630   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2631 };
2632
2633 static struct validate gfsm_validate = {
2634   VOmach0,
2635   1,
2636   0,
2637   0,
2638   0,
2639   0,
2640   0,
2641   0,
2642   followup_fix_modby,
2643 };
2644
2645 static char *gfsn_fields[] = {
2646   "machine", "partition",
2647   "label", "type", "machine", "name", "mount", "access", "comments",
2648   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2649 };
2650
2651 static struct validate gfsn_validate = {
2652   VOmach0,
2653   1,
2654   0,
2655   0,
2656   0,
2657   0,
2658   0,
2659   0,
2660   followup_fix_modby,
2661 };
2662
2663 static char *gfsp_fields[] = {
2664   "path",
2665   "label", "type", "machine", "name", "mount", "access", "comments",
2666   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2667 };
2668
2669 static char *gfsg_fields[] = {
2670   "list",
2671   "label", "type", "machine", "name", "mount", "access", "comments",
2672   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2673 };
2674
2675 static struct validate gfsg_validate = {
2676   VOlist0,
2677   1,
2678   0,
2679   0,
2680   0,
2681   0,
2682   access_list,
2683   0,
2684   followup_fix_modby,
2685 };
2686
2687 static char *afil_fields[] = {
2688   "label", "type", "machine", "name", "mount", "access", "comments",
2689   "owner", "owners", "create", "lockertype",
2690 };
2691
2692 static struct valobj afil_valobj[] = {
2693   {V_CHAR, 0, FILESYS_TABLE, "label"},
2694   {V_TYPE, 1, 0, "filesys", 0, MR_FSTYPE},
2695   {V_ID, 2, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2696   {V_CHAR, 3, FILESYS_TABLE, "name"},
2697   {V_LEN, 4, FILESYS_TABLE, "mount"},
2698   {V_LEN, 5, FILESYS_TABLE, "rwaccess"},
2699   {V_LEN, 6, FILESYS_TABLE, "comments"},
2700   {V_ID, 7, USERS_TABLE, "login", "users_id", MR_USER},
2701   {V_ID, 8, LIST_TABLE, "name", "list_id", MR_LIST},
2702   {V_NUM, 9},
2703   {V_TYPE, 10, 0, "lockertype", 0, MR_TYPE},
2704 };
2705
2706 static struct validate afil_validate = {
2707   afil_valobj,
2708   11,
2709   "label",
2710   "label = '%s'",
2711   1,
2712   "filsys_id",
2713   0,
2714   setup_afil,
2715   set_filesys_modtime,
2716 };
2717
2718 static char *ufil_fields[] = {
2719   "label", "newlabel", "type", "machine", "name", "mount", "access",
2720   "comments", "owner", "owners", "create", "lockertype",
2721 };
2722
2723 static struct valobj ufil_valobj[] = {
2724   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2725   {V_RENAME, 1, FILESYS_TABLE, "label", "filsys_id", MR_NOT_UNIQUE},
2726   {V_TYPE, 2, 0, "filesys", 0, MR_FSTYPE},
2727   {V_ID, 3, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2728   {V_CHAR, 4, FILESYS_TABLE, "name"},
2729   {V_LEN, 5, FILESYS_TABLE, "mount"},
2730   {V_LEN, 6, FILESYS_TABLE, "rwaccess"},
2731   {V_LEN, 7, FILESYS_TABLE, "comments"},
2732   {V_ID, 8, USERS_TABLE, "login", "users_id", MR_USER},
2733   {V_ID, 9, LIST_TABLE, "name", "list_id", MR_LIST},
2734   {V_NUM, 10},
2735   {V_TYPE, 11, 0, "lockertype", 0, MR_TYPE},
2736 };
2737
2738 static struct validate ufil_validate = {
2739   ufil_valobj,
2740   12,
2741   "label",
2742   "filsys_id = %d",
2743   1,
2744   "filsys_id",
2745   0,
2746   setup_ufil,
2747   set_filesys_modtime,
2748 };
2749
2750 static char *dfil_fields[] = {
2751   "label",
2752 };
2753
2754 static struct validate dfil_validate = {
2755   VOfilesys0,
2756   1,
2757   "label",
2758   "filsys_id = %d",
2759   1,
2760   0,
2761   0,
2762   setup_dfil,
2763   0,
2764 };
2765
2766 static char *gfgm_fields[] = {
2767   "fsgroup", "filesys", "sortkey"
2768 };
2769
2770 static struct validate gfgm_validate = {
2771   VOfilesys0,
2772   1,
2773   0,
2774   0,
2775   0,
2776   0,
2777   0,
2778   0,
2779   0,
2780 };
2781
2782 static struct valobj aftg_valobj[] = {
2783   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2784   {V_ID, 1, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2785 };
2786
2787 static struct validate aftg_validate = {
2788   aftg_valobj,
2789   2,
2790   "group_id",
2791   "group_id = %d and filsys_id = %d",
2792   2,
2793   0,
2794   0,
2795   0,
2796   0,
2797 };
2798
2799 static char *ganf_fields[] = {
2800   "machine", "dir", "device", "status", "allocated", "size",
2801   "modtime", "modby", "modwith",
2802 };
2803
2804 static char *gnfp_fields[] = {
2805   "machine", "dir",
2806   "machine", "dir", "device", "status", "allocated", "size",
2807   "modtime", "modby", "modwith",
2808 };
2809
2810 static struct validate gnfp_validate = {
2811   VOmach0,
2812   1,
2813   0,
2814   0,
2815   0,
2816   0,
2817   0,
2818   0,
2819   followup_fix_modby,
2820 };
2821
2822 static struct valobj anfp_valobj[] = {
2823   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2824   {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
2825   {V_LEN, 2, NFSPHYS_TABLE, "device"},
2826   {V_NUM, 3},
2827   {V_NUM, 4},
2828   {V_NUM, 5},
2829 };
2830
2831 static struct validate anfp_validate = {
2832   anfp_valobj,
2833   6,
2834   "dir",
2835   "mach_id = %d and dir = '%s'",
2836   2,
2837   "nfsphys_id",
2838   0,
2839   prefetch_value,
2840   set_nfsphys_modtime,
2841 };
2842
2843 static struct validate unfp_validate = {
2844   anfp_valobj,
2845   6,
2846   "dir",
2847   "mach_id = %d and dir = '%s'",
2848   2,
2849   "nfsphys_id",
2850   0,
2851   0,
2852   set_nfsphys_modtime,
2853 };
2854
2855 static char *ajnf_fields[] = {
2856   "machine", "dir", "adjustment",
2857 };
2858
2859 static struct valobj ajnf_valobj[] = {
2860   {V_ID, 0, MACHINE_TABLE, NAME, "mach_id", MR_MACHINE},
2861   {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
2862   {V_NUM, 2},
2863 };
2864
2865 static struct validate ajnf_validate = {
2866   ajnf_valobj,
2867   3,
2868   "dir",
2869   "mach_id = %d and dir = '%s'",
2870   2,
2871   "nfsphys_id",
2872   0,
2873   0,
2874   set_nfsphys_modtime,
2875 };
2876
2877 static char *dnfp_fields[] = {
2878   "machine", "dir",
2879 };
2880
2881 static struct validate dnfp_validate = {
2882   anfp_valobj,
2883   2,
2884   "dir",
2885   "mach_id = %d and dir = '%s'",
2886   2,
2887   "nfsphys_id",
2888   0,
2889   setup_dnfp,
2890   set_nfsphys_modtime,
2891 };
2892
2893 static char *gqot_fields[] = {
2894   "filesys", "type", "name",
2895   "filesys", "type", "name", "quota", "dir", "machine",
2896   "modtime", "modby", "modwith",
2897 };
2898
2899 static struct valobj gqot_valobj[] = {
2900   {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
2901   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2902 };
2903
2904 static struct validate gqot_validate = {
2905   gqot_valobj,
2906   2,
2907   0,
2908   0,
2909   0,
2910   0,
2911   0,
2912   0,
2913   followup_gqot,
2914 };
2915
2916 static char *gqbf_fields[] = {
2917   "filesys",
2918   "filesys", "type", "name", "quota", "dir", "machine",
2919   "modtime", "modby", "modwith",
2920 };
2921
2922 static struct validate gqbf_validate = {
2923   0,
2924   0,
2925   0,
2926   0,
2927   0,
2928   0,
2929   0,
2930   0,
2931   followup_gqot,
2932 };
2933
2934 static char *aqot_fields[] = {
2935   "filesys", "type", "name", "quota",
2936 };
2937
2938 static struct valobj aqot_valobj[] = {
2939   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2940   {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
2941   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2942   {V_NUM, 3},
2943 };
2944
2945 static struct validate aqot_validate = {
2946   aqot_valobj,
2947   4,
2948   "filsys_id",
2949   "filsys_id = %d and type = '%s' and entity_id = %d",
2950   3,
2951   0,
2952   0,
2953   prefetch_filesys,
2954   followup_aqot,
2955 };
2956
2957 static struct validate uqot_validate = {
2958   aqot_valobj,
2959   4,
2960   "filsys_id",
2961   "filsys_id = %d AND type = '%s' AND entity_id = %d",
2962   3,
2963   0,
2964   0,
2965   setup_dqot,
2966   followup_aqot,
2967 };
2968
2969 static struct validate dqot_validate = {
2970   aqot_valobj,
2971   3,
2972   "filsys_id",
2973   "filsys_id = %d AND type = '%s' AND entity_id = %d",
2974   3,
2975   0,
2976   0,
2977   setup_dqot,
2978   followup_dqot,
2979 };
2980
2981 static char *gnfq_fields[] = {
2982   "filesys", "login",
2983   "filesys", "login", "quota", "dir", "machine",
2984   "modtime", "modby", "modwith",
2985 };
2986
2987 static struct validate gnfq_validate = {
2988   0,
2989   0,
2990   0,
2991   0,
2992   0,
2993   0,
2994   0,
2995   0,
2996   followup_gqot,
2997 };
2998
2999 static char *gnqp_fields[] = {
3000   "machine", "dir",
3001   "filesys", "login", "quota", "dir", "machine",
3002   "modtime", "modby", "modwith",
3003 };
3004
3005 static char *anfq_fields[] = {
3006   "filesys", "login", "quota",
3007 };
3008
3009 static struct valobj anfq_valobj[] = {
3010   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
3011   {V_ID, 1, USERS_TABLE, "login", "users_id", MR_USER},
3012   {V_NUM, 2},
3013 };
3014
3015 static struct validate anfq_validate = {
3016   anfq_valobj,
3017   3,
3018   "filsys_id",
3019   "filsys_id = %d AND type = 'USER' AND entity_id = %d",
3020   2,
3021   0, /* object ? */
3022   0,
3023   prefetch_filesys,
3024   followup_aqot,
3025 };
3026
3027 static struct validate unfq_validate = {
3028   anfq_valobj,
3029   3,
3030   "filsys_id",
3031   "filsys_id = %d AND type = 'USER' AND entity_id = %d",
3032   2,
3033   0,
3034   0,
3035   setup_dqot,
3036   followup_aqot,
3037 };
3038
3039 static struct validate dnfq_validate = {
3040   anfq_valobj,
3041   3,
3042   "filsys_id",
3043   "filsys_id = %d AND entity_id = %d",
3044   2,
3045   0,
3046   0,
3047   setup_dqot,
3048   followup_dqot,
3049 };
3050
3051 static char *gzcl2_fields[] = {
3052   "class",
3053   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3054   "iws_type", "iws_name", "iui_type", "iui_name",
3055   "modtime", "modby", "modwith",
3056 };
3057
3058 static char *gzcl_fields[] = {
3059   "class",
3060   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3061   "iws_type", "iws_name", "iui_type", "iui_name", "owner_type",
3062   "owner_id", "modtime", "modby", "modwith",
3063 };
3064
3065 static struct validate gzcl_validate = {
3066   0,
3067   0,
3068   0,
3069   0,
3070   0,
3071   0,
3072   access_zephyr,
3073   0,
3074   followup_gzcl,
3075 };
3076
3077 static char *azcl2_fields[] = {
3078   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3079   "iws_type", "iws_name", "iui_type", "iui_name",
3080 };  
3081
3082 static struct valobj azcl2_valobj[] = {
3083   {V_CHAR, 0, ZEPHYR_TABLE, "class"},
3084   {V_TYPE, 1, 0, "zace_type", 0, MR_ACE},
3085   {V_TYPEDATA, 2, 0, 0, "list_id", MR_ACE},
3086   {V_TYPE, 3, 0, "zace_type", 0, MR_ACE},
3087   {V_TYPEDATA, 4, 0, 0, "list_id", MR_ACE},
3088   {V_TYPE, 5, 0, "zace_type", 0, MR_ACE},
3089   {V_TYPEDATA, 6, 0, 0, "list_id", MR_ACE},
3090   {V_TYPE, 7, 0, "zace_type", 0, MR_ACE},
3091   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
3092 };
3093
3094 static struct validate azcl2_validate = {
3095   azcl2_valobj,
3096   9,
3097   "class",
3098   "class = '%s'",
3099   1,
3100   0,
3101   0,
3102   0,
3103   set_zephyr_modtime,
3104 };
3105
3106 static char *azcl_fields[] = {
3107   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3108   "iws_type", "iws_name", "iui_type", "iui_name", "owner_type", 
3109   "owner_id",
3110 };
3111
3112 static struct valobj azcl_valobj[] = {
3113   {V_CHAR, 0, ZEPHYR_TABLE, "class"},
3114   {V_TYPE, 1, 0, "zace_type", 0, MR_ACE},
3115   {V_TYPEDATA, 2, 0, 0, "list_id", MR_ACE},
3116   {V_TYPE, 3, 0, "zace_type", 0, MR_ACE},
3117   {V_TYPEDATA, 4, 0, 0, "list_id", MR_ACE},
3118   {V_TYPE, 5, 0, "zace_type", 0, MR_ACE},
3119   {V_TYPEDATA, 6, 0, 0, "list_id", MR_ACE},
3120   {V_TYPE, 7, 0, "zace_type", 0, MR_ACE},
3121   {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
3122   {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
3123   {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
3124 };
3125
3126 static struct validate azcl_validate = {
3127   azcl_valobj,
3128   11,
3129   "class",
3130   "class = '%s'",
3131   1,
3132   0,
3133   0,
3134   0,
3135   set_zephyr_modtime,
3136 };
3137
3138 static char *uzcl2_fields[] = {
3139   "class", "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
3140   "iws_type", "iws_name", "iui_type", "iui_name",
3141 };
3142
3143 static struct valobj uzcl2_valobj[] = {
3144   {V_NAME, 0, ZEPHYR_TABLE, "class", 0, MR_BAD_CLASS},
3145   {V_RENAME, 1, ZEPHYR_TABLE, "class", 0, MR_NOT_UNIQUE},
3146   {V_TYPE, 2, 0, "zace_type", 0, MR_ACE},
3147   {V_TYPEDATA, 3, 0, 0, "list_id", MR_ACE},
3148   {V_TYPE, 4, 0, "zace_type", 0, MR_ACE},
3149   {V_TYPEDATA, 5, 0, 0, "list_id", MR_ACE},
3150   {V_TYPE, 6, 0, "zace_type", 0, MR_ACE},
3151   {V_TYPEDATA, 7, 0, 0, "list_id", MR_ACE},
3152   {V_TYPE, 8, 0, "zace_type", 0, MR_ACE},
3153   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
3154 };
3155
3156 static struct validate uzcl2_validate = {
3157   uzcl2_valobj,
3158   10,
3159   "class",
3160   "class = '%s'",
3161   1,
3162   0,
3163   access_zephyr,
3164   0,
3165   set_zephyr_modtime,
3166 };
3167
3168 static char *uzcl_fields[] = {
3169   "class", "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
3170   "iws_type", "iws_name", "iui_type", "iui_name", "owner_type", "owner_id",
3171 };
3172
3173 static struct valobj uzcl_valobj[] = {
3174   {V_NAME, 0, ZEPHYR_TABLE, "class", 0, MR_BAD_CLASS},
3175   {V_RENAME, 1, ZEPHYR_TABLE, "class", 0, MR_NOT_UNIQUE},
3176   {V_TYPE, 2, 0, "zace_type", 0, MR_ACE},
3177   {V_TYPEDATA, 3, 0, 0, "list_id", MR_ACE},
3178   {V_TYPE, 4, 0, "zace_type", 0, MR_ACE},
3179   {V_TYPEDATA, 5, 0, 0, "list_id", MR_ACE},
3180   {V_TYPE, 6, 0, "zace_type", 0, MR_ACE},
3181   {V_TYPEDATA, 7, 0, 0, "list_id", MR_ACE},
3182   {V_TYPE, 8, 0, "zace_type", 0, MR_ACE},
3183   {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
3184   {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
3185   {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
3186 };
3187
3188 static struct validate uzcl_validate = {
3189   uzcl_valobj,
3190   12,
3191   "class",
3192   "class = '%s'",
3193   1,
3194   0,
3195   access_zephyr,
3196   0,
3197   set_zephyr_modtime,
3198 };
3199
3200 static struct validate dzcl_validate = {
3201   0,
3202   0,
3203   "class",
3204   "class = '%s'",
3205   1,
3206   0,
3207   0,
3208   0,
3209   0,
3210 };
3211
3212 static char *gsha_fields[] = {
3213   "machine",
3214   "machine", "ace_type", "ace_name", "modtime", "modby", "modwith",
3215 };
3216
3217 static struct validate gsha_validate =
3218 {
3219   0,
3220   0,
3221   0,
3222   0,
3223   0,
3224   0,
3225   0,
3226   0,
3227   followup_gsha,
3228 };
3229
3230 static char *asha_fields[] = {
3231   "machine", "ace_type", "ace_name",
3232 };
3233
3234 static struct valobj asha_valobj[] = {
3235   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3236   {V_TYPE, 1, 0, "ace_type", 0, MR_ACE},
3237   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
3238 };
3239
3240 static struct validate asha_validate =
3241 {
3242   asha_valobj,
3243   3,
3244   "mach_id",
3245   "mach_id = %d",
3246   1,
3247   "mach_id",
3248   0,
3249   0,
3250   set_modtime_by_id,
3251 };
3252
3253 static char *gacl_fields[] = {
3254   "machine", "target",
3255   "machine", "target", "kind", "list",
3256 };
3257
3258 static char *aacl_fields[] = {
3259   "machine", "target", "kind", "list",
3260 };
3261
3262 static char *dacl_fields[] = {
3263   "machine", "target",
3264 };
3265
3266 static struct valobj aacl_valobj[] = {
3267   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3268   {V_CHAR, 1, ACL_TABLE, "target"},
3269   {V_TYPE, 2, 0, "acl_kind", 0, MR_TYPE},
3270   {V_ID, 3, LIST_TABLE, "name", "list_id", MR_LIST},
3271 };
3272
3273 static struct validate gacl_validate =
3274 {
3275   aacl_valobj,
3276   1,
3277   NULL,
3278   NULL,
3279   0,
3280   "mach_id",
3281   /* access_acl */ 0,
3282   0,
3283   0,
3284 };
3285
3286 static struct validate aacl_validate =
3287 {
3288   aacl_valobj,
3289   4,
3290   "mach_id",
3291   "mach_id = %d AND target = '%s'",
3292   2,
3293   "mach_id",
3294   /* access_acl */ 0,
3295   0,
3296   0,
3297 };
3298
3299 static char *gsvc_fields[] = {
3300   "service", "protocol",
3301   "service", "protocol", "port", "description", "modtime", "modby", "modwith",
3302 };
3303
3304 static char *asvc_fields[] = {
3305   "service", "protocol", "port", "description",
3306 };
3307
3308 static char *dsvc_fields[] = {
3309   "service", "protocol",
3310 };
3311
3312 static struct valobj asvc_valobj[] = {
3313   {V_CHAR, 0, SERVICES_TABLE, "name"},
3314   {V_CHAR, 1, SERVICES_TABLE, "protocol"},
3315   {V_NUM, 2},
3316   {V_CHAR, 3, SERVICES_TABLE, "description"},
3317 };
3318
3319 static struct validate asvc_validate = {
3320   asvc_valobj,
3321   4,
3322   "name",
3323   "name = '%s' AND protocol = '%s'",
3324   2,
3325   0,
3326   0,
3327   0,
3328   set_service_modtime,
3329 };
3330
3331 static struct validate dsvc_validate = {
3332   asvc_valobj,
3333   2,
3334   "name",
3335   "name = '%s' AND protocol = '%s'",
3336   2,
3337   0,
3338   0,
3339   0,
3340   0,
3341 };
3342
3343 static char *gprn_fields[] = {
3344   "name",
3345   "name", "type", "hwtype", "duplexname", "hostname",
3346   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3347   "banner", "location", "contact", "modtime", "modby", "modwith"
3348 };
3349
3350 static char *gpbd_fields[] = {
3351   "duplexname",
3352   "name", "type", "hwtype", "duplexname", "hostname",
3353   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3354   "banner", "location", "contact", "modtime", "modby", "modwith"
3355 };
3356
3357 static char *gpbe_fields[] = {
3358   "hwaddr",
3359   "name", "type", "hwtype", "duplexname", "hostname",
3360   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3361   "banner", "location", "contact", "modtime", "modby", "modwith"
3362 };
3363
3364 static char *gpbh_fields[] = {
3365   "hostname",
3366   "name", "type", "hwtype", "duplexname", "hostname",
3367   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3368   "banner", "location", "contact", "modtime", "modby", "modwith"
3369 };
3370
3371 static char *gpbr_fields[] = {
3372   "rm",
3373   "name", "type", "hwtype", "duplexname", "hostname",
3374   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3375   "banner", "location", "contact", "modtime", "modby", "modwith"
3376 };
3377
3378 static char *gpbl_fields[] = {
3379   "location",
3380   "name", "type", "hwtype", "duplexname", "hostname",
3381   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3382   "banner", "location", "contact", "modtime", "modby", "modwith"
3383 };
3384
3385 static char *gpbc_fields[] = {
3386   "contact",
3387   "name", "type", "hwtype", "duplexname", "hostname",
3388   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3389   "banner", "location", "contact", "modtime", "modby", "modwith"
3390 };
3391
3392 static char *aprn_fields[] = {
3393   "printer", "type", "hwtype", "duplexname", "hostname",
3394   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3395   "banner", "location", "contact",
3396 };
3397
3398 static struct valobj aprn_valobj[] = {
3399   {V_CHAR, 0, PRINTERS_TABLE, "name"},
3400   {V_TYPE, 1, 0, "printertype", 0, MR_TYPE},
3401   {V_TYPE, 2, 0, "printerhwtype", 0, MR_TYPE},
3402   {V_CHAR, 3, PRINTERS_TABLE, "duplexname"},
3403   {V_ID, 4, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3404   {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3405   {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3406   {V_CHAR, 7, PRINTERS_TABLE, "rp"},
3407   {V_ID, 8, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3408   {V_NUM, 9},
3409   {V_NUM, 10},
3410   {V_ID, 11, LIST_TABLE, "name", "list_id", MR_LIST},
3411   {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
3412   {V_NUM, 13},
3413   {V_CHAR, 14, PRINTERS_TABLE, "location"},
3414   {V_CHAR, 15, PRINTERS_TABLE, "contact"},
3415 };
3416
3417 static struct validate aprn_validate = {
3418   aprn_valobj,
3419   16,
3420   "name",
3421   "name = '%s'",
3422   1,
3423   0,
3424   access_printer,
3425   setup_aprn,
3426   set_modtime,
3427 };
3428
3429 static char *uprn_fields[] = {
3430   "printer",
3431   "printer", "type", "hwtype", "duplexname", "hostname",
3432   "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3433   "banner", "location", "contact",
3434 };
3435
3436 static struct valobj uprn_valobj[] = {
3437   {V_CHAR, 0, PRINTERS_TABLE, "name"},
3438   {V_CHAR, 1, PRINTERS_TABLE, "name"},
3439   {V_TYPE, 2, 0, "printertype", 0, MR_TYPE},
3440   {V_TYPE, 3, 0, "printerhwtype", 0, MR_TYPE},
3441   {V_CHAR, 4, PRINTERS_TABLE, "duplexname"},
3442   {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3443   {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3444   {V_ID, 7, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3445   {V_CHAR, 8, PRINTERS_TABLE, "rp"},
3446   {V_ID, 9, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3447   {V_NUM, 10},
3448   {V_NUM, 11},
3449   {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
3450   {V_ID, 13, LIST_TABLE, "name", "list_id", MR_LIST},
3451   {V_NUM, 14},
3452   {V_CHAR, 15, PRINTERS_TABLE, "location"},
3453   {V_CHAR, 16, PRINTERS_TABLE, "contact"},
3454 };
3455
3456 static struct validate uprn_validate = {
3457   uprn_valobj,
3458   16,
3459   "name",
3460   "name = '%s'",
3461   1,
3462   0,
3463   access_printer,
3464   setup_aprn,
3465   set_modtime,
3466 };
3467
3468 static struct validate dprn_validate = {
3469   0,
3470   0,
3471   "name",
3472   "name = '%s'",
3473   1,
3474   0,
3475   access_printer,
3476   0,
3477   0,
3478 };
3479
3480 static char *gpsv_fields[] = {
3481   "host",
3482   "host", "kind", "printer_types", "owner_type", "owner_name",
3483   "lpc_acl", "modtime", "modby", "modwith"
3484 };
3485
3486 static struct valobj gpsv_valobj[] = {
3487   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3488 };
3489
3490 static struct validate gpsv_validate = {
3491   gpsv_valobj,
3492   1,
3493   0,
3494   0,
3495   0,
3496   0,
3497   0,
3498   0,
3499   followup_gpsv,
3500 };
3501
3502 static char *apsv_fields[] = {
3503   "host", "kind", "printer_types", "owner_type", "owner_name", "lpc_acl"
3504 };
3505
3506 static struct valobj apsv_valobj[] = {
3507   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3508   {V_TYPE, 1, 0, "lpd_kind", 0, MR_TYPE},
3509   {V_ID, 2, STRINGS_TABLE, "string", "string_id", MR_STRING},
3510   {V_TYPE, 3, 0, "ace_type", 0, MR_ACE},
3511   {V_TYPEDATA, 4, 0, 0, 0, MR_ACE},
3512   {V_ID, 5, LIST_TABLE, "name", "list_id", MR_LIST},
3513 };
3514
3515 static struct validate apsv_validate = {
3516   apsv_valobj,
3517   6,
3518   "mach_id",
3519   "mach_id = %d",
3520   1,
3521   "mach_id",
3522   0,
3523   0,
3524   set_modtime_by_id,
3525 };
3526
3527 static char *dpsv_fields[] = {
3528   "host",
3529 };
3530
3531 static struct validate dpsv_validate = {
3532   gpsv_valobj,
3533   1,
3534   "mach_id",
3535   "mach_id = %d",
3536   1,
3537   0,
3538   0,
3539   setup_dpsv,
3540   0,
3541 };  
3542
3543 static char *gali_fields[] = {
3544   "name", "type", "trans",
3545   "name", "type", "trans",
3546 };
3547
3548 static char *aali_fields[] = {
3549   "name", "type", "trans",
3550 };
3551
3552 static struct valobj aali_valobj[] = {
3553   {V_CHAR, 0, ALIAS_TABLE, "name"},
3554   {V_TYPE, 1, 0, "alias", 0, MR_TYPE},
3555   {V_CHAR, 2, ALIAS_TABLE, "trans"},
3556 };
3557
3558 static struct validate aali_validate = {
3559   aali_valobj,
3560   3,
3561   "trans",
3562   "name = '%s' and type = '%s' and trans = '%s'",
3563   3,
3564   0,
3565   0,
3566   0,
3567   0,
3568 };
3569
3570 static struct validate dali_validate =  /* DELETE_ALIAS */
3571 {
3572   0,
3573   0,
3574   "trans",
3575   "name = '%s' and type = '%s' and trans = '%s'",
3576   3,
3577   0,
3578   0,
3579   0,
3580   0,
3581 };
3582
3583 static char *gval_fields[] = {
3584   "name", "value",
3585 };
3586
3587 static struct valobj gval_valobj[] = {
3588   {V_NAME, 0, NUMVALUES_TABLE, "name", 0, MR_NO_MATCH},
3589 };
3590
3591 static struct validate gval_validate = {
3592   gval_valobj,
3593   1,
3594   0,
3595   0,
3596   0,
3597   0,
3598   0,
3599   0,
3600   0,
3601 };
3602
3603 static char *aval_fields[] = {
3604   "name", "value",
3605 };
3606
3607 static struct valobj aval_valobj[] = {
3608   {V_CHAR, 0, NUMVALUES_TABLE, "name"},
3609   {V_NUM, 1},
3610 };
3611
3612 static struct validate aval_validate =  /* for aval, uval, and dval */
3613 {
3614   aval_valobj,
3615   2,
3616   "name",
3617   "name = '%s'",
3618   1,
3619   0,
3620   0,
3621   0,
3622   0,
3623 };
3624
3625 static char *dval_fields[] = {
3626   "name",
3627 };
3628
3629 static char *gats_fields[] = {
3630   "table_name", "appends", "updates", "deletes",
3631   "modtime", "modby", "modwith",
3632 };
3633
3634 static char *_sdl_fields[] = {
3635   "level",
3636 };
3637
3638 static struct validate _sdl_validate =
3639 {
3640   VOnum0,
3641   1,
3642   NULL,
3643   NULL,
3644   0,
3645   0,
3646   0,
3647   0,
3648   _sdl_followup,
3649 };
3650
3651 static char *gcon7_fields[] = {
3652   "name",
3653   "name", "description", "location", "contact",
3654   "ace_type", "ace_name", "memace_type", "memace_name", "modtime", "modby", "modwith",
3655 };
3656
3657 static struct validate gcon_validate = {
3658   0,
3659   0,
3660   0,
3661   0,
3662   0,
3663   0,
3664   0,
3665   0,
3666   followup_gcon,
3667 };
3668
3669 static char *gcon_fields[] = {
3670   "name",
3671   "name", "publicflg", "description", "location", "contact",
3672   "ace_type", "ace_name", "memace_type", "memace_name", "modtime", "modby", "modwith",
3673 };
3674
3675 static char *acon7_fields[] = {
3676   "name", "description", "location", "contact",
3677   "ace_type", "ace_name", "memace_type", "memace_name",
3678 };
3679
3680 static struct valobj acon7_valobj[] = {
3681   {V_CHAR, 0, CONTAINERS_TABLE, "name"},
3682   {V_LEN, 1, CONTAINERS_TABLE, "description"},
3683   {V_CHAR, 2, CONTAINERS_TABLE, "location"},
3684   {V_CHAR, 3, CONTAINERS_TABLE, "contact"},
3685   {V_TYPE, 4, 0, "ace_type", 0, MR_ACE},
3686   {V_TYPEDATA, 5, 0, 0, 0, MR_ACE},
3687   {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
3688   {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
3689 };
3690
3691 static struct validate acon7_validate =
3692 {
3693   acon7_valobj,
3694   8,
3695   "name",
3696   "name = '%s'",
3697   1,
3698   "cnt_id",
3699   0,
3700   setup_acon,
3701   set_modtime,
3702 };
3703
3704 static char *acon_fields[] = {
3705   "name", "publicflg", "description", "location", "contact",
3706   "ace_type", "ace_name", "memace_type", "memace_name",
3707 };
3708
3709 static struct valobj acon_valobj[] = {
3710   {V_CHAR, 0, CONTAINERS_TABLE, "name"},
3711   {V_NUM, 1},
3712   {V_LEN, 2, CONTAINERS_TABLE, "description"},
3713   {V_CHAR, 3, CONTAINERS_TABLE, "location"},
3714   {V_CHAR, 4, CONTAINERS_TABLE, "contact"},
3715   {V_TYPE, 5, 0, "ace_type", 0, MR_ACE},
3716   {V_TYPEDATA, 6, 0, 0, 0, MR_ACE},
3717   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
3718   {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
3719 };
3720
3721 static struct validate acon_validate =
3722 {
3723   acon_valobj,
3724   9,
3725   "name",
3726   "name = '%s'",
3727   1,
3728   "cnt_id",
3729   0,
3730   setup_acon,
3731   set_modtime,
3732 };
3733
3734 static char *ucon7_fields[] = {
3735   "name",
3736   "newname", "description", "location", "contact",
3737   "ace_type", "ace_name", "memace_type", "memace_name",
3738 };
3739
3740 static struct valobj ucon7_valobj[] = {
3741   {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3742   {V_RENAME, 1, CONTAINERS_TABLE, "name", "cnt_id", MR_NOT_UNIQUE},
3743   {V_LEN, 2, CONTAINERS_TABLE, "description"},
3744   {V_CHAR, 3, CONTAINERS_TABLE, "location"},
3745   {V_CHAR, 4, CONTAINERS_TABLE, "contact"},
3746   {V_TYPE, 5, 0, "ace_type", 0, MR_ACE},
3747   {V_TYPEDATA, 6, 0, 0, 0, MR_ACE},
3748   {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
3749   {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
3750 };
3751
3752 static struct validate ucon7_validate =
3753 {
3754   ucon7_valobj,
3755   9,
3756   0,
3757   0,
3758   0,
3759   0,
3760   access_container,
3761   0,
3762   update_container,
3763 };
3764
3765 static char *ucon_fields[] = {
3766   "name",
3767   "newname", "publicflg", "description", "location", "contact",
3768   "ace_type", "ace_name", "memace_type", "memace_name",
3769 };
3770
3771 static struct valobj ucon_valobj[] = {
3772   {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3773   {V_RENAME, 1, CONTAINERS_TABLE, "name", "cnt_id", MR_NOT_UNIQUE},
3774   {V_NUM, 2},
3775   {V_LEN, 3, CONTAINERS_TABLE, "description"},
3776   {V_CHAR, 4, CONTAINERS_TABLE, "location"},
3777   {V_CHAR, 5, CONTAINERS_TABLE, "contact"},
3778   {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
3779   {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
3780   {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
3781   {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
3782 };
3783
3784 static struct validate ucon_validate =
3785 {
3786   ucon_valobj,
3787   10,
3788   0,
3789   0,
3790   0,
3791   0,
3792   access_container,
3793   0,
3794   update_container,
3795 };
3796
3797 static char *dcon_fields[] = {
3798   "name",
3799 };
3800
3801 static struct validate dcon_validate =
3802 {
3803   VOcon0,
3804   1,
3805   0,
3806   0,
3807   0,
3808   0,
3809   0,
3810   setup_dcon,
3811   0,
3812 };
3813
3814 static char *amcn_fields[] = {
3815   "machine", "container",
3816 };
3817
3818 static struct valobj amcn_valobj[] =    /* ADD_MACHINE_TO_CONTAINER */
3819 {                                       /* DELETE_MACHINE_FROM_CONTAINER */
3820   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3821   {V_ID, 1, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3822 };
3823
3824 static struct validate amcn_validate = /* for amtn and dmfn */
3825 {
3826   amcn_valobj,
3827   2,
3828   "mach_id",
3829   "mach_id = %d",
3830   1,
3831   0,
3832   access_container,
3833   0,
3834   set_mach_modtime_by_id,
3835 };
3836
3837 static struct validate dmcn_validate = /* for amtn and dmfn */
3838 {
3839   amcn_valobj,
3840   2,
3841   "mach_id",
3842   "mach_id = %d and cnt_id = %d",
3843   2,
3844   0,
3845   access_container,
3846   0,
3847   set_mach_modtime_by_id,
3848 };
3849
3850 static char *gmnm_fields[] = {
3851   "machine",
3852   "machine", "container",
3853 };
3854
3855 static char *gmoc_fields[] = {
3856   "container",
3857   "isrecursive",
3858         "machine",
3859   "container",
3860 };
3861
3862 static struct validate gmoc_validate = 
3863 {
3864   VOcon0,
3865   1,
3866   0,
3867   0,
3868   0,
3869   0,
3870   0,
3871   0,
3872   get_machines_of_container,
3873 };
3874
3875 static char *gsoc_fields[] = {
3876   "container",
3877   "isrecursive",
3878         "subcontainer",
3879 };
3880
3881 static struct validate gsoc_validate = 
3882 {
3883   VOcon0,
3884   1,
3885   0,
3886   0,
3887   0,
3888   0,
3889   0,
3890   0,
3891   get_subcontainers_of_container,
3892 };
3893
3894 static char *gtlc_fields[] = {
3895   "name",
3896 };
3897
3898 static char *scli_fields[] = {
3899   "containername",
3900   "listname",
3901 };
3902
3903 static struct valobj scli_valobj[] = {
3904   {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3905   {V_ID, 1, LIST_TABLE, "name", "list_id", MR_LIST},
3906 };
3907
3908 static struct validate scli_validate = {
3909   scli_valobj,
3910   2,
3911   0,
3912   0,
3913   0,
3914   0,
3915   0,
3916   setup_scli,
3917   set_container_list,
3918 };
3919
3920 static char *gcli_fields[] = {
3921   "containername",
3922   "containername", "listname",
3923 };
3924
3925 static struct validate glic_validate = 
3926 {
3927   VOlist0,
3928   1,
3929   NULL,
3930   NULL,
3931   0,
3932   0,
3933   0,
3934   0,
3935   0,
3936 };
3937
3938 static char *glic_fields[] = {
3939   "listname",
3940   "containername", "listname",
3941 };
3942
3943 /* Generalized Query Definitions */
3944
3945 /* Multiple versions of the same query MUST be listed in ascending
3946  * order.
3947  */
3948
3949 /* Note: For any query which uses prefetch_value, the vcnt should be
3950  * one less than the number of %-format specifiers in the tlist.
3951  */
3952
3953 struct query Queries[] = {
3954   {
3955     /* Q_GALO - GET_ALL_LOGINS, v2 */
3956     "get_all_logins",
3957     "galo",
3958     2,
3959     RETRIEVE,
3960     "u",
3961     USERS_TABLE,
3962     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
3963     galo2_fields,
3964     6,
3965     "u.users_id != 0",
3966     0,
3967     "u.login",
3968     0,
3969   },
3970
3971   {
3972     /* Q_GALO - GET_ALL_LOGINS, v3 */
3973     "get_all_logins",
3974     "galo",
3975     3,
3976     RETRIEVE,
3977     "u",
3978     USERS_TABLE,
3979     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle FROM users u",
3980     galo_fields,
3981     7,
3982     "u.users_id != 0",
3983     0,
3984     "u.login",
3985     0,
3986   },
3987
3988   {
3989     /* Q_GAAL - GET_ALL_ACTIVE_LOGINS, v2 */
3990     "get_all_active_logins",
3991     "gaal",
3992     2,
3993     RETRIEVE,
3994     "u",
3995     USERS_TABLE,
3996     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
3997     galo2_fields,
3998     6,
3999     "u.status = 1",
4000     0,
4001     "u.login",
4002     0,
4003   },
4004
4005   {
4006     /* Q_GAAL - GET_ALL_ACTIVE_LOGINS, v3 */
4007     "get_all_active_logins",
4008     "gaal",
4009     3,
4010     RETRIEVE,
4011     "u",
4012     USERS_TABLE,
4013     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle FROM users u",
4014     galo_fields,
4015     7,
4016     "u.status = 1",
4017     0,
4018     "u.login",
4019     0,
4020   },
4021
4022   {
4023     /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v2 */
4024     "get_user_account_by_login",
4025     "gual",
4026     2,
4027     RETRIEVE,
4028     "u",
4029     USERS_TABLE,
4030     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4031     gual2_fields,
4032     15,
4033     "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4034     1,
4035     "u.login",
4036     &gubl2_validate,
4037   },
4038
4039   {
4040     /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v3 */
4041     "get_user_account_by_login",
4042     "gual",
4043     3,
4044     RETRIEVE,
4045     "u",
4046     USERS_TABLE,
4047     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4048     gual3_fields,
4049     18,
4050     "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4051     1,
4052     "u.login",
4053     &gubl_validate,
4054   },
4055
4056   {
4057     /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v11 */
4058     "get_user_account_by_login",
4059     "gual",
4060     11,
4061     RETRIEVE,
4062     "u",
4063     USERS_TABLE,
4064     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4065     gual11_fields,
4066     20,
4067     "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4068     1,
4069     "u.login",
4070     &gubl_validate,
4071   },
4072
4073   {
4074     /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v12 */
4075     "get_user_account_by_login",
4076     "gual",
4077     12,
4078     RETRIEVE,
4079     "u",
4080     USERS_TABLE,
4081     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4082     gual_fields,
4083     22,
4084     "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4085     1,
4086     "u.login",
4087     &gubl_validate,
4088   },
4089
4090   {
4091     /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v2 */
4092     "get_user_account_by_uid",
4093     "guau",
4094     2,
4095     RETRIEVE,
4096     "u",
4097     USERS_TABLE,
4098     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4099     guau2_fields,
4100     15,
4101     "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4102     1,
4103     "u.login",
4104     &gubu2_validate,
4105   },
4106
4107   {
4108     /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v3 */
4109     "get_user_account_by_uid",
4110     "guau",
4111     3,
4112     RETRIEVE,
4113     "u",
4114     USERS_TABLE,
4115     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4116     guau3_fields,
4117     18,
4118     "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4119     1,
4120     "u.login",
4121     &gubu_validate,
4122   },
4123
4124   {
4125     /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v11 */
4126     "get_user_account_by_uid",
4127     "guau",
4128     11,
4129     RETRIEVE,
4130     "u",
4131     USERS_TABLE,
4132     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4133     guau3_fields,
4134     20,
4135     "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4136     1,
4137     "u.login",
4138     &gubu_validate,
4139   }, 
4140
4141   {
4142     /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v12 */
4143     "get_user_account_by_uid",
4144     "guau",
4145     12,
4146     RETRIEVE,
4147     "u",
4148     USERS_TABLE,
4149     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4150     guau_fields,
4151     22,
4152     "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4153     1,
4154     "u.login",
4155     &gubu_validate,
4156   }, 
4157
4158   {
4159     /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v2 */
4160     "get_user_account_by_name",
4161     "guan",
4162     2,
4163     RETRIEVE,
4164     "u",
4165     USERS_TABLE,
4166     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4167     guan2_fields,
4168     15,
4169     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4170     2,
4171     "u.login",
4172     &guan2_validate,
4173   },
4174
4175   {
4176     /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v3 */
4177     "get_user_account_by_name",
4178     "guan",
4179     3,
4180     RETRIEVE,
4181     "u",
4182     USERS_TABLE,
4183     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4184     guan3_fields,
4185     18,
4186     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4187     2,
4188     "u.login",
4189     &guan_validate,
4190   },
4191
4192   {
4193     /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v11 */
4194     "get_user_account_by_name",
4195     "guan",
4196     11,
4197     RETRIEVE,
4198     "u",
4199     USERS_TABLE,
4200     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4201     guan11_fields,
4202     20,
4203     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4204     2,
4205     "u.login",
4206     &guan_validate,
4207   },
4208
4209   {
4210     /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v12 */
4211     "get_user_account_by_name",
4212     "guan",
4213     12,
4214     RETRIEVE,
4215     "u",
4216     USERS_TABLE,
4217     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4218     guan_fields,
4219     22,
4220     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4221     2,
4222     "u.login",
4223     &guan_validate,
4224   },
4225
4226   {
4227     /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v2 */
4228     "get_user_account_by_class",
4229     "guac",
4230     2,
4231     RETRIEVE,
4232     "u",
4233     USERS_TABLE,
4234     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4235     guac2_fields,
4236     15,
4237     "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4238     1,
4239     "u.login",
4240     &VDfix_modby,
4241   },
4242
4243   {
4244     /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v3 */
4245     "get_user_account_by_class",
4246     "guac",
4247     3,
4248     RETRIEVE,
4249     "u",
4250     USERS_TABLE,
4251     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4252     guac3_fields,
4253     18,
4254     "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4255     1,
4256     "u.login",
4257     &guan_validate,
4258   },
4259
4260   {
4261     /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v11 */
4262     "get_user_account_by_class",
4263     "guac",
4264     11,
4265     RETRIEVE,
4266     "u",
4267     USERS_TABLE,
4268     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4269     guac11_fields,
4270     20,
4271     "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4272     1,
4273     "u.login",
4274     &guan_validate,
4275   },
4276
4277   {
4278     /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v12 */
4279     "get_user_account_by_class",
4280     "guac",
4281     12,
4282     RETRIEVE,
4283     "u",
4284     USERS_TABLE,
4285     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4286     guac_fields,
4287     22,
4288     "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4289     1,
4290     "u.login",
4291     &guan_validate,
4292   },
4293
4294   {
4295     /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v2 */
4296     "get_user_account_by_id",
4297     "guai",
4298     2,
4299     RETRIEVE,
4300     "u",
4301     USERS_TABLE,
4302     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4303     guam2_fields,
4304     15,
4305     "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4306     1,
4307     "u.login",
4308     &VDfix_modby,
4309   },
4310
4311   {
4312     /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v3 */
4313     "get_user_account_by_id",
4314     "guai",
4315     3,
4316     RETRIEVE,
4317     "u",
4318     USERS_TABLE,
4319     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4320     guam_fields,
4321     18,
4322     "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4323     1,
4324     "u.login",
4325     &guan_validate,
4326   },
4327
4328   {
4329     /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v11 */
4330     "get_user_account_by_id",
4331     "guai",
4332     11,
4333     RETRIEVE,
4334     "u",
4335     USERS_TABLE,
4336     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4337     guam11_fields,
4338     20,
4339     "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4340     1,
4341     "u.login",
4342     &guan_validate,
4343   },
4344
4345   {
4346     /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v12 */
4347     "get_user_account_by_id",
4348     "guai",
4349     12,
4350     RETRIEVE,
4351     "u",
4352     USERS_TABLE,
4353     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4354     guam_fields,
4355     22,
4356     "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4357     1,
4358     "u.login",
4359     &guan_validate,
4360   },
4361
4362   {
4363     /* Q_GUAS - GET_USER_ACCOUNT_BY_SPONSOR, v12 */
4364     "get_user_account_by_sponsor",
4365     "guas",
4366     12,
4367     RETRIEVE,
4368     0,
4369     0,
4370     0,
4371     guas_fields,
4372     1,
4373     0,
4374     2,
4375     NULL,
4376     &guas_validate,
4377   },
4378
4379   {
4380     /* Q_GUBL - GET_USER_BY_LOGIN, v2 */
4381     "get_user_by_login",
4382     "gubl",
4383     2,
4384     RETRIEVE,
4385     "u",
4386     USERS_TABLE,
4387     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
4388     gubl2_fields,
4389     12,
4390     "u.login LIKE '%s' AND u.users_id != 0",
4391     1,
4392     "u.login",
4393     &gubl2_validate,
4394   },
4395
4396   {
4397     /* Q_GUBL - GET_USER_BY_LOGIN, v3 */
4398     "get_user_by_login",
4399     "gubl",
4400     3,
4401     RETRIEVE,
4402     "u",
4403     USERS_TABLE,
4404     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4405     gubl_fields,
4406     15,
4407     "u.login LIKE '%s' AND u.users_id != 0",
4408     1,
4409     "u.login",
4410     &gubl_validate,
4411   },
4412
4413   {
4414     /* Q_GUBU - GET_USER_BY_UID, v2 */
4415     "get_user_by_uid",
4416     "gubu",
4417     2,
4418     RETRIEVE,
4419     "u",
4420     USERS_TABLE,
4421     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
4422     gubu2_fields,
4423     12,
4424     "u.unix_uid = %s AND u.users_id != 0",
4425     1,
4426     "u.login",
4427     &gubu2_validate,
4428   },
4429
4430   {
4431     /* Q_GUBU - GET_USER_BY_UID, v3 */
4432     "get_user_by_uid",
4433     "gubu",
4434     3,
4435     RETRIEVE,
4436     "u",
4437     USERS_TABLE,
4438     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4439     gubu_fields,
4440     15,
4441     "u.unix_uid = %s AND u.users_id != 0",
4442     1,
4443     "u.login",
4444     &gubu_validate,
4445   },
4446
4447   {
4448     /* Q_GUBN - GET_USER_BY_NAME, v2 */
4449     "get_user_by_name",
4450     "gubn",
4451     2,
4452     RETRIEVE,
4453     "u",
4454     USERS_TABLE,
4455     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
4456     gubn2_fields,
4457     12,
4458     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0",
4459     2,
4460     "u.login",
4461     &gubn2_validate,
4462   },
4463
4464   {
4465     /* Q_GUBN - GET_USER_BY_NAME, v3 */
4466     "get_user_by_name",
4467     "gubn",
4468     3,
4469     RETRIEVE,
4470     "u",
4471     USERS_TABLE,
4472     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4473     gubn_fields,
4474     15,
4475     "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0",
4476     2,
4477     "u.login",
4478     &gubn_validate,
4479   },
4480
4481   {
4482     /* Q_GUBC - GET_USER_BY_CLASS, v2 */
4483     "get_user_by_class",
4484     "gubc",
4485     2,
4486     RETRIEVE,
4487     "u",
4488     USERS_TABLE,
4489     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
4490     gubc2_fields,
4491     12,
4492     "u.type = UPPER('%s') AND u.users_id != 0",
4493     1,
4494     "u.login",
4495     &VDfix_modby,
4496   },
4497
4498   {
4499     /* Q_GUBC - GET_USER_BY_CLASS, v3 */
4500     "get_user_by_class",
4501     "gubc",
4502     3,
4503     RETRIEVE,
4504     "u",
4505     USERS_TABLE,
4506     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS') FROM users u",
4507     gubc_fields,
4508     15,
4509     "u.type = UPPER('%s') AND u.users_id != 0",
4510     1,
4511     "u.login",
4512     &guan_validate,
4513   },
4514
4515   {
4516     /* Q_GUBM - GET_USER_BY_MITID, v2 */
4517     "get_user_by_mitid",
4518     "gubm",
4519     2,
4520     RETRIEVE,
4521     "u",
4522     USERS_TABLE,
4523     "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
4524     gubm2_fields,
4525     12,
4526     "u.clearid LIKE '%s' AND u.users_id != 0",
4527     1,
4528     "u.login",
4529     &VDfix_modby,
4530   },
4531
4532   {
4533     /* Q_GUBM - GET_USER_BY_MITID, v3 */
4534     "get_user_by_mitid",
4535     "gubm",
4536     3,
4537     RETRIEVE,
4538     "u",
4539     USERS_TABLE,
4540     "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4541     gubm_fields,
4542     15,
4543     "u.clearid LIKE '%s' AND u.users_id != 0",
4544     1,
4545     "u.login",
4546     &guan_validate,
4547   },
4548
4549   {
4550     /* Q_AUAC - ADD_USER_ACCOUNT, v2 */  /* uses prefetch_value() for users_id */
4551     "add_user_account",
4552     "auac",
4553     2,
4554     APPEND,
4555     "u",
4556     USERS_TABLE,
4557     /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4558      * but using up one argv element.
4559      */
4560     "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, %s)",
4561     auac2_fields,
4562     12,
4563     NULL,
4564     0,
4565     NULL,
4566     &auac2_validate,
4567   },
4568
4569   {
4570     /* Q_AUAC - ADD_USER_ACCOUNT, v3 */  /* uses prefetch_value() for users_id */
4571     "add_user_account",
4572     "auac",
4573     3,
4574     APPEND,
4575     "u",
4576     USERS_TABLE,
4577     /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4578      * but using up one argv element.
4579      */
4580     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, %s, SYSDATE, %s)",
4581     auac3_fields,
4582     13,
4583     NULL,
4584     0,
4585     NULL,
4586     &auac3_validate,
4587   },
4588
4589   {
4590     /* Q_AUAC - ADD_USER_ACCOUNT, v11 */  /* uses prefetch_value() for users_id */
4591     "add_user_account",
4592     "auac",
4593     11,
4594     APPEND,
4595     "u",
4596     USERS_TABLE,
4597     /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4598      * but using up one argv element.
4599      */
4600     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, SYSDATE, %s)",
4601     auac11_fields,
4602     15,
4603     NULL,
4604     0,
4605     NULL,
4606     &auac11_validate,
4607   },
4608
4609   {
4610     /* Q_AUAC - ADD_USER_ACCOUNT, v12 */  /* uses prefetch_value() for users_id */
4611     "add_user_account",
4612     "auac",
4613     12,
4614     APPEND,
4615     "u",
4616     USERS_TABLE,
4617     /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4618      * but using up one argv element.
4619      */
4620     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, %s, SYSDATE, %s)",
4621     auac_fields,
4622     17,
4623     NULL,
4624     0,
4625     NULL,
4626     &auac_validate,
4627   },
4628
4629   {
4630     /* Q_AUSR - ADD_USER, v2 */  /* uses prefetch_value() for users_id */
4631     "add_user",
4632     "ausr",
4633     2,
4634     APPEND,
4635     "u",
4636     USERS_TABLE,
4637     "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, %s)",
4638     auac2_fields,
4639     9,
4640     0,
4641     0,
4642     NULL,
4643     &ausr2_validate,
4644   },
4645
4646   {
4647     /* Q_AUSR - ADD_USER, v3 */  /* uses prefetch_value() for users_id */
4648     "add_user",
4649     "ausr",
4650     3,
4651     APPEND,
4652     "u",
4653     USERS_TABLE,
4654     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, %s, SYSDATE, %s)",
4655     auac3_fields,
4656     10,
4657     0,
4658     0,
4659     NULL,
4660     &ausr3_validate,
4661   },
4662
4663   {
4664     /* Q_AUSR - ADD_USER, v11 */  /* uses prefetch_value() for users_id */
4665     "add_user",
4666     "ausr",
4667     11,
4668     APPEND,
4669     "u",
4670     USERS_TABLE,
4671     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, SYSDATE, %s)",
4672     auac11_fields,
4673     12,
4674     0,
4675     0,
4676     NULL,
4677     &ausr11_validate,
4678   },
4679
4680   {
4681     /* Q_AUSR - ADD_USER, v12 */  /* uses prefetch_value() for users_id */
4682     "add_user",
4683     "ausr",
4684     12,
4685     APPEND,
4686     "u",
4687     USERS_TABLE,
4688     "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, %s, SYSDATE, %s)",
4689     auac_fields,
4690     14,
4691     0,
4692     0,
4693     NULL,
4694     &ausr_validate,
4695   },
4696
4697   {
4698     /* Q_RUSR - REGISTER_USER */
4699     "register_user",
4700     "rusr",
4701     2,
4702     APPEND,
4703     0,
4704     0,
4705     0,
4706     rusr_fields,
4707     3,
4708     0,
4709     0,
4710     NULL,
4711     &rusr_validate,
4712   },
4713
4714   {
4715     /* Q_UUAC - UPDATE_USER_ACCOUNT, v2 */
4716     "update_user_account",
4717     "uuac",
4718     2,
4719     UPDATE,
4720     "u",
4721     USERS_TABLE,
4722     /* See comment in auac about signature. */
4723     "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s",
4724     uuac2_fields,
4725     12,
4726     "users_id = %d",
4727     1,
4728     NULL,
4729     &uuac2_validate,
4730   },
4731
4732   {
4733     /* Q_UUAC - UPDATE_USER_ACCOUNT, v3 */
4734     "update_user_account",
4735     "uuac",
4736     3,
4737     UPDATE,
4738     "u",
4739     USERS_TABLE,
4740     /* See comment in auac about signature. */
4741     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s",
4742     uuac3_fields,
4743     13,
4744     "users_id = %d",
4745     1,
4746     NULL,
4747     &uuac3_validate,
4748   },
4749
4750   {
4751     /* Q_UUAC - UPDATE_USER_ACCOUNT, v11 */
4752     "update_user_account",
4753     "uuac",
4754     11,
4755     UPDATE,
4756     "u",
4757     USERS_TABLE,
4758     /* See comment in auac about signature. */
4759     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s, winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0))",
4760     uuac11_fields,
4761     15,
4762     "users_id = %d",
4763     1,
4764     NULL,
4765     &uuac11_validate,
4766   },
4767
4768   {
4769     /* Q_UUAC - UPDATE_USER_ACCOUNT, v12 */
4770     "update_user_account",
4771     "uuac",
4772     12,
4773     UPDATE,
4774     "u",
4775     USERS_TABLE,
4776     /* See comment in auac about signature. */
4777     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = NVL(CHR(0), '%s'), secure = %s, winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d",
4778     uuac_fields,
4779     17,
4780     "users_id = %d",
4781     1,
4782     NULL,
4783     &uuac_validate,
4784   },
4785
4786   {
4787     /* Q_UUSR - UPDATE_USER, v2 */
4788     "update_user",
4789     "uusr",
4790     2,
4791     UPDATE,
4792     "u",
4793     USERS_TABLE,
4794     "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)),  type = '%s'",
4795     uuac2_fields,
4796     9,
4797     "users_id = %d",
4798     1,
4799     NULL,
4800     &uusr2_validate,
4801   },
4802
4803   {
4804     /* Q_UUSR - UPDATE_USER, v3 */
4805     "update_user",
4806     "uusr",
4807     3,
4808     UPDATE,
4809     "u",
4810     USERS_TABLE,
4811     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)),  type = '%s'",
4812     uuac3_fields,
4813     10,
4814     "users_id = %d",
4815     1,
4816     NULL,
4817     &uusr3_validate,
4818   },
4819
4820   {
4821     /* Q_UUSR - UPDATE_USER, v11 */
4822     "update_user",
4823     "uusr",
4824     11,
4825     UPDATE,
4826     "u",
4827     USERS_TABLE,
4828     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)),  type = '%s', winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)) ",
4829     uuac11_fields,
4830     12,
4831     "users_id = %d",
4832     1,
4833     NULL,
4834     &uusr11_validate,
4835   },
4836
4837   {
4838     /* Q_UUSR - UPDATE_USER, v12 */
4839     "update_user",
4840     "uusr",
4841     12,
4842     UPDATE,
4843     "u",
4844     USERS_TABLE,
4845     "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)),  type = '%s', winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d ",
4846     uuac_fields,
4847     14,
4848     "users_id = %d",
4849     1,
4850     NULL,
4851     &uusr_validate,
4852   },
4853
4854   {
4855     /* Q_UUSH - UPDATE_USER_SHELL */
4856     "update_user_shell",
4857     "uush",
4858     2,
4859     UPDATE,
4860     "u",
4861     USERS_TABLE,
4862     "users SET shell = '%s'",
4863     uush_fields,
4864     1,
4865     "users_id = %d",
4866     1,
4867     NULL,
4868     &uush_validate,
4869   },
4870
4871   {
4872     /* Q_UUWS - UPDATE_USER_WINDOWS_SHELL */
4873     "update_user_windows_shell",
4874     "uuws",
4875     2,
4876     UPDATE,
4877     "u",
4878     USERS_TABLE,
4879     "users SET winconsoleshell = '%s'",
4880     uuws_fields,
4881     1,
4882     "users_id = %d",
4883     1,
4884     NULL,
4885     &uuws_validate,
4886   },
4887
4888   {
4889     /* Q_UUST - UPDATE_USER_STATUS */
4890     "update_user_status",
4891     "uust",
4892     2,
4893     UPDATE,
4894     "u",
4895     USERS_TABLE,
4896     "users SET status = %s",
4897     uust_fields,
4898     1,
4899     "users_id = %d",
4900     1,
4901     NULL,
4902     &uust_validate,
4903   },
4904
4905   {
4906     /* Q_UUSS - UPDATE_USER_SECURITY_STATUS */
4907     "update_user_security_status",
4908     "uuss",
4909     2,
4910     UPDATE,
4911     "u",
4912     USERS_TABLE,
4913     "users SET secure = %s",
4914     uuss_fields,
4915     1,
4916     "users_id = %d",
4917     1,
4918     NULL,
4919     &uust_validate,
4920   },
4921
4922   {
4923     /* Q_DUSR - DELETE_USER */
4924     "delete_user",
4925     "dusr",
4926     2,
4927     DELETE,
4928     "u",
4929     USERS_TABLE,
4930     NULL,
4931     dusr_fields,
4932     0,
4933     "users_id = %d",
4934     1,
4935     NULL,
4936     &dusr_validate,
4937   },
4938
4939   {
4940     /* Q_AURV - ADD_USER_RESERVATION */
4941     "add_user_reservation",
4942     "aurv",
4943     2,
4944     UPDATE,
4945     0,
4946     USERS_TABLE,
4947     0,
4948     aurv_fields,
4949     2,
4950     0,
4951     0,
4952     NULL,
4953     &aurv_validate,
4954   },
4955
4956   {
4957     /* Q_GURV - GET_USER_RESERVATIONS */
4958     "get_user_reservations",
4959     "gurv",
4960     2,
4961     RETRIEVE,
4962     0,
4963     USERS_TABLE,
4964     0,
4965     gurv_fields,
4966     2,
4967     0,
4968     1,
4969     NULL,
4970     &gurv_validate,
4971   },
4972
4973   {
4974     /* Q_GUBR - GET_USER_BY_RESERVATION */
4975     "get_user_by_reservation",
4976     "gubr",
4977     2,
4978     RETRIEVE,
4979     0,
4980     USERS_TABLE,
4981     0,
4982     gubr_fields,
4983     1,
4984     0,
4985     1,
4986     NULL,
4987     &gubr_validate,
4988   },
4989
4990   {
4991     /* Q_DURV - DELETE_USER_RESERVATION */
4992     "delete_user_reservation",
4993     "durv",
4994     2,
4995     UPDATE,
4996     0,
4997     USERS_TABLE,
4998     0,
4999     aurv_fields,
5000     2,
5001     0,
5002     0,
5003     NULL,
5004     &aurv_validate,
5005   },
5006
5007   {
5008     /* Q_GKUM - GET_KERBEROS_USER_MAP */
5009     "get_kerberos_user_map",
5010     "gkum",
5011     2,
5012     RETRIEVE,
5013     "k",
5014     KRBMAP_TABLE,
5015     "u.login, str.string FROM krbmap km, users u, strings str",
5016     gkum_fields,
5017     2,
5018     "u.login LIKE '%s' AND str.string LIKE '%s' AND km.users_id = u.users_id AND km.string_id = str.string_id",
5019     2,
5020     "u.login, str.string",
5021     NULL,
5022   },
5023
5024   {
5025     /* Q_AKUM - ADD_KERBEROS_USER_MAP */
5026     "add_kerberos_user_map",
5027     "akum",
5028     2,
5029     APPEND,
5030     "k",
5031     KRBMAP_TABLE,
5032     "INTO krbmap (users_id, string_id) VALUES (%d, %d)",
5033     akum_fields,
5034     2,
5035     0,
5036     0,
5037     NULL,
5038     &akum_validate,
5039   },
5040
5041   {
5042     /* Q_DKUM - DELETE_KERBEROS_USER_MAP */
5043     "delete_kerberos_user_map",
5044     "dkum",
5045     2,
5046     DELETE,
5047     "k",
5048     KRBMAP_TABLE,
5049     0,
5050     akum_fields,
5051     0,
5052     "users_id = %d AND string_id = %d",
5053     2,
5054     NULL,
5055     &dkum_validate,
5056   },
5057
5058   {
5059     /* Q_GFBL - GET_FINGER_BY_LOGIN */
5060     "get_finger_by_login",
5061     "gfbl",
5062     2,
5063     RETRIEVE,
5064     "u",
5065     USERS_TABLE,
5066     "login, fullname, nickname, home_addr, home_phone, office_addr, office_phone, department, affiliation, TO_CHAR(fmodtime, 'DD-mon-YYYY HH24:MI:SS'), fmodby, fmodwith FROM users",
5067     gfbl_fields,
5068     12,
5069     "users_id = %d",
5070     1,
5071     "login",
5072     &gfbl_validate,
5073   },
5074
5075   {
5076     /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
5077     "update_finger_by_login",
5078     "ufbl",
5079     2,
5080     UPDATE,
5081     "u",
5082     USERS_TABLE,
5083     "users SET fullname= NVL('%s', CHR(0)), nickname= NVL('%s', CHR(0)), home_addr= NVL('%s', CHR(0)), home_phone= NVL('%s', CHR(0)), office_addr= NVL('%s', CHR(0)), office_phone= NVL('%s', CHR(0)), department= NVL('%s', CHR(0)), affiliation= NVL('%s', CHR(0))",
5084     ufbl_fields,
5085     8,
5086     "users_id = %d",
5087     1,
5088     NULL,
5089     &ufbl_validate,
5090   },
5091
5092   {
5093     /* Q_GPOB - GET_POBOX */
5094     "get_pobox",
5095     "gpob",
5096     2,
5097     RETRIEVE,
5098     "u",
5099     USERS_TABLE,
5100     "login, potype, users_id, CHR(0), TO_CHAR(pmodtime, 'DD-mon-YYYY HH24:MI:SS'), pmodby, pmodwith FROM users",
5101     gpob_fields,
5102     7,
5103     "users_id = %d",
5104     1,
5105     "login",
5106     &gpob_validate,
5107   },
5108
5109   {
5110     /* Q_GAPO - GET_ALL_POBOXES */
5111     "get_all_poboxes",
5112     "gapo",
5113     2,
5114     RETRIEVE,
5115     "u",
5116     USERS_TABLE,
5117     "login, potype, pop_id || ':' || box_id FROM users",
5118     gpox_fields,
5119     3,
5120     "potype != 'NONE'",
5121     0,
5122     "login",
5123     &gpox_validate,
5124   },
5125
5126   {
5127     /* Q_GPOP - GET_POBOXES_POP */
5128     "get_poboxes_pop",
5129     "gpop",
5130     2,
5131     RETRIEVE,
5132     "u",
5133     USERS_TABLE,
5134     "login, potype, users_id FROM users",
5135     gpox_fields,
5136     3,
5137     "potype = 'POP'",
5138     0,
5139     "login",
5140     &gpox_validate
5141   },
5142
5143   {
5144     /* Q_GPOF - GET_POBOXES_SMTP */
5145     "get_poboxes_smtp",
5146     "gpos",
5147     2,
5148     RETRIEVE,
5149     "u",
5150     USERS_TABLE,
5151     "login, potype, users_id FROM users",
5152     gpox_fields,
5153     3,
5154     "potype = 'SMTP'",
5155     0,
5156     "login",
5157     &gpox_validate
5158   },
5159
5160   {
5161     /* Q_SPOB - SET_POBOX */
5162     "set_pobox",
5163     "spob",
5164     2,
5165     UPDATE,
5166     0,
5167     USERS_TABLE,
5168     0,
5169     spob_fields,
5170     3,
5171     NULL,
5172     0,
5173     NULL,
5174     &spob_validate,
5175   },
5176
5177   {
5178     /* Q_SPOP - SET_POBOX_POP */
5179     "set_pobox_pop",
5180     "spop",
5181     2,
5182     UPDATE,
5183     0,
5184     USERS_TABLE,
5185     0,
5186     spob_fields,
5187     1,
5188     NULL,
5189     0,
5190     NULL,
5191     &spop_validate,
5192   },
5193
5194   {
5195     /* Q_DPOB - DELETE_POBOX */
5196     "delete_pobox",
5197     "dpob",
5198     2,
5199     UPDATE,
5200     "u",
5201     USERS_TABLE,
5202     "users SET potype = 'NONE'",
5203     spob_fields,
5204     0,
5205     "users_id = %d",
5206     1,
5207     NULL,
5208     &dpob_validate,
5209   },
5210
5211   {
5212     /* Q_GHST - GET_HOST, v2 */
5213     "get_host",
5214     "ghst",
5215     2,
5216     RETRIEVE,
5217     "m",
5218     MACHINE_TABLE,
5219     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
5220     ghst2_fields,
5221     21,
5222     "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5223     4,
5224     "m.name",
5225     &ghst_validate,
5226   },
5227
5228   {
5229     /* Q_GHST - GET_HOST, v6 */
5230     "get_host",
5231     "ghst",
5232     6,
5233     RETRIEVE,
5234     "m",
5235     MACHINE_TABLE,
5236     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
5237     ghst6_fields,
5238     22,
5239     "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5240     4,
5241     "m.name",
5242     &ghst_validate,
5243   },
5244
5245   {
5246     /* Q_GHST - GET_HOST, v8 */
5247     "get_host",
5248     "ghst",
5249     8,
5250     RETRIEVE,
5251     "m",
5252     MACHINE_TABLE,
5253     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.account_number, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
5254     ghst_fields,
5255     23,
5256     "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5257     4,
5258     "m.name",
5259     &ghst_validate,
5260   },
5261
5262   {
5263     /* Q_GHBH - GET_HOST_BY_HWADDR, v2 */
5264     "get_host_by_hwaddr",
5265     "ghbh",
5266     2,
5267     RETRIEVE,
5268     "m",
5269     MACHINE_TABLE,
5270     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
5271     ghbh2_fields,
5272     21,
5273     "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5274     1,
5275     "m.name",
5276     &ghst_validate,
5277   },
5278
5279   {
5280     /* Q_GHBH - GET_HOST_BY_HWADDR, v6 */
5281     "get_host_by_hwaddr",
5282     "ghbh",
5283     6,
5284     RETRIEVE,
5285     "m",
5286     MACHINE_TABLE,
5287     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
5288     ghbh6_fields,
5289     22,
5290     "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5291     1,
5292     "m.name",
5293     &ghst_validate,
5294   },
5295
5296   {
5297     /* Q_GHBH - GET_HOST_BY_HWADDR, v8 */
5298     "get_host_by_hwaddr",
5299     "ghbh",
5300     8,
5301     RETRIEVE,
5302     "m",
5303     MACHINE_TABLE,
5304     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.account_number, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
5305     ghbh_fields,
5306     23,
5307     "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5308     1,
5309     "m.name",
5310     &ghst_validate,
5311   },
5312
5313   {
5314     /* Q_GHBA - GET_HOST_BY_ACCOUNT_NUMBER, v8 */
5315     "get_host_by_account_number",
5316     "ghba",
5317     8,
5318     RETRIEVE,
5319     "m",
5320     MACHINE_TABLE,
5321     "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.account_number, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",    
5322     ghba_fields,
5323     23,
5324     "m.account_number LIKE '%s' AND m.mach_id != 0 and s.snet_id = m.snet_id",
5325     1,
5326     "m.name",
5327     &ghst_validate,
5328   },
5329
5330   {
5331     /* Q_GHHA - GET_HOST_HWADDR */
5332     "get_host_hwaddr",
5333     "ghha",
5334     2,
5335     RETRIEVE,
5336     "m",
5337     MACHINE_TABLE,
5338     "m.hwaddr FROM machine m",
5339     ghha_fields,
5340     1,
5341     "m.name LIKE UPPER('%s')",
5342     1,
5343     NULL,
5344     NULL,
5345   },
5346
5347   {
5348     /* Q_AHST - ADD_HOST, v2 */ /* uses prefetch_value() for mach_id */
5349     "add_host",
5350     "ahst",
5351     2,
5352     APPEND,
5353     "m",
5354     MACHINE_TABLE,
5355     "INTO machine (name, vendor, model, os, location, contact, use, status, statuschange, snet_id, address, owner_type, owner_id, acomment, ocomment, created, inuse, mach_id, creator) VALUES (UPPER('%s'), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
5356     ahst2_fields,
5357     14,
5358     0,
5359     0,
5360     NULL,
5361     &ahst2_validate,
5362   },
5363
5364   {
5365     /* Q_AHST - ADD_HOST, v6 */ /* uses prefetch_value() for mach_id */
5366     "add_host",
5367     "ahst",
5368     6,
5369     APPEND,
5370     "m",
5371     MACHINE_TABLE,
5372     "INTO machine (name, vendor, model, os, location, contact, billing_contact, use, status, statuschange, snet_id, address, owner_type, owner_id, acomment, ocomment, created, inuse, mach_id, creator) VALUES (UPPER('%s'), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
5373     ahst6_fields,
5374     15,
5375     0,
5376     0,
5377     NULL,
5378     &ahst6_validate,
5379   },
5380
5381   {
5382     /* Q_AHST - ADD_HOST, v8 */ /* Uses prefetch_value() for mach_id */
5383     "add_host",
5384     "ahst",
5385     8,
5386     APPEND,
5387     "m",
5388     MACHINE_TABLE,
5389     "INTO machine (name, vendor, model, os, location, contact, billing_contact, account_number, use, status, statuschange, snet_id, address, owner_type, owner_id, acomment, ocomment, created, inuse, mach_id, creator) VALUES (UPPER('%s'), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
5390     ahst_fields,
5391     16,
5392     0,
5393     0,
5394     NULL,
5395     &ahst_validate,
5396   },
5397
5398   {
5399     /* Q_UHST - UPDATE_HOST, v2 */
5400     "update_host",
5401     "uhst",
5402     2,
5403     UPDATE,
5404     "m",
5405     MACHINE_TABLE,
5406     "machine SET name = NVL(UPPER('%s'), CHR(0)), vendor = NVL(UPPER('%s'), CHR(0)), model = NVL(UPPER('%s'), CHR(0)), os = NVL(UPPER('%s'), CHR(0)), location = NVL(UPPER('%s'), CHR(0)), contact = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
5407     uhst2_fields,
5408     14,
5409     "mach_id = %d",
5410     1,
5411     NULL,
5412     &uhst2_validate,
5413   },
5414
5415   {
5416     /* Q_UHST - UPDATE_HOST, v6 */
5417     "update_host",
5418     "uhst",
5419     6,
5420     UPDATE,
5421     "m",
5422     MACHINE_TABLE,
5423     "machine SET name = NVL(UPPER('%s'), CHR(0)), vendor = NVL(UPPER('%s'), CHR(0)), model = NVL(UPPER('%s'), CHR(0)), os = NVL(UPPER('%s'), CHR(0)), location = NVL(UPPER('%s'), CHR(0)), contact = NVL('%s', CHR(0)), billing_contact = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
5424     uhst6_fields,
5425     15,
5426     "mach_id = %d",
5427     1,
5428     NULL,
5429     &uhst6_validate,
5430   },
5431
5432   {
5433     /* Q_UHST - UPDATE_HOST, v8 */
5434     "update_host",
5435     "uhst",
5436     8,
5437     UPDATE,
5438     "m",
5439     MACHINE_TABLE,
5440     "machine SET name = NVL(UPPER('%s'), CHR(0)), vendor = NVL(UPPER('%s'), CHR(0)), model = NVL(UPPER('%s'), CHR(0)), os = NVL(UPPER('%s'), CHR(0)), location = NVL(UPPER('%s'), CHR(0)), contact = NVL('%s', CHR(0)), billing_contact = NVL('%s', CHR(0)), account_number = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
5441     uhst_fields,
5442     16,
5443     "mach_id = %d",
5444     1,
5445     NULL,
5446     &uhst_validate,
5447   },
5448
5449   {
5450     /* Q_UHHA - UPDATE_HOST_HWADDR */
5451     "update_host_hwaddr",
5452     "uhha",
5453     2,
5454     UPDATE,
5455     "m",
5456     MACHINE_TABLE,
5457     "machine SET hwaddr = NVL('%s', CHR(0))",
5458     uhha_fields,
5459     1,
5460     "mach_id = %d",
5461     1,
5462     NULL,
5463     &uhha_validate,
5464   },
5465
5466   {
5467     /* Q_DHST - DELETE_HOST */
5468     "delete_host",
5469     "dhst",
5470     2,
5471     DELETE,
5472     "m",
5473     MACHINE_TABLE,
5474     NULL,
5475     dhst_fields,
5476     0,
5477     "mach_id = %d",
5478     1,
5479     NULL,
5480     &dhst_validate,
5481   },
5482
5483   {
5484     /* Q_GMAC - GET_MACHINE */
5485     "get_machine",
5486     "gmac",
5487     2,
5488     RETRIEVE,
5489     "m",
5490     MACHINE_TABLE,
5491     "name, vendor, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM machine",
5492     gmac_fields,
5493     5,
5494     "name LIKE UPPER('%s') AND mach_id != 0",
5495     1,
5496     "name",
5497     &VDfix_modby,
5498   },
5499
5500   {
5501     /* Q_GHAL - GET_HOSTALIAS */
5502     "get_hostalias",
5503     "ghal",
5504     2,
5505     RETRIEVE,
5506     "a",
5507     HOSTALIAS_TABLE,
5508     "a.name, m.name FROM hostalias a, machine m",
5509     ghal_fields,
5510     2,
5511     "m.mach_id = a.mach_id and a.name LIKE UPPER('%s') AND m.name LIKE UPPER('%s')",
5512     2,
5513     "a.name",
5514     &ghal_validate,
5515   },
5516
5517   {
5518     /* Q_AHAL - ADD_HOSTALIAS */
5519     "add_hostalias",
5520     "ahal",
5521     2,
5522     APPEND,
5523     "a",
5524     HOSTALIAS_TABLE,
5525     "INTO hostalias (name, mach_id) VALUES (UPPER('%s'), %d)",
5526     ghal_fields,
5527     2,
5528     0,
5529     0,
5530     NULL,
5531     &ahal_validate,
5532   },
5533
5534   {
5535     /* Q_DHAL - DELETE_HOSTALIAS */
5536     "delete_hostalias",
5537     "dhal",
5538     2,
5539     DELETE,
5540     "a",
5541     HOSTALIAS_TABLE,
5542     NULL,
5543     ghal_fields,
5544     0,
5545     "name = UPPER('%s') AND mach_id = %d",
5546     2,
5547     NULL,
5548     &dhal_validate,
5549   },
5550
5551   {
5552     /* Q_GSNT - GET_SUBNET, v2 */
5553     "get_subnet",
5554     "gsnt",
5555     2,
5556     RETRIEVE,
5557     "s",
5558     SUBNET_TABLE,
5559     "name, description, saddr, mask, low, high, prefix, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM subnet",
5560     gsnt2_fields,
5561     12,
5562     "name LIKE UPPER('%s')",
5563     1,
5564     "name",
5565     &gsnt_validate,
5566   },
5567
5568   {
5569     /* Q_GSNT - GET_SUBNET, v8 */
5570     "get_subnet",
5571     "gsnt",
5572     8,
5573     RETRIEVE,
5574     "s",
5575     SUBNET_TABLE,
5576     "name, description, status, contact, account_number, saddr, mask, low, high, prefix, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM subnet",
5577     gsnt_fields,
5578     15,
5579     "name LIKE UPPER('%s')",
5580     1,
5581     "name",
5582     &gsnt_validate,
5583   },
5584
5585   {
5586     /* Q_ASNT - ADD_SUBNET, v2 */
5587     "add_subnet",
5588     "asnt",
5589     2,
5590     APPEND,
5591     "s",
5592     SUBNET_TABLE,
5593     "INTO subnet (name, description, saddr, mask, low, high, prefix, owner_type, owner_id, snet_id) VALUES (UPPER('%s'), NVL('%s', CHR(0)), %s, %s, %s, %s, NVL('%s', CHR(0)), '%s', %d, %s)",
5594     asnt2_fields,
5595     9,
5596     0,
5597     0,
5598     NULL,
5599     &asnt2_validate,
5600   },
5601
5602   {
5603     /* Q_ASNT - ADD_SUBNET, v8 */
5604     "add_subnet",
5605     "asnt",
5606     8,
5607     APPEND,
5608     "s",
5609     SUBNET_TABLE,
5610     "INTO subnet (name, description, status, contact, account_number, saddr, mask, low, high, prefix, owner_type, owner_id, snet_id) VALUES (UPPER('%s'), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, %s, %s, %s, NVL('%s', CHR(0)), '%s', %d, %s)",
5611     asnt_fields,
5612     12,
5613     0,
5614     0,
5615     NULL,
5616     &asnt_validate,
5617   },
5618
5619   {
5620     /* Q_USNT - UPDATE_SUBNET, v2 */
5621     "update_subnet",
5622     "usnt",
5623     2,
5624     UPDATE,
5625     "s",
5626     SUBNET_TABLE,
5627     "subnet SET name = UPPER('%s'), description = NVL('%s', CHR(0)), saddr = %s, mask = %s, low = %s, high = %s, prefix = NVL('%s', CHR(0)), owner_type = '%s', owner_id = %d",
5628     usnt2_fields,
5629     9,
5630     "snet_id = %d",
5631     1,
5632     NULL,
5633     &usnt2_validate,
5634   },
5635
5636   {
5637     /* Q_USNT - UPDATE_SUBNET, v8 */
5638     "update_subnet",
5639     "usnt",
5640     8,
5641     UPDATE,
5642     "s",
5643     SUBNET_TABLE,
5644     "subnet SET name = UPPER('%s'), description = NVL('%s', CHR(0)), status = %s, contact = NVL('%s', CHR(0)), account_number = NVL('%s', CHR(0)), saddr = %s, mask = %s, low = %s, high = %s, prefix = NVL('%s', CHR(0)), owner_type = '%s', owner_id = %d",
5645     usnt_fields,
5646     12,
5647     "snet_id = %d",
5648     1,
5649     NULL,
5650     &usnt_validate,
5651   },
5652
5653   {
5654     /* Q_DSNT - DELETE_SUBNET */
5655     "delete_subnet",
5656     "dsnt",
5657     2,
5658     DELETE,
5659     "s",
5660     SUBNET_TABLE,
5661     NULL,
5662     dsnt_fields,
5663     0,
5664     "snet_id = %d",
5665     1,
5666     NULL,
5667     &dsnt_validate,
5668   },
5669
5670   {
5671     /* Q_GCLU - GET_CLUSTER */
5672     "get_cluster",
5673     "gclu",
5674     2,
5675     RETRIEVE,
5676     "c",
5677     CLUSTERS_TABLE,
5678     "name, description, location, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM clusters",
5679     gclu_fields,
5680     6,
5681     "name LIKE '%s' AND clu_id != 0",
5682     1,
5683     "name",
5684     &VDfix_modby,
5685   },
5686
5687   {
5688     /* Q_ACLU - ADD_CLUSTER */ /* uses prefetch_value() for clu_id */
5689     "add_cluster",
5690     "aclu",
5691     2,
5692     APPEND,
5693     "c",
5694     CLUSTERS_TABLE,
5695     "INTO clusters (name, description, location, clu_id) VALUES ('%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s)",
5696     aclu_fields,
5697     3,
5698     0,
5699     0,
5700     NULL,
5701     &aclu_validate,
5702   },
5703
5704   {
5705     /* Q_UCLU - UPDATE_CLUSTER */
5706     "update_cluster",
5707     "uclu",
5708     2,
5709     UPDATE,
5710     "c",
5711     CLUSTERS_TABLE,
5712     "clusters SET name = '%s', description = NVL('%s', CHR(0)), location = NVL('%s', CHR(0))",
5713     uclu_fields,
5714     3,
5715     "clu_id = %d",
5716     1,
5717     NULL,
5718     &uclu_validate,
5719   },
5720
5721   {
5722     /* Q_DCLU - DELETE_CLUSTER */
5723     "delete_cluster",
5724     "dclu",
5725     2,
5726     DELETE,
5727     "c",
5728     CLUSTERS_TABLE,
5729     NULL,
5730     dclu_fields,
5731     0,
5732     "clu_id = %d",
5733     1,
5734     NULL,
5735     &dclu_validate,
5736   },
5737
5738   {
5739     /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
5740     "get_machine_to_cluster_map",
5741     "gmcm",
5742     2,
5743     RETRIEVE,
5744     "mcm",
5745     MCMAP_TABLE,
5746     "m.name, c.name FROM machine m, clusters c, mcmap mcm",
5747     gmcm_fields,
5748     2,
5749     "m.name LIKE UPPER('%s') AND c.name LIKE '%s' AND mcm.clu_id = c.clu_id AND mcm.mach_id = m.mach_id",
5750     2,
5751     "m.name",
5752     NULL,
5753   },
5754
5755   {
5756     /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
5757     "add_machine_to_cluster",
5758     "amtc",
5759     2,
5760     APPEND,
5761     "mcm",
5762     MCMAP_TABLE,
5763     "INTO mcmap (mach_id, clu_id) VALUES (%d, %d)",
5764     gmcm_fields,
5765     2,
5766     0,
5767     0,
5768     NULL,
5769     &amtc_validate,
5770   },
5771
5772   {
5773     /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
5774     "delete_machine_from_cluster",
5775     "dmfc",
5776     2,
5777     DELETE,
5778     "mcm",
5779     MCMAP_TABLE,
5780     0,
5781     gmcm_fields,
5782     0,
5783     "mach_id = %d AND clu_id = %d",
5784     2,
5785     NULL,
5786     &amtc_validate,
5787   },
5788
5789   {
5790     /* Q_GCLD - GET_CLUSTER_DATA */
5791     "get_cluster_data",
5792     "gcld",
5793     2,
5794     RETRIEVE,
5795     "svc",
5796     SVC_TABLE,
5797     "c.name, svc.serv_label, svc.serv_cluster FROM svc svc, clusters c",
5798     gcld_fields,
5799     3,
5800     "c.clu_id = svc.clu_id AND c.name LIKE '%s' AND svc.serv_label LIKE '%s'",
5801     2,
5802     "c.name, svc.serv_label",
5803     NULL,
5804   },
5805
5806   {
5807     /* Q_ACLD - ADD_CLUSTER_DATA */
5808     "add_cluster_data",
5809     "acld",
5810     2,
5811     APPEND,
5812     "svc",
5813     SVC_TABLE,
5814     "INTO svc (clu_id, serv_label, serv_cluster) VALUES (%d, '%s', '%s')",
5815     acld_fields,
5816     3,
5817     NULL,
5818     0,
5819     NULL,
5820     &acld_validate,
5821   },
5822
5823   {
5824     /* Q_DCLD - DELETE_CLUSTER_DATA */
5825     "delete_cluster_data",
5826     "dcld",
5827     2,
5828     DELETE,
5829     "svc",
5830     SVC_TABLE,
5831     NULL,
5832     acld_fields,
5833     0,
5834     "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
5835     3,
5836     NULL,
5837     &dcld_validate,
5838   },
5839
5840   {
5841     /* Q_GLIN - GET_LIST_INFO, v2 */
5842     "get_list_info",
5843     "glin",
5844     2,
5845     RETRIEVE,
5846     "l",
5847     LIST_TABLE,
5848     "name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
5849     glin2_fields,
5850     13,
5851     "name LIKE '%s'",
5852     1,
5853     "name",
5854     &glin_validate,
5855   },
5856
5857   {
5858     /* Q_GLIN - GET_LIST_INFO, v3 */
5859     "get_list_info",
5860     "glin",
5861     3,
5862     RETRIEVE,
5863     "l",
5864     LIST_TABLE,
5865     "name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
5866     glin3_fields,
5867     14,
5868     "name LIKE '%s'",
5869     1,
5870     "name",
5871     &glin_validate,
5872   },
5873
5874   {
5875     /* Q_GLIN - GET_LIST_INFO, v4 */
5876     "get_list_info",
5877     "glin",
5878     4,
5879     RETRIEVE,
5880     "l",
5881     LIST_TABLE,
5882     "name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, memacl_type, memacl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
5883     glin4_fields,
5884     16,
5885     "name LIKE '%s'",
5886     1,
5887     "name",
5888     &glin_validate,
5889   },
5890
5891   {
5892     /* Q_GLIN - GET_LIST_INFO, v10 */
5893     "get_list_info",
5894     "glin",
5895     10,
5896     RETRIEVE,
5897     "l",
5898     LIST_TABLE,
5899     "l.name, l.active, l.publicflg, l.hidden, l.maillist, l.grouplist, l.gid, l.nfsgroup, l.mailman, m.name, l.acl_type, l.acl_id, l.memacl_type, l.memacl_id, l.description, TO_CHAR(l.modtime, 'DD-mon-YYYY HH24:MI:SS'), l.modby, l.modwith FROM list l, machine m",
5900     glin_fields,
5901     18,
5902     "l.name LIKE '%s' AND m.mach_id = l.mailman_id",
5903     1,
5904     "l.name",
5905     &glin_validate,
5906   },
5907
5908   {
5909     /* Q_EXLN - EXPAND_LIST_NAMES */
5910     "expand_list_names",
5911     "exln",
5912     2,
5913     RETRIEVE,
5914     "l",
5915     LIST_TABLE,
5916     "name FROM list",
5917     glin_fields,
5918     1,
5919     "name LIKE '%s' AND list_id != 0",
5920     1,
5921     "name",
5922     NULL,
5923   },
5924
5925   {
5926     /* Q_ALIS - ADD_LIST, v2 */ /* uses prefetch_value() for list_id */
5927     "add_list",
5928     "alis",
5929     2,
5930     APPEND,
5931     "l",
5932     LIST_TABLE,
5933     "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, '%s', %d, NVL('%s', CHR(0)), %s)",
5934     alis2_fields,
5935     10,
5936     0,
5937     0,
5938     NULL,
5939     &alis2_validate,
5940   },
5941
5942   {
5943     /* Q_ALIS - ADD_LIST, v3 */ /* uses prefetch_value() for list_id */
5944     "add_list",
5945     "alis",
5946     3,
5947     APPEND,
5948     "l",
5949     LIST_TABLE,
5950     "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, '%s', %d, NVL('%s', CHR(0)), %s)", 
5951     alis3_fields,
5952     11,
5953     0,
5954     0,
5955     NULL,
5956     &alis3_validate,
5957   },
5958
5959   {
5960     /* Q_ALIS - ADD_LIST, v4 */ /* uses prefetch_value() for list_id */
5961     "add_list",
5962     "alis",
5963     4,
5964     APPEND,
5965     "l",
5966     LIST_TABLE,
5967     "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, memacl_type, memacl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, '%s', %d, '%s', %d, NVL('%s', CHR(0)), %s)",
5968     alis4_fields,
5969     13,
5970     0,
5971     0,
5972     NULL,
5973     &alis4_validate,
5974   },
5975
5976   {
5977     /* Q_ALIS - ADD_LIST, v10 */ /* uses prefetch_value() for list_id */
5978     "add_list",
5979     "alis",
5980     10,
5981     APPEND,
5982     "l",
5983     LIST_TABLE,
5984     "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, mailman, mailman_id, acl_type, acl_id, memacl_type, memacl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, %s, %d, '%s', %d, '%s', %d, NVL('%s', CHR(0)), %s)",
5985     alis_fields,
5986     15,
5987     0,
5988     0,
5989     NULL,
5990     &alis_validate,
5991   },
5992
5993   {
5994     /* Q_ULIS - UPDATE_LIST, v2 */
5995     "update_list",
5996     "ulis",
5997     2,
5998     UPDATE,
5999     "l",
6000     LIST_TABLE,
6001     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, acl_type = '%s', acl_id = %d, description = NVL('%s', CHR(0))",
6002     ulis2_fields,
6003     10,
6004     "list_id = %d",
6005     1,
6006     NULL,
6007     &ulis2_validate,
6008   },
6009
6010   {
6011     /* Q_ULIS - UPDATE_LIST, v3 */
6012     "update_list",
6013     "ulis",
6014     3,
6015     UPDATE,
6016     "l",
6017     LIST_TABLE,
6018     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, acl_type = '%s', acl_id = %d, description = NVL('%s', CHR(0))",
6019     ulis3_fields,
6020     11,
6021     "list_id = %d",
6022     1,
6023     NULL,
6024     &ulis3_validate,
6025   },
6026
6027   {
6028     /* Q_ULIS, UPDATE_LIST, v4 */
6029     "update_list",
6030     "ulis",
6031     4,
6032     UPDATE,
6033     "l",
6034     LIST_TABLE,
6035     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, acl_type = '%s', acl_id = %d, memacl_type = '%s', memacl_id = %d, description = NVL('%s', CHR(0))",
6036     ulis4_fields,
6037     13,
6038     "list_id = %d",
6039     1,
6040     NULL,
6041     &ulis4_validate,
6042   },
6043
6044   {
6045     /* Q_ULIS, UPDATE_LIST, v10 */
6046     "update_list",
6047     "ulis",
6048     10,
6049     UPDATE,
6050     "l",
6051     LIST_TABLE,
6052     "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, mailman = %s, mailman_id = %d, acl_type = '%s', acl_id = %d, memacl_type = '%s', memacl_id = %d, description = NVL('%s', CHR(0))",
6053     ulis_fields,
6054     15,
6055     "list_id = %d",
6056     1,
6057     NULL,
6058     &ulis_validate,
6059   },
6060
6061   {
6062     /* Q_DLIS - DELETE_LIST */
6063     "delete_list",
6064     "dlis",
6065     2,
6066     DELETE,
6067     "l",
6068     LIST_TABLE,
6069     NULL,
6070     dlis_fields,
6071     0,
6072     "list_id = %d",
6073     1,
6074     NULL,
6075     &dlis_validate,
6076   },
6077
6078   {
6079     /* Q_AMTL - ADD_MEMBER_TO_LIST */
6080     "add_member_to_list",
6081     "amtl",
6082     2,
6083     APPEND,
6084     0,
6085     IMEMBERS_TABLE,
6086     0,
6087     amtl_fields,
6088     3,
6089     NULL,
6090     0,
6091     NULL,
6092     &amtl_validate,
6093   },
6094
6095   {
6096     /* Q_ATML - ADD_TAGGED_MEMBER_TO_LIST */
6097     "add_tagged_member_to_list",
6098     "atml",
6099     2,
6100     APPEND,
6101     0,
6102     IMEMBERS_TABLE,
6103     0,
6104     atml_fields,
6105     4,
6106     NULL,
6107     0,
6108     NULL,
6109     &atml_validate,
6110   },
6111
6112   {
6113     /* Q_TMOL - TAG_MEMBER_OF_LIST */
6114     "tag_member_of_list",
6115     "tmol",
6116     2,
6117     UPDATE,
6118     0,
6119     IMEMBERS_TABLE,
6120     0,
6121     atml_fields,
6122     1,
6123     0,
6124     3,
6125     NULL,
6126     &tmol_validate,
6127   },
6128
6129   {
6130     /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
6131     "delete_member_from_list",
6132     "dmfl",
6133     2,
6134     DELETE,
6135     0,
6136     IMEMBERS_TABLE,
6137     NULL,
6138     amtl_fields,
6139     0,
6140     0,
6141     3,
6142     NULL,
6143     &dmfl_validate,
6144   },
6145
6146   {
6147     /* Q_GAUS - GET_ACE_USE */
6148     "get_ace_use",
6149     "gaus",
6150     2,
6151     RETRIEVE,
6152     0,
6153     0,
6154     0,
6155     gaus_fields,
6156     2,
6157     0,
6158     2,
6159     NULL,
6160     &gaus_validate,
6161   },
6162
6163   {
6164     /* Q_GHBO - GET_HOST_BY_OWNER */
6165     "get_host_by_owner",
6166     "ghbo",
6167     2,
6168     RETRIEVE,
6169     0,
6170     0,
6171     0,
6172     ghbo_fields,
6173     1,
6174     0,
6175     2,
6176     NULL,
6177     &ghbo_validate,
6178   },
6179
6180   {
6181     /* Q_QGLI - QUALIFIED_GET_LISTS */
6182     "qualified_get_lists",
6183     "qgli",
6184     2,
6185     RETRIEVE,
6186     0,
6187     LIST_TABLE,
6188     0,
6189     qgli_fields,
6190     1,
6191     0,
6192     5,
6193     NULL,
6194     &qgli_validate,
6195   },
6196
6197   {
6198     /* Q_GMOL - GET_MEMBERS_OF_LIST */
6199     "get_members_of_list",
6200     "gmol",
6201     2,
6202     RETRIEVE,
6203     NULL,
6204     IMEMBERS_TABLE,
6205     NULL,
6206     gmol_fields,
6207     2,
6208     NULL,
6209     1,
6210     NULL,
6211     &gmol_validate,
6212   },
6213
6214   {
6215     /* Q_GEML - GET_END_MEMBERS_OF_LIST */
6216     "get_end_members_of_list",
6217     "geml",
6218     2,
6219     RETRIEVE,
6220     NULL,
6221     IMEMBERS_TABLE,
6222     NULL,
6223     gmol_fields,
6224     2,
6225     NULL,
6226     1,
6227     NULL,
6228     &gmol_validate,
6229   },
6230
6231   {
6232     /* Q_GTML - GET_TAGGED_MEMBERS_OF_LIST */
6233     "get_tagged_members_of_list",
6234     "gtml",
6235     2,
6236     RETRIEVE,
6237     NULL,
6238     IMEMBERS_TABLE,
6239     NULL,
6240     gtml_fields,
6241     3,
6242     NULL,
6243     1,
6244     NULL,
6245     &gmol_validate,
6246   },
6247
6248   {
6249     /* Q_GLOM - GET_LISTS_OF_MEMBER */
6250     "get_lists_of_member",
6251     "glom",
6252     2,
6253     RETRIEVE,
6254     0,
6255     IMEMBERS_TABLE,
6256     0,
6257     glom_fields,
6258     6,
6259     0,
6260     2,
6261     NULL,
6262     &glom_validate,
6263   },
6264
6265   {
6266     /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
6267     "count_members_of_list",
6268     "cmol",
6269     2,
6270     RETRIEVE,
6271     0,
6272     IMEMBERS_TABLE,
6273     0,
6274     cmol_fields,
6275     1,
6276     0,
6277     1,
6278     NULL,
6279     &cmol_validate,
6280   },
6281
6282   {
6283     /* Q_GSIN - GET_SERVER_INFO */
6284     "get_server_info",
6285     "gsin",
6286     2,
6287     RETRIEVE,
6288     "s",
6289     SERVERS_TABLE,
6290     "name, update_int, target_file, script, dfgen, dfcheck, type, enable, inprogress, harderror, errmsg, acl_type, acl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM servers",
6291     gsin_fields,
6292     16,
6293     "name LIKE UPPER('%s')",
6294     1,
6295     "name",
6296     &gsin_validate,
6297   },
6298
6299   {
6300     /* Q_QGSV - QUALIFIED_GET_SERVER */
6301     "qualified_get_server",
6302     "qgsv",
6303     2,
6304     RETRIEVE,
6305     0,
6306     SERVERS_TABLE,
6307     0,
6308     qgsv_fields,
6309     1,
6310     0,
6311     3,
6312     NULL,
6313     &qgsv_validate,
6314   },
6315
6316   {
6317     /* Q_ASIN - ADD_SERVER_INFO */
6318     "add_server_info",
6319     "asin",
6320     2,
6321     APPEND,
6322     "s",
6323     SERVERS_TABLE,
6324     "INTO servers (name, update_int, target_file, script, type, enable, acl_type, acl_id) VALUES (UPPER('%s'), %s, '%s', '%s', '%s', %s, '%s', %d)",
6325     asin_fields,
6326     8,
6327     NULL,
6328     0,
6329     NULL,
6330     &asin_validate,
6331   },
6332
6333   {
6334     /* Q_USIN - UPDATE_SERVER_INFO */
6335     "update_server_info",
6336     "usin",
6337     2,
6338     UPDATE,
6339     "s",
6340     SERVERS_TABLE,
6341     "servers SET update_int = %s, target_file = '%s', script = '%s', type = '%s', enable = %s, acl_type = '%s', acl_id = %d",
6342     asin_fields,
6343     7,
6344     "name = UPPER('%s')",
6345     1,
6346     NULL,
6347     &asin_validate,
6348   },
6349
6350   {
6351     /* Q_RSVE - RESET_SERVER_ERROR */
6352     "reset_server_error",
6353     "rsve",
6354     2,
6355     UPDATE,
6356     "s",
6357     SERVERS_TABLE,
6358     "servers SET harderror = 0, dfcheck = dfgen",
6359     dsin_fields,
6360     0,
6361     "name = UPPER('%s')",
6362     1,
6363     NULL,
6364     &rsve_validate,
6365   },
6366
6367   {
6368     /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
6369     "set_server_internal_flags",
6370     "ssif",
6371     2,
6372     UPDATE,
6373     "s",
6374     SERVERS_TABLE,
6375     "servers SET dfgen = %s, dfcheck = %s, inprogress = %s, harderror = %s, errmsg = NVL('%s', CHR(0))",
6376     ssif_fields,
6377     5,
6378     "name = UPPER('%s')",
6379     1,
6380     NULL,
6381     &ssif_validate,
6382   },
6383
6384   {
6385     /* Q_DSIN - DELETE_SERVER_INFO */
6386     "delete_server_info",
6387     "dsin",
6388     2,
6389     DELETE,
6390     "s",
6391     SERVERS_TABLE,
6392     NULL,
6393     dsin_fields,
6394     0,
6395     "name = UPPER('%s')",
6396     1,
6397     NULL,
6398     &dsin_validate,
6399   },
6400
6401   {
6402     /* Q_GSHI - GET_SERVER_HOST_INFO */
6403     "get_server_host_info",
6404     "gshi",
6405     2,
6406     RETRIEVE,
6407     "sh",
6408     SERVERHOSTS_TABLE,
6409     "sh.service, m.name, sh.enable, sh.override, sh.success, sh.inprogress, sh.hosterror, sh.hosterrmsg, sh.ltt, sh.lts, sh.value1, sh.value2, sh.value3, TO_CHAR(sh.modtime, 'DD-mon-YYYY HH24:MI:SS'), sh.modby, sh.modwith FROM serverhosts sh, machine m",
6410     gshi_fields,
6411     16,
6412     "sh.service LIKE UPPER('%s') AND m.name LIKE UPPER('%s') AND m.mach_id = sh.mach_id",
6413     2,
6414     "sh.service, m.name",
6415     &gshi_validate,
6416   },
6417
6418   {
6419     /* Q_QGSH - QUALIFIED_GET_SERVER_HOST */
6420     "qualified_get_server_host",
6421     "qgsh",
6422     2,
6423     RETRIEVE,
6424     0,
6425     SERVERHOSTS_TABLE,
6426     0,
6427     qgsh_fields,
6428     2,
6429     0,
6430     6,
6431     NULL,
6432     &qgsh_validate,
6433   },
6434
6435   {
6436     /* Q_ASHI - ADD_SERVER_HOST_INFO */
6437     "add_server_host_info",
6438     "ashi",
6439     2,
6440     APPEND,
6441     "sh",
6442     SERVERHOSTS_TABLE,
6443     "INTO serverhosts (service, mach_id, enable, value1, value2, value3) VALUES (UPPER('%s'), %d, %s, %s, %s, NVL('%s', CHR(0)))",
6444     ashi_fields,
6445     6,
6446     NULL,
6447     0,
6448     NULL,
6449     &ashi_validate,
6450   },
6451
6452   {
6453     /* Q_USHI - UPDATE_SERVER_HOST_INFO */
6454     "update_server_host_info",
6455     "ushi",
6456     2,
6457     UPDATE,
6458     "sh",
6459     SERVERHOSTS_TABLE,
6460     "serverhosts SET enable = %s, value1 = %s, value2 = %s, value3 = NVL('%s', CHR(0))",
6461     ashi_fields,
6462     4,
6463     "service = UPPER('%s') AND mach_id = %d",
6464     2,
6465     NULL,
6466     &ashi_validate,
6467   },
6468
6469   {
6470     /* Q_RSHE - RESET_SERVER_HOST_ERROR */
6471     "reset_server_host_error",
6472     "rshe",
6473     2,
6474     UPDATE,
6475     "sh",
6476     SERVERHOSTS_TABLE,
6477     "serverhosts SET hosterror = 0",
6478     dshi_fields,
6479     0,
6480     "service = UPPER('%s') AND mach_id = %d",
6481     2,
6482     NULL,
6483     &rshe_validate,
6484   },
6485
6486   {
6487     /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
6488     "set_server_host_override",
6489     "ssho",
6490     2,
6491     UPDATE,
6492     "sh",
6493     SERVERHOSTS_TABLE,
6494     "serverhosts SET override = 1",
6495     dshi_fields,
6496     0,
6497     "service = UPPER('%s') AND mach_id = %d",
6498     2,
6499     NULL,
6500     &ssho_validate,
6501   },
6502
6503   {
6504     /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
6505     "set_server_host_internal",
6506     "sshi",
6507     2,
6508     UPDATE,
6509     "s",
6510     SERVERHOSTS_TABLE,
6511     "serverhosts SET override = %s, success = %s, inprogress = %s, hosterror = %s, hosterrmsg = NVL('%s', CHR(0)), ltt = %s, lts = %s",
6512     sshi_fields,
6513     7,
6514     "service = UPPER('%s') AND mach_id = %d",
6515     2,
6516     NULL,
6517     &sshi_validate,
6518   },
6519
6520   {
6521     /* Q_DSHI - DELETE_SERVER_HOST_INFO */
6522     "delete_server_host_info",
6523     "dshi",
6524     2,
6525     DELETE,
6526     "sh",
6527     SERVERHOSTS_TABLE,
6528     NULL,
6529     dshi_fields,
6530     0,
6531     "service = UPPER('%s') AND mach_id = %d",
6532     2,
6533     NULL,
6534     &dshi_validate,
6535   },
6536
6537   {
6538     /* Q_GSLO - GET_SERVER_LOCATIONS */
6539     "get_server_locations",
6540     "gslo",
6541     2,
6542     RETRIEVE,
6543     "sh",
6544     SERVERHOSTS_TABLE,
6545     "sh.service, m.name FROM serverhosts sh, machine m",
6546     gslo_fields,
6547     2,
6548     "sh.service LIKE UPPER('%s') AND sh.mach_id = m.mach_id",
6549     1,
6550     "sh.service, m.name",
6551     NULL,
6552   },
6553
6554   {
6555     /* Q_GFSL - GET_FILESYS_BY_LABEL */
6556     "get_filesys_by_label",
6557     "gfsl",
6558     2,
6559     RETRIEVE,
6560     "fs",
6561     FILESYS_TABLE,
6562     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
6563     gfsl_fields,
6564     14,
6565     "fs.label LIKE '%s' AND fs.mach_id = m.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
6566     1,
6567     "fs.label",
6568     &gfsl_validate,
6569   },
6570
6571   {
6572     /* Q_GFSM - GET_FILESYS_BY_MACHINE */
6573     "get_filesys_by_machine",
6574     "gfsm",
6575     2,
6576     RETRIEVE,
6577     "fs",
6578     FILESYS_TABLE,
6579     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
6580     gfsm_fields,
6581     14,
6582     "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
6583     1,
6584     "fs.label",
6585     &gfsm_validate,
6586   },
6587
6588   {
6589     /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
6590     "get_filesys_by_nfsphys",
6591     "gfsn",
6592     2,
6593     RETRIEVE,
6594     "fs",
6595     FILESYS_TABLE,
6596     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l, nfsphys np",
6597     gfsn_fields,
6598     14,
6599     "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id AND np.nfsphys_id = fs.phys_id AND np.dir LIKE '%s'",
6600     2,
6601     "fs.label",
6602     &gfsn_validate,
6603   },
6604
6605   {
6606     /* Q_GFSG - GET_FILESYS_BY_GROUP */
6607     "get_filesys_by_group",
6608     "gfsg",
6609     2,
6610     RETRIEVE,
6611     "fs",
6612     FILESYS_TABLE,
6613     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
6614     gfsg_fields,
6615     14,
6616     "fs.owners = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
6617     1,
6618     "fs.label",
6619     &gfsg_validate,
6620   },
6621
6622   {
6623     /* Q_GFSP - GET_FILESYS_BY_PATH */
6624     "get_filesys_by_path",
6625     "gfsp",
6626     2,
6627     RETRIEVE,
6628     "fs",
6629     FILESYS_TABLE,
6630     "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
6631     gfsp_fields,
6632     14,
6633     "fs.name LIKE '%s' AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = list_id",
6634     1,
6635     "fs.label",
6636     &VDfix_modby,
6637   },
6638
6639   {
6640     /* Q_AFIL - ADD_FILESYS */ /* uses prefetch_value() for filsys_id */
6641     "add_filesys",
6642     "afil",
6643     2,
6644     APPEND,
6645     "fs",
6646     FILESYS_TABLE,
6647     "INTO filesys (label, type, mach_id, name, mount, rwaccess, comments, owner, owners, createflg, lockertype, filsys_id) VALUES ('%s', '%s', %d, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', NVL('%s', CHR(0)), %d, %d, %s, '%s', %s)",
6648     afil_fields,
6649     11,
6650     0,
6651     0,
6652     NULL,
6653     &afil_validate,
6654   },
6655
6656   {
6657     /* Q_UFIL - UPDATE_FILESYS */
6658     "update_filesys",
6659     "ufil",
6660     2,
6661     UPDATE,
6662     "fs",
6663     FILESYS_TABLE,
6664     "filesys SET label = '%s', type = '%s', mach_id = %d, name = NVL('%s', CHR(0)), mount = NVL('%s', CHR(0)), rwaccess = '%s', comments = NVL('%s', CHR(0)), owner = %d, owners = %d, createflg = %s, lockertype = '%s'",
6665     ufil_fields,
6666     11,
6667     "filsys_id = %d",
6668     1,
6669     NULL,
6670     &ufil_validate,
6671   },
6672
6673   {
6674     /* Q_DFIL - DELETE_FILESYS */
6675     "delete_filesys",
6676     "dfil",
6677     2,
6678     DELETE,
6679     "fs",
6680     FILESYS_TABLE,
6681     NULL,
6682     dfil_fields,
6683     0,
6684     "filsys_id = %d",
6685     1,
6686     NULL,
6687     &dfil_validate,
6688   },
6689
6690   {
6691     /* Q_GFGM - GET_FSGROUP_MEMBERS */
6692     "get_fsgroup_members",
6693     "gfgm",
6694     2,
6695     RETRIEVE,
6696     "fg",
6697     FSGROUP_TABLE,
6698     "fs.label, fg.key FROM fsgroup fg, filesys fs",
6699     gfgm_fields,
6700     2,
6701     "fg.group_id = %d AND fs.filsys_id = fg.filsys_id",
6702     1,
6703     "fs.label, fg.key",
6704     &gfgm_validate,
6705   },
6706
6707   {
6708     /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
6709     "add_filesys_to_fsgroup",
6710     "aftg",
6711     2,
6712     APPEND,
6713     "fg",
6714     FSGROUP_TABLE,
6715     "INTO fsgroup (group_id, filsys_id, key) VALUES (%d, %d, '%s')",
6716     gfgm_fields,
6717     3,
6718     NULL,
6719     0,
6720     NULL,
6721     &aftg_validate,
6722   },
6723
6724   {
6725     /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
6726     "remove_filesys_from_fsgroup",
6727     "rffg",
6728     2,
6729     DELETE,
6730     "fg",
6731     FSGROUP_TABLE,
6732     NULL,
6733     gfgm_fields,
6734     0,
6735     "group_id = %d AND filsys_id = %d",
6736     2,
6737     NULL,
6738     &aftg_validate,
6739   },
6740
6741   {
6742     /* Q_GANF - GET_ALL_NFSPHYS */
6743     "get_all_nfsphys",
6744     "ganf",
6745     2,
6746     RETRIEVE,
6747     "np",
6748     NFSPHYS_TABLE,
6749     "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
6750     ganf_fields,
6751     9,
6752     "m.mach_id = np.mach_id",
6753     0,
6754     "m.name, np.dir",
6755     &VDfix_modby,
6756   },
6757
6758   {
6759     /* Q_GNFP - GET_NFSPHYS */
6760     "get_nfsphys",
6761     "gnfp",
6762     2,
6763     RETRIEVE,
6764     "np",
6765     NFSPHYS_TABLE,
6766     "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
6767     gnfp_fields,
6768     9,
6769     "np.mach_id = %d AND np.dir LIKE '%s' AND m.mach_id = np.mach_id",
6770     2,
6771     "m.name, np.dir",
6772     &gnfp_validate,
6773   },
6774
6775   {
6776     /* Q_ANFP - ADD_NFSPHYS */ /* uses prefetch_value() for nfsphys_id */
6777     "add_nfsphys",
6778     "anfp",
6779     2,
6780     APPEND,
6781     "np",
6782     NFSPHYS_TABLE,
6783     "INTO nfsphys (mach_id, dir, device, status, allocated, partsize, nfsphys_id) VALUES (%d, '%s', NVL('%s', CHR(0)), %s, %s, %s, %s)",
6784     ganf_fields,
6785     6,
6786     0,
6787     0,
6788     NULL,
6789     &anfp_validate,
6790   },
6791
6792   {
6793     /* Q_UNFP - UPDATE_NFSPHYS */
6794     "update_nfsphys",
6795     "unfp",
6796     2,
6797     UPDATE,
6798     "np",
6799     NFSPHYS_TABLE,
6800     "nfsphys SET device = NVL('%s', CHR(0)), status = %s, allocated = %s, partsize = %s",
6801     ganf_fields,
6802     4,
6803     "mach_id = %d AND dir = '%s'",
6804     2,
6805     NULL,
6806     &unfp_validate,
6807   },
6808
6809   {
6810     /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
6811     "adjust_nfsphys_allocation",
6812     "ajnf",
6813     2,
6814     UPDATE,
6815     "np",
6816     NFSPHYS_TABLE,
6817     "nfsphys SET allocated = allocated + %s",
6818     ajnf_fields,
6819     1,
6820     "mach_id = %d AND dir = '%s'",
6821     2,
6822     NULL,
6823     &ajnf_validate,
6824   },
6825
6826   {
6827     /* Q_DNFP - DELETE_NFSPHYS */
6828     "delete_nfsphys",
6829     "dnfp",
6830     2,
6831     DELETE,
6832     "np",
6833     NFSPHYS_TABLE,
6834     NULL,
6835     dnfp_fields,
6836     0,
6837     "mach_id = %d AND dir = '%s'",
6838     2,
6839     NULL,
6840     &dnfp_validate,
6841   },
6842
6843   {
6844     /* Q_GQOT - GET_QUOTA */
6845     "get_quota",
6846     "gqot",
6847     2,
6848     RETRIEVE,
6849     "q",
6850     QUOTA_TABLE,
6851     "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
6852     gqot_fields,
6853     9,
6854     "fs.label LIKE '%s' AND q.type = '%s' AND q.entity_id = %d AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
6855     3,
6856     NULL,
6857     &gqot_validate,
6858   },
6859
6860   {
6861     /* Q_GQBF - GET_QUOTA_BY_FILESYS */
6862     "get_quota_by_filesys",
6863     "gqbf",
6864     2,
6865     RETRIEVE,
6866     "q",
6867     QUOTA_TABLE,
6868     "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
6869     gqbf_fields,
6870     9,
6871     "fs.label LIKE '%s' AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
6872     1,
6873     "fs.label, q.type",
6874     &gqbf_validate,
6875   },
6876
6877   {
6878     /* Q_AQOT - ADD_QUOTA */ /* prefetch_filsys() gets last 1 value */
6879     "add_quota",
6880     "aqot",
6881     2,
6882     APPEND,
6883     0,
6884     QUOTA_TABLE,
6885     "INTO quota (filsys_id, type, entity_id, quota, phys_id) VALUES ('%s', %d, %d, %s, %s)",
6886     aqot_fields,
6887     4,
6888     NULL,
6889     0,
6890     NULL,
6891     &aqot_validate,
6892   },
6893
6894   {
6895     /* Q_UQOT - UPDATE_QUOTA */
6896     "update_quota",
6897     "uqot",
6898     2,
6899     UPDATE,
6900     0,
6901     QUOTA_TABLE,
6902     "quota SET quota = %s",
6903     aqot_fields,
6904     1,
6905     0,
6906     3,
6907     NULL,
6908     &uqot_validate,
6909   },
6910
6911   {
6912     /* Q_DQOT - DELETE_QUOTA */
6913     "delete_quota",
6914     "dqot",
6915     2,
6916     DELETE,
6917     0,
6918     QUOTA_TABLE,
6919     NULL,
6920     aqot_fields,
6921     0,
6922     0,
6923     3,
6924     NULL,
6925     &dqot_validate,
6926   },
6927
6928   {
6929     /* Q_GNFQ - GET_NFS_QUOTAS */
6930     "get_nfs_quota",
6931     "gnfq",
6932     2,
6933     RETRIEVE,
6934     "q",
6935     QUOTA_TABLE,
6936     "fs.label, u.login, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, users u, machine m",
6937     gnfq_fields,
6938     8,
6939     "fs.label LIKE '%s' AND q.type = 'USER' AND q.entity_id = u.users_id AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id AND u.login = '%s'",
6940     2,
6941     "fs.label, u.login",
6942     &gnfq_validate,
6943   },
6944
6945   {
6946     /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
6947     "get_nfs_quotas_by_partition",
6948     "gnqp",
6949     2,
6950     RETRIEVE,
6951     "q",
6952     QUOTA_TABLE,
6953     "fs.label, u.login, q.quota, np.dir, m.name FROM quota q, filesys fs, users u, nfsphys np, machine m",
6954     gnqp_fields,
6955     5,
6956     "np.mach_id = %d AND np.dir LIKE '%s' AND q.phys_id = np.nfsphys_id AND fs.filsys_id = q.filsys_id AND q.type = 'USER' AND u.users_id = q.entity_id AND m.mach_id = np.mach_id",
6957     2,
6958     "fs.label",
6959     NULL,
6960   },
6961
6962   {
6963     /* Q_ANFQ - ADD_NFS_QUOTA */ /* prefetch_filsys() gets last 1 value */
6964     "add_nfs_quota",
6965     "anfq",
6966     2,
6967     APPEND,
6968     0,
6969     QUOTA_TABLE,
6970     "INTO quota (type, filsys_id, entity_id, quota, phys_id ) VALUES ('USER', %d, %d, %s, %s)",
6971     anfq_fields,
6972     3,
6973     NULL,
6974     0,
6975     NULL,
6976     &anfq_validate,
6977   },
6978
6979   {
6980     /* Q_UNFQ - UPDATE_NFS_QUOTA */
6981     "update_nfs_quota",
6982     "unfq",
6983     2,
6984     UPDATE,
6985     0,
6986     QUOTA_TABLE,
6987     "quota SET quota = %s",
6988     anfq_fields,
6989     1,
6990     0,
6991     2,
6992     NULL,
6993     &unfq_validate,
6994   },
6995
6996   {
6997     /* Q_DNFQ - DELETE_NFS_QUOTA */
6998     "delete_nfs_quota",
6999     "dnfq",
7000     2,
7001     DELETE,
7002     0,
7003     QUOTA_TABLE,
7004     NULL,
7005     anfq_fields,
7006     0,
7007     0,
7008     2,
7009     NULL,
7010     &dnfq_validate,
7011   },
7012
7013   {
7014     /* Q_GZCL - GET_ZEPHYR_CLASS, v2 */
7015     "get_zephyr_class",
7016     "gzcl",
7017     2,
7018     RETRIEVE,
7019     "z",
7020     ZEPHYR_TABLE,
7021     "class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM zephyr",
7022     gzcl2_fields,
7023     12,
7024     "class LIKE '%s'",
7025     1,
7026     "class",
7027     &gzcl_validate,
7028   },
7029
7030   {
7031     /* Q_GZCL - GET_ZEPHYR_CLASS, v5 */
7032     "get_zephyr_class",
7033     "gzcl",
7034     5,
7035     RETRIEVE,
7036     "z",
7037     ZEPHYR_TABLE,
7038     "class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM zephyr",
7039     gzcl_fields,
7040     14,
7041     "class LIKE '%s'",
7042     1,
7043     "class",
7044     &gzcl_validate,
7045   },
7046
7047   {
7048     /* Q_AZCL - ADD_ZEPHYR_CLASS, v2 */
7049     "add_zephyr_class",
7050     "azcl",
7051     2,
7052     APPEND,
7053     "z",
7054     ZEPHYR_TABLE,
7055     "INTO zephyr (class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id) VALUES ('%s', '%s', %d, '%s', %d, '%s', %d, '%s', %d)",
7056     azcl2_fields,
7057     9,
7058     0,
7059     0,
7060     NULL,
7061     &azcl2_validate,
7062   },
7063
7064   {
7065     /* Q_AZCL - ADD_ZEPHYR_CLASS, v5 */
7066     "add_zephyr_class",
7067     "azcl",
7068     5,
7069     APPEND,
7070     "z",
7071     ZEPHYR_TABLE,
7072     "INTO zephyr (class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, owner_type, owner_id) VALUES ('%s', '%s', %d, '%s', %d, '%s', %d, '%s', %d, '%s', %d)",
7073     azcl_fields,
7074     11,
7075     0,
7076     0,
7077     NULL,
7078     &azcl_validate,
7079   },
7080
7081   {
7082     /* Q_UZCL - UPDATE_ZEPHYR_CLASS, v2 */
7083     "update_zephyr_class",
7084     "uzcl",
7085     2,
7086     UPDATE,
7087     "z",
7088     ZEPHYR_TABLE,
7089     "zephyr SET class = '%s', xmt_type = '%s', xmt_id = %d, sub_type = '%s', sub_id = %d, iws_type = '%s', iws_id = %d, iui_type = '%s', iui_id = %d",
7090     uzcl2_fields,
7091     9,
7092     "class = '%s'",
7093     1,
7094     NULL,
7095     &uzcl2_validate,
7096   },
7097
7098   {
7099     /* Q_UZCL - UPDATE_ZEPHYR_CLASS, v5 */
7100     "update_zephyr_class",
7101     "uzcl",
7102     5,
7103     UPDATE,
7104     "z",
7105     ZEPHYR_TABLE,
7106     "zephyr SET class = '%s', xmt_type = '%s', xmt_id = %d, sub_type = '%s', sub_id = %d, iws_type = '%s', iws_id = %d, iui_type = '%s', iui_id = %d, owner_type = '%s', owner_id = %d",
7107     uzcl_fields,
7108     11,
7109     "class = '%s'",
7110     1,
7111     NULL,
7112     &uzcl_validate,
7113   },
7114
7115   {
7116     /* Q_DZCL - DELETE_ZEPHYR_CLASS */
7117     "delete_zephyr_class",
7118     "dzcl",
7119     2,
7120     DELETE,
7121     "z",
7122     ZEPHYR_TABLE,
7123     0,
7124     uzcl_fields,
7125     0,
7126     "class = '%s'",
7127     1,
7128     NULL,
7129     &dzcl_validate,
7130   },
7131
7132   {
7133     /* Q_GSHA - GET_SERVER_HOST_ACCESS */
7134     "get_server_host_access",
7135     "gsha",
7136     2,
7137     RETRIEVE,
7138     "ha",
7139     HOSTACCESS_TABLE,
7140     "m.name, ha.acl_type, ha.acl_id, TO_CHAR(ha.modtime, 'DD-mon-YYYY HH24:MI:SS'), ha.modby, ha.modwith FROM hostaccess ha, machine m",
7141     gsha_fields,
7142     6,
7143     "m.name LIKE UPPER('%s') AND ha.mach_id = m.mach_id",
7144     1,
7145     "m.name",
7146     &gsha_validate,
7147   },
7148
7149   {
7150     /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
7151     "add_server_host_access",
7152     "asha",
7153     2,
7154     APPEND,
7155     "ha",
7156     HOSTACCESS_TABLE,
7157     "INTO hostaccess (mach_id, acl_type, acl_id) VALUES (%d, '%s', %d)",
7158     asha_fields,
7159     3,
7160     0,
7161     0,
7162     NULL,
7163     &asha_validate,
7164   },
7165
7166   {
7167     /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
7168     "update_server_host_access",
7169     "usha",
7170     2,
7171     UPDATE,
7172     "ha",
7173     HOSTACCESS_TABLE,
7174     "hostaccess SET acl_type = '%s', acl_id = %d",
7175     asha_fields,
7176     2,
7177     "mach_id = %d",
7178     1,
7179     NULL,
7180     &asha_validate,
7181   },
7182
7183   {
7184     /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
7185     "delete_server_host_access",
7186     "dsha",
7187     2,
7188     DELETE,
7189     "ha",
7190     HOSTACCESS_TABLE,
7191     0,
7192     asha_fields,
7193     0,
7194     "mach_id = %d",
7195     1,
7196     NULL,
7197     &VDmach,
7198   },
7199
7200   {
7201     /* Q_GACL - GET_ACL */
7202     "get_acl",
7203     "gacl",
7204     2,
7205     RETRIEVE,
7206     "ac",
7207     ACL_TABLE,
7208     "m.name, ac.target, ac.kind, l.name FROM acl ac, machine m, list l",
7209     gacl_fields,
7210     4,
7211     "m.mach_id = %d AND m.mach_id = ac.mach_id AND ac.target LIKE '%s' AND l.list_id = ac.list_id",
7212     2,
7213     "m.name, ac.target, ac.kind",
7214     &gacl_validate,
7215   },
7216
7217   {
7218     /* Q_AACL - ADD_ACL */
7219     "add_acl",
7220     "aacl",
7221     2,
7222     APPEND,
7223     "ac",
7224     ACL_TABLE,
7225     "INTO acl (mach_id, target, kind, list_id) VALUES (%d, '%s', '%s', %d)",
7226     aacl_fields,
7227     4,
7228     0,
7229     0,
7230     NULL,
7231     &aacl_validate,
7232   },
7233
7234   {
7235     /* Q_DACL - DELETE_ACL */
7236     "delete_acl",
7237     "dacl",
7238     2,
7239     DELETE,
7240     "ac",
7241     ACL_TABLE,
7242     0,
7243     dacl_fields,
7244     0,
7245     "mach_id = %d AND target = '%s'",
7246     2,
7247     NULL,
7248     &gacl_validate,
7249   },
7250
7251   {
7252     /* Q_GSVC - GET_SERVICE */
7253     "get_service",
7254     "gsvc",
7255     2,
7256     RETRIEVE,
7257     "ss",
7258     SERVICES_TABLE,
7259     "name, protocol, port, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM services",
7260     gsvc_fields,
7261     7,
7262     "name LIKE '%s' AND protocol LIKE '%s'",
7263     2,
7264     "name",
7265     &VDfix_modby,
7266   },
7267
7268   {
7269     /* Q_ASVC - ADD_SERVICE */
7270     "add_service",
7271     "asvc",
7272     2,
7273     APPEND,
7274     "ss",
7275     SERVICES_TABLE,
7276     "INTO services (name, protocol, port, description) VALUES ('%s', '%s', %s, NVL('%s', CHR(0)))",
7277     asvc_fields,
7278     4,
7279     NULL,
7280     0,
7281     NULL,
7282     &asvc_validate,
7283   },
7284
7285   {
7286     /* Q_DSVC - DELETE_SERVICE */
7287     "delete_service",
7288     "dsvc",
7289     2,
7290     DELETE,
7291     "ss",
7292     SERVICES_TABLE,
7293     0,
7294     dsvc_fields,
7295     0,
7296     "name = '%s' AND protocol = '%s'",
7297     2,
7298     NULL,
7299     &dsvc_validate,
7300   },
7301
7302   {
7303     /* Q_GPRN - GET_PRINTER */
7304     "get_printer",
7305     "gprn",
7306     2,
7307     RETRIEVE,
7308     "pr",
7309     PRINTERS_TABLE,
7310     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7311     gprn_fields,
7312     19,
7313     "pr.name LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7314     1,
7315     "pr.name",
7316     &VDfix_modby,
7317   },
7318
7319   {
7320     /* Q_GPBD - GET_PRINTER_BY_DUPLEXNAME */
7321     "get_printer_by_duplexname",
7322     "gpbd",
7323     2,
7324     RETRIEVE,
7325     "pr",
7326     PRINTERS_TABLE,
7327     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7328     gpbd_fields,
7329     19,
7330     "pr.duplexname LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7331     1,
7332     "pr.name",
7333     &VDfix_modby,
7334   },
7335
7336   {
7337     /* Q_GPBE - GET_PRINTER_BY_ETHERNET */
7338     "get_printer_by_ethernet",
7339     "gpbe",
7340     2,
7341     RETRIEVE,
7342     "pr",
7343     PRINTERS_TABLE,
7344     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7345     gpbd_fields,
7346     19,
7347     "m1.hwaddr LIKE LOWER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7348     1,
7349     "pr.name",
7350     &VDfix_modby,
7351   },
7352
7353   {
7354     /* Q_GPBH - GET_PRINTER_BY_HOSTNAME */
7355     "get_printer_by_hostname",
7356     "gpbh",
7357     2,
7358     RETRIEVE,
7359     "pr",
7360     PRINTERS_TABLE,
7361     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7362     gpbh_fields,
7363     19,
7364     "m1.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7365     1,
7366     "pr.name",
7367     &VDfix_modby,
7368   },
7369
7370   {
7371     /* Q_GPBR - GET_PRINTER_BY_RM */
7372     "get_printer_by_rm",
7373     "gpbr",
7374     2,
7375     RETRIEVE,
7376     "pr",
7377     PRINTERS_TABLE,
7378     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7379     gpbr_fields,
7380     19,
7381     "m3.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7382     1,
7383     "pr.name",
7384     &VDfix_modby,
7385   },
7386
7387   {
7388     /* Q_GPBL - GET_PRINTER_BY_LOCATION */
7389     "get_printer_by_location",
7390     "gpbl",
7391     2,
7392     RETRIEVE,
7393     "pr",
7394     PRINTERS_TABLE,
7395     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7396     gpbl_fields,
7397     19,
7398     "UPPER(pr.location) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7399     1,
7400     "pr.name",
7401     &VDfix_modby,
7402   },
7403
7404   {
7405     /* Q_GPBC - GET_PRINTER_BY_CONTACT */
7406     "get_printer_by_contact",
7407     "gpbc",
7408     2,
7409     RETRIEVE,
7410     "pr",
7411     PRINTERS_TABLE,
7412     "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7413     gpbc_fields,
7414     19,
7415     "UPPER(pr.contact) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7416     1,
7417     "pr.name",
7418     &VDfix_modby,
7419   },
7420
7421   {
7422     /* Q_APRN - ADD_PRINTER */
7423     "add_printer",
7424     "aprn",
7425     2,
7426     APPEND,
7427     "pr",
7428     PRINTERS_TABLE,
7429     "INTO printers (name, type, hwtype, duplexname, mach_id, loghost, rm, rp, rq, ka, pc, ac, lpc_acl, banner, location, contact) VALUES ('%s', '%s', '%s', NVL('%s', CHR(0)), %d, %d, %d, NVL('%s', CHR(0)), %d, %s, %s, %d, %d, %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)))",
7430     aprn_fields,
7431     16,
7432     0,
7433     0,
7434     NULL,
7435     &aprn_validate,
7436   },
7437
7438   {
7439     /* Q_UPRN - UPDATE_PRINTER */
7440     "update_printer",
7441     "uprn",
7442     2,
7443     UPDATE,
7444     "pr",
7445     PRINTERS_TABLE,
7446     "printers SET name = '%s', type = '%s', hwtype = '%s', duplexname = NVL('%s', CHR(0)), mach_id = %d, loghost = %d, rm = %d, rp = NVL('%s', CHR(0)), rq = %d, ka = %d, pc = %d, ac = %d, lpc_acl = %d, banner = %d, location = NVL('%s', CHR(0)), contact = NVL('%s', CHR(0))",
7447     uprn_fields,
7448     16,
7449     0,
7450     0,
7451     NULL,
7452     &uprn_validate,
7453   },
7454
7455   {
7456     /* Q_DPRN - DELETE_PRINTER */
7457     "delete_printer",
7458     "dprn",
7459     2,
7460     DELETE,
7461     "pr",
7462     PRINTERS_TABLE,
7463     0,
7464     aprn_fields,
7465     0,
7466     "name = '%s'",
7467     1,
7468     NULL,
7469     &dprn_validate,
7470   },
7471
7472   {
7473     /* Q_GPSV - GET_PRINT_SERVER */
7474     "get_print_server",
7475     "gpsv",
7476     2,
7477     RETRIEVE,
7478     "ps",
7479     PRINTSERVERS_TABLE,
7480     "m.name, ps.kind, s.string, ps.owner_type, ps.owner_id, l.name, TO_CHAR(ps.modtime, 'DD-mon-YYYY HH24:MI:SS'), ps.modby, ps.modwith FROM printservers ps, machine m, strings s, list l",
7481     gpsv_fields,
7482     9,
7483     "ps.mach_id = %d AND m.mach_id = ps.mach_id AND s.string_id = ps.printer_types AND l.list_id = ps.lpc_acl",
7484     1,
7485     NULL,
7486     &gpsv_validate,
7487   },
7488
7489   {
7490     /* Q_APSV - ADD_PRINT_SERVER */
7491     "add_print_server",
7492     "apsv",
7493     2,
7494     APPEND,
7495     "ps",
7496     PRINTSERVERS_TABLE,
7497     "INTO printservers (mach_id, kind, printer_types, owner_type, owner_id, lpc_acl) VALUES (%d, '%s', %d, '%s', %d, %d)",
7498     apsv_fields,
7499     6,
7500     0,
7501     0,
7502     NULL,
7503     &apsv_validate,
7504   },
7505
7506   {
7507     /* Q_UPSV - UPDATE_PRINT_SERVER */
7508     "update_print_server",
7509     "upsv",
7510     2,
7511     UPDATE,
7512     "ps",
7513     PRINTSERVERS_TABLE,
7514     "printservers SET kind = '%s', printer_types = %d, owner_type = '%s', owner_id = %d, lpc_acl = %d",
7515     apsv_fields,
7516     5,
7517     "mach_id = %d",
7518     1,
7519     NULL,
7520     &apsv_validate,
7521   },
7522
7523   {
7524     /* Q_DPSV - DELETE_PRINT_SERVER */
7525     "delete_print_server",
7526     "dpsv",
7527     2,
7528     DELETE,
7529     "ps",
7530     PRINTSERVERS_TABLE,
7531     0,
7532     dpsv_fields,
7533     0,
7534     "mach_id = %d",
7535     1,
7536     NULL,
7537     &dpsv_validate,
7538   },
7539
7540   {
7541     /* Q_GALI - GET_ALIAS */
7542     "get_alias",
7543     "gali",
7544     2,
7545     RETRIEVE,
7546     "a",
7547     ALIAS_TABLE,
7548     "name, type, trans FROM alias",
7549     gali_fields,
7550     3,
7551     "name LIKE '%s' AND type LIKE '%s' AND trans LIKE '%s'",
7552     3,
7553     "type, name, trans",
7554     NULL,
7555   },
7556
7557   {
7558     /* Q_AALI - ADD_ALIAS */
7559     "add_alias",
7560     "aali",
7561     2,
7562     APPEND,
7563     "a",
7564     ALIAS_TABLE,
7565     "INTO alias (name, type, trans) VALUES ('%s', '%s', '%s')",
7566     aali_fields,
7567     3,
7568     NULL,
7569     0,
7570     NULL,
7571     &aali_validate,
7572   },
7573
7574   {
7575     /* Q_DALI - DELETE_ALIAS */
7576     "delete_alias",
7577     "dali",
7578     2,
7579     DELETE,
7580     "a",
7581     ALIAS_TABLE,
7582     NULL,
7583     aali_fields,
7584     0,
7585     "name = '%s' AND type = '%s' AND  trans = '%s'",
7586     3,
7587     NULL,
7588     &dali_validate,
7589   },
7590
7591   {
7592     /* Q_GVAL - GET_VALUE */
7593     "get_value",
7594     "gval",
7595     2,
7596     RETRIEVE,
7597     "val",
7598     NUMVALUES_TABLE,
7599     "value FROM numvalues",
7600     gval_fields,
7601     1,
7602     "name = '%s'",
7603     1,
7604     NULL,
7605     &gval_validate,
7606   },
7607
7608   {
7609     /* Q_AVAL - ADD_VALUE */
7610     "add_value",
7611     "aval",
7612     2,
7613     APPEND,
7614     "val",
7615     NUMVALUES_TABLE,
7616     "INTO numvalues (name, value) VALUES ('%s', %s)",
7617     aval_fields,
7618     2,
7619     NULL,
7620     0,
7621     NULL,
7622     &aval_validate,
7623   },
7624
7625   {
7626     /* Q_UVAL - UPDATE_VALUE */
7627     "update_value",
7628     "uval",
7629     2,
7630     UPDATE,
7631     "val",
7632     NUMVALUES_TABLE,
7633     "numvalues SET value = %s",
7634     aval_fields,
7635     1,
7636     "name = '%s'",
7637     1,
7638     NULL,
7639     &aval_validate,
7640   },
7641
7642   {
7643     /* Q_DVAL - DELETE_VALUE */
7644     "delete_value",
7645     "dval",
7646     2,
7647     DELETE,
7648     "val",
7649     NUMVALUES_TABLE,
7650     NULL,
7651     dval_fields,
7652     0,
7653     "name = '%s'",
7654     1,
7655     NULL,
7656     &aval_validate,
7657   },
7658
7659   {
7660     /* Q_GATS - GET_ALL_TABLE_STATS */
7661     "get_all_table_stats",
7662     "gats",
7663     2,
7664     RETRIEVE,
7665     "tbs",
7666     TBLSTATS_TABLE,
7667     "table_name, appends, updates, deletes, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS') FROM tblstats",
7668     gats_fields,
7669     5,
7670     NULL,
7671     0,
7672     "table_name",
7673     0,
7674   },
7675
7676   {
7677     /* Q__SDL - _SET_DEBUG_LEVEL */
7678     "_set_debug_level",
7679     "_sdl",
7680     2,
7681     UPDATE,
7682     NULL,
7683     0,
7684     NULL,
7685     _sdl_fields,
7686     1,
7687     NULL,
7688     0,
7689     NULL,
7690     &_sdl_validate,
7691   },
7692
7693   {
7694     /* Q_GCON - GET_CONTAINER, v7 */
7695     "get_container",
7696     "gcon",
7697     7,
7698     RETRIEVE,
7699     "c",
7700     CONTAINERS_TABLE,
7701     "name, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM containers",
7702     gcon7_fields,
7703     11,
7704     "LOWER(name) LIKE LOWER('%s') AND cnt_id != 0",
7705     1,
7706     NULL,
7707     &gcon_validate,
7708   },
7709
7710   {
7711     /* Q_GCON - GET_CONTAINER, v9 */
7712     "get_container",
7713     "gcon",
7714     9,
7715     RETRIEVE,
7716     "c",
7717     CONTAINERS_TABLE,
7718     "name, publicflg, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM containers",
7719     gcon_fields,
7720     12,
7721     "LOWER(name) LIKE LOWER('%s') AND cnt_id != 0",
7722     1,
7723     NULL,
7724     &gcon_validate,
7725   },
7726
7727   {
7728     /* Q_ACON - ADD_CONTAINER, v7 */ /* uses prefetch_value() for cnt_id */
7729     "add_container",
7730     "acon",
7731     7,
7732     APPEND,
7733     "c",
7734     CONTAINERS_TABLE,
7735     "INTO containers (name, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, cnt_id) VALUES ('%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, '%s', %d, %s)",
7736     acon7_fields,
7737     8,
7738     0,
7739     0,
7740     NULL,
7741     &acon7_validate,
7742   },
7743
7744   {
7745     /* Q_ACON - ADD_CONTAINER, v9 */ /* uses prefetch_value() for cnt_id */
7746     "add_container",
7747     "acon",
7748     9,
7749     APPEND,
7750     "c",
7751     CONTAINERS_TABLE,
7752     "INTO containers (name, publicflg, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, cnt_id) VALUES ('%s', %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, '%s', %d, %s)",
7753     acon_fields,
7754     9,
7755     0,
7756     0,
7757     NULL,
7758     &acon_validate,
7759   },
7760
7761   {
7762     /* Q_UCON - UPDATE_CONTAINER, v7 */
7763     "update_container",
7764     "ucon",
7765     7,
7766     UPDATE,
7767     0,
7768     CONTAINERS_TABLE,
7769     0,
7770     ucon7_fields,
7771     8,
7772     0,
7773     1,
7774     NULL,
7775     &ucon7_validate,
7776   },
7777
7778   {
7779     /* Q_UCON - UPDATE_CONTAINER, v9 */
7780     "update_container",
7781     "ucon",
7782     9,
7783     UPDATE,
7784     0,
7785     CONTAINERS_TABLE,
7786     0,
7787     ucon_fields,
7788     9,
7789     0,
7790     1,
7791     NULL,
7792     &ucon_validate,
7793   },
7794
7795   {
7796     /* Q_DCON - DELETE_CONTAINER, v7 */
7797     "delete_container",
7798     "dcon",
7799     7,
7800     DELETE,
7801     "c",
7802     CONTAINERS_TABLE,
7803     NULL,
7804     dcon_fields,
7805     0,
7806     "cnt_id = %d",
7807     1,
7808     NULL,
7809     &dcon_validate,
7810   },
7811
7812   {
7813     /* Q_AMCN - ADD_MACHINE_TO_CONTAINER, v7 */
7814     "add_machine_to_container",
7815     "amcn",
7816     7,
7817     APPEND,
7818     "mcn",
7819     MCNTMAP_TABLE,
7820     "INTO mcntmap (mach_id, cnt_id) VALUES (%d, %d)",
7821     amcn_fields,
7822     2,
7823     0,
7824     0,
7825     NULL,
7826     &amcn_validate,
7827   },
7828
7829   {
7830     /* Q_DMCN - DELETE_MACHINE_FROM_CONTAINER, v7 */
7831     "delete_machine_from_container",
7832     "dmcn",
7833     7,
7834     DELETE,
7835     "mcn",
7836     MCNTMAP_TABLE,
7837     0,
7838     amcn_fields,
7839     0,
7840     "mach_id = %d AND cnt_id = %d",
7841     2,
7842     NULL,
7843     &dmcn_validate,
7844   },
7845
7846   {
7847     /* Q_GMNM - GET_MACHINE_TO_CONTAINER_MAP, v7 */
7848     "get_machine_to_container_map",
7849     "gmnm",
7850     7,
7851     RETRIEVE,
7852     "mcn",
7853     MCNTMAP_TABLE,
7854     "m.name, c.name FROM machine m, containers c, mcntmap mcn",
7855     gmnm_fields,
7856     2,
7857     "m.name LIKE UPPER('%s') AND mcn.cnt_id = c.cnt_id AND mcn.mach_id = m.mach_id",
7858     1,
7859     NULL,
7860     NULL,
7861   },
7862
7863   {
7864     /* Q_GMOC - GET_MACHINES_OF_CONTAINER, v7 */
7865     "get_machines_of_container",
7866     "gmoc",
7867     7,
7868     RETRIEVE,
7869     NULL,
7870     MCNTMAP_TABLE,
7871     NULL,
7872     gmoc_fields,
7873     2,
7874     NULL,
7875     2,
7876     NULL,
7877     &gmoc_validate,
7878   },
7879
7880   {
7881     /* Q_GSOC - GET_SUBCONTAINERS_OF_CONTAINER, v7 */
7882     "get_subcontainers_of_container",
7883     "gsoc",
7884     7,
7885     RETRIEVE,
7886     NULL,
7887     CONTAINERS_TABLE,
7888     NULL,
7889     gsoc_fields,
7890     1,
7891     NULL,
7892     2,
7893     NULL,
7894     &gsoc_validate,
7895   },
7896
7897   {
7898     /* Q_GTLC - GET_TOPLEVEL_CONTAINERS, v7 */
7899     "get_toplevel_containers",
7900     "gtlc",
7901     7,
7902     RETRIEVE,
7903     "c",
7904     CONTAINERS_TABLE,
7905     "name FROM containers",
7906     gtlc_fields,
7907     1,
7908     "name NOT LIKE '%%/%%'",
7909     0,
7910     "name",
7911     NULL,
7912   },
7913
7914   {
7915     /* Q_SCLI - SET_CONTAINER_LIST, v9 */
7916     "set_container_list",
7917     "scli",
7918     9,
7919     UPDATE,
7920     0,
7921     CONTAINERS_TABLE,
7922     0,
7923     scli_fields,
7924     1,
7925     0,
7926     1,
7927     NULL,
7928     &scli_validate,
7929   },
7930
7931   {
7932     /* Q_GCLI - GET_CONTAINER_LIST, v9 */
7933     "get_container_list",
7934     "gcli",
7935     9,
7936     RETRIEVE,
7937     "c",
7938     CONTAINERS_TABLE,
7939     "c.name, l.name FROM containers c, list l",
7940     gcli_fields,
7941     2,
7942     "LOWER(c.name) = LOWER('%s') AND c.list_id = l.list_id AND c.list_id != 0",
7943     1,
7944     NULL,
7945     NULL,
7946   },
7947
7948   {
7949     /* G_GLIC - GET_LIST_CONTAINER, v9 */
7950     "get_list_container",
7951     "glic",
7952     9,
7953     RETRIEVE,
7954     "c",
7955     CONTAINERS_TABLE,
7956     "c.name, l.name FROM containers c, list l",
7957     glic_fields,
7958     2,
7959     "l.list_id = %d AND l.list_id = c.list_id and c.list_id != 0",
7960     1,
7961     NULL,
7962     &glic_validate,
7963   },
7964
7965 };
7966
7967 int QueryCount = (sizeof(Queries) / sizeof(struct query));
This page took 0.717813 seconds and 5 git commands to generate.