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