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