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