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