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