]> andersk Git - moira.git/blame - server/queries2.c
1) Fix ingres error routine to catch some errors
[moira.git] / server / queries2.c
CommitLineData
d33e787c 1/* This file defines the query dispatch table for version 2 of the protocol
2 *
3 * $Header$
4 *
5 * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
6 */
7
8#include "query.h"
9#include "sms_et.h"
10
11/* Specialized Support Query Routines */
12
13/* Special Access Check Routines */
14int access_user();
15int access_login();
16int access_list();
17int access_visible_list();
18int access_vis_list_by_name();
19int access_member();
20int access_qgli();
21int access_service();
22int access_filesys();
23
24/* Query Setup Routines */
25int setup_ausr();
26int setup_dusr();
27int setup_spop();
28int setup_dpob();
29int setup_dmac();
30int setup_dclu();
31int setup_alis();
32int setup_dlis();
33int setup_dsin();
34int setup_dshi();
35int setup_afil();
36int setup_ufil();
37int setup_dfil();
38int setup_ssif();
39int setup_sshi();
40int setup_dnfp();
41int setup_dnfq();
42
43/* Query Followup Routines */
44int followup_fix_modby();
45int followup_ausr();
46int followup_gpob();
47int followup_glin();
48int followup_amtl();
49int followup_anfq();
50int followup_gzcl();
51int followup_gsha();
52
53int set_modtime();
54int set_modtime_by_id();
55int set_finger_modtime();
56int set_pobox_modtime();
57int set_mach_modtime();
58int set_mach_modtime_by_id();
59int set_cluster_modtime_by_id();
60int set_serverhost_modtime();
61int set_nfsphys_modtime();
62int set_filesys_modtime();
63int set_zephyr_modtime();
64
65/* Special Queries */
66int set_pobox();
67int get_list_info();
68int get_acl_use();
69int qualified_get_lists();
70int get_members_of_list();
71int qualified_get_server();
72int qualified_get_serverhost();
73int trigger_dcm();
74int count_members_of_list();
75int get_lists_of_member();
76int register_user();
77int add_user_group();
78
79
80\f
81/* String compression
82 * These are commonly used strings in the table, defined here so that
83 * they can be shared.
84 */
85
86static char ACL_NAME[] = "acl_name";
87static char ACL_TYPE[] = "acl_type";
88static char CLASS[] = "class";
89static char CLU_ID[] = "clu_id";
90static char CLUSTER[] = "cluster";
91static char DESC[] = "description";
92static char DEVICE[] = "device";
93static char DIR[] = "dir";
94static char FILESYS[] = "filesys";
95static char FILSYS_ID[] = "filsys_id";
96static char FIRST[] = "firstname";
97static char LABEL[] = "label";
98static char LAST[] = "lastname";
99static char LIST[] = "list";
100static char LIST_ID[] = "list_id";
101static char LOCATION[] = "location";
102static char LOGIN[] = "login";
103static char MACH_ID[] = "mach_id";
104static char MACHINE[] = "machine";
105static char MIDDLE[] = "middle";
106static char MIT_ID[] = "mit_id";
107static char MOD1[] = "modtime";
108static char MOD2[] = "modby";
109static char MOD3[] = "modwith";
110static char NAME[] = "name";
111static char SERVICE[] = "service";
112static char SHELL[] = "shell";
113static char STATUS[] = "status";
114static char TYPE[] = "type";
115static char USERS[] = "users";
116static char USERS_ID[] = "users_id";
117static char UID[] = "uid";
118
119
120
121/* VALOBJS
122 * These are commonly used validation objects, defined here so that they
123 * can be shared.
124 */
125
126static struct valobj VOsort0[] = {
127 {V_SORT, 0, 0, 0, 0, 0},
128};
129
130static struct valobj VOdate1[] = {
131 {V_DATE, 1, 0, 0, 0, SMS_DATE},
132};
133
134static struct valobj VOuser0[] = {
135 {V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
136};
137
138static struct valobj VOmach0[] = {
139 {V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
140};
141
142static struct valobj VOclu0[] = {
143 {V_ID, 0, CLUSTER, NAME, CLU_ID, SMS_CLUSTER},
144};
145
146static struct valobj VOlist0[] = {
147 {V_ID, 0, LIST, NAME, LIST_ID, SMS_LIST},
148};
149
150static struct valobj VOchar0[] = {
151 {V_CHAR, 0},
152};
153
154static struct valobj VOsort01[] = {
155 {V_SORT, 1},
156 {V_SORT, 0},
157};
158
159static struct valobj VOuser0sort[] = {
160 {V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
161 {V_SORT, 0},
162};
163
164static struct valobj VOfilsys0user1[] = {
165 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
166 {V_ID, 1, USERS, LOGIN, USERS_ID, SMS_USER},
167};
168
169
170/* Validations
171 * Commonly used validation records defined here so that they may
172 * be shared.
173 */
174
175static struct validate VDmach = { VOmach0, 1 };
176static struct validate VDsort2= { VOsort01,2 };
177static struct validate VDsortf = {
178 VOsort0,
179 1,
180 0,
181 0,
182 0,
183 0,
184 0,
185 0,
186 followup_fix_modby,
187};
188
189
190\f
191/* Query data */
192
193static char *galo_fields[] = {
194 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE,
195};
196
197static char *gubl_fields[] = {
198 LOGIN,
199 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
200 MIT_ID, CLASS, MOD1, MOD2, MOD3
201};
202
203static struct validate gubx_validate = /* gubl, gubu */
204{
205 VOsort0,
206 1,
207 0,
208 0,
209 0,
210 0,
211 access_login,
212 0,
213 followup_fix_modby,
214};
215
216static char *gubu_fields[] = {
217 UID,
218 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
219 MIT_ID, CLASS, MOD1, MOD2, MOD3,
220};
221
222static char *gubn_fields[] = {
223 FIRST, LAST,
224 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
225 MIT_ID, CLASS, MOD1, MOD2, MOD3,
226};
227
228static char *gubc_fields[] = {
229 CLASS,
230 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
231 MIT_ID, CLASS, MOD1, MOD2, MOD3,
232};
233
234static char *gubm_fields[] = {
235 MIT_ID,
236 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
237 MIT_ID, CLASS, MOD1, MOD2, MOD3,
238};
239
240static char *ausr_fields[] = {
241 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
242 MIT_ID, CLASS,
243};
244
245static struct valobj ausr_valobj[] = {
246 {V_CHAR, 0},
247 {V_CHAR, 3},
248 {V_CHAR, 4},
249 {V_CHAR, 5},
250 {V_CHAR, 7},
251 {V_TYPE, 8, CLASS, 0, 0, SMS_BAD_CLASS},
252};
253
254static struct validate ausr_validate = {
255 ausr_valobj,
256 6,
257 LOGIN,
258 "u.login = \"%s\"",
259 1,
260 USERS_ID,
261 0,
262 setup_ausr,
263 followup_ausr,
264};
265
266static char *rusr_fields[] = {
267 UID, LOGIN, "fs_type"
268};
269
270static struct validate rusr_validate = {
271 0,
272 0,
273 0,
274 0,
275 0,
276 0,
277 0,
278 register_user,
279 0,
280};
281
282static char *uusr_fields[] = {
283 LOGIN,
284 "newlogin", UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
285 MIT_ID, CLASS,
286};
287
288static struct valobj uusr_valobj[] = {
289 {V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
290 {V_RENAME, 1, USERS, LOGIN, USERS_ID, SMS_NOT_UNIQUE},
291 {V_CHAR, 4},
292 {V_CHAR, 5},
293 {V_CHAR, 6},
294 {V_CHAR, 8},
295 {V_TYPE, 9, CLASS, 0, 0, SMS_BAD_CLASS},
296};
297
298static struct validate uusr_validate = {
299 uusr_valobj,
300 7,
301 0,
302 0,
303 0,
304 USERS_ID,
305 0,
306 0,
307 set_modtime_by_id,
308};
309
310static char *uush_fields[] = {
311 LOGIN,
312 SHELL,
313};
314
315static struct validate uush_validate = {
316 VOuser0,
317 1,
318 0,
319 0,
320 0,
321 USERS_ID,
322 access_user,
323 0,
324 set_modtime_by_id,
325};
326
327static char *uust_fields[] = {
328 LOGIN,
329 STATUS,
330};
331
332static struct validate uust_validate = {
333 VOuser0,
334 1,
335 0,
336 0,
337 0,
338 USERS_ID,
339 0,
340 0,
341 set_modtime_by_id,
342};
343
344static char *dusr_fields[] = {
345 LOGIN,
346};
347
348static struct validate dusr_validate = {
349 VOuser0,
350 1,
351 0,
352 0,
353 0,
354 0,
355 0,
356 setup_dusr,
357 0,
358};
359
360static char *dubu_fields[] = {
361 UID,
362};
363
364static struct valobj dubu_valobj[] = {
365 {V_ID, 0, USERS, UID, USERS_ID, SMS_USER}
366};
367
368static struct validate dubu_validate = {
369 dubu_valobj,
370 1,
371 0,
372 0,
373 0,
374 0,
375 0,
376 setup_dusr,
377 0,
378};
379
380static char *gfbl_fields[] = {
381 LOGIN,
382 LOGIN, "fullname", "nickname", "home_addr",
383 "home_phone", "office_address", "office_phone", "mit_dept",
384 "mit_affil", MOD1, MOD2, MOD3,
385};
386
387static struct validate gfbl_validate = {
388 VOuser0,
389 1,
390 0,
391 0,
392 0,
393 0,
394 access_user,
395 0,
396 followup_fix_modby,
397};
398
399static char *ufbl_fields[] = {
400 LOGIN,
401 "fullname", "nickname", "home_addr",
402 "home_phone", "office_address", "office_phone", "mit_dept",
403 "mit_affil",
404};
405
406static struct validate ufbl_validate = {
407 VOuser0,
408 1,
409 0,
410 0,
411 0,
412 0,
413 access_user,
414 0,
415 set_finger_modtime,
416};
417
418static char *gpob_fields[] = {
419 LOGIN,
420 LOGIN, TYPE, "box", MOD1, MOD2, MOD3,
421};
422
423static struct validate gpob_validate = {
424 VOuser0,
425 1,
426 "potype",
427 "u.potype != \"NONE\" and u.users_id=%d",
428 1,
429 0,
430 access_user,
431 0,
432 followup_gpob,
433};
434
435static char *gpox_fields[] = {
436 LOGIN, TYPE, "box",
437};
438
439static struct validate gpox_validate = {
440 0,
441 0,
442 0,
443 0,
444 0,
445 0,
446 0,
447 0,
448 followup_gpob,
449};
450
451static char *spob_fields[] = {
452 LOGIN, TYPE, "box",
453};
454
455static struct valobj spob_valobj[] = {
456 {V_ID, 0, USERS, LOGIN, USERS_ID, SMS_USER},
457 {V_TYPE, 1, "pobox", 0, 0, SMS_TYPE},
458};
459
460static struct validate spob_validate = /* SET_POBOX */
461{
462 spob_valobj,
463 2,
464 0,
465 0,
466 0,
467 0,
468 access_user,
469 0,
470 set_pobox,
471};
472
473static struct validate spop_validate = /* SET_POBOX_POP */
474{
475 VOuser0,
476 1,
477 0,
478 0,
479 0,
480 0,
481 access_user,
482 setup_spop,
483 set_pobox_modtime,
484};
485
486static struct validate dpob_validate = /* DELETE_POBOX */
487{
488 VOuser0,
489 1,
490 0,
491 0,
492 0,
493 0,
494 access_user,
495 setup_dpob,
496 set_pobox_modtime,
497};
498
499static char *gmac_fields[] = {
500 NAME,
501 NAME, TYPE, MOD1, MOD2, MOD3,
502};
503
504static char *amac_fields[] = {
505 NAME, TYPE
506};
507
508static struct valobj amac_valobj[] = {
509 {V_CHAR, 0},
510 {V_TYPE, 1, "mac_type", 0, 0, SMS_TYPE},
511};
512
513static struct validate amac_validate = {
514 amac_valobj,
515 2,
516 NAME,
517 "m.name = uppercase(\"%s\")",
518 1,
519 MACH_ID,
520 0,
521 0,
522 set_mach_modtime,
523};
524
525static char *umac_fields[] = {
526 NAME,
527 "newname", TYPE,
528};
529
530static struct valobj umac_valobj[] = {
531 {V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
532 {V_RENAME, 1, MACHINE, NAME, MACH_ID, SMS_NOT_UNIQUE},
533 {V_TYPE, 2, "mac_type", 0, 0, SMS_TYPE},
534};
535
536static struct validate umac_validate = {
537 umac_valobj,
538 3,
539 0,
540 0,
541 0,
542 MACH_ID,
543 0,
544 0,
545 set_modtime_by_id,
546};
547
548static char *dmac_fields[] = {
549 NAME,
550};
551
552static struct validate dmac_validate = {
553 VOmach0,
554 1,
555 0,
556 0,
557 0,
558 0,
559 0,
560 setup_dmac,
561 0,
562};
563
564static char *gclu_fields[] = {
565 NAME,
566 NAME, DESC, LOCATION, MOD1, MOD2, MOD3,
567};
568
569static char *aclu_fields[] = {
570 NAME, DESC, LOCATION,
571};
572
573static struct validate aclu_validate = /* for aclu */
574{
575 VOchar0,
576 1,
577 NAME,
578 "c.name = \"%s\"",
579 1,
580 "clu_id",
581 0,
582 0,
583 set_modtime,
584};
585
586static char *uclu_fields[] = {
587 NAME,
588 "newname", DESC, LOCATION,
589};
590
591static struct valobj uclu_valobj[] = {
592 {V_ID, 0, CLUSTER, NAME, CLU_ID, SMS_CLUSTER},
593 {V_RENAME, 1, CLUSTER, NAME, CLU_ID, SMS_NOT_UNIQUE},
594};
595
596static struct validate uclu_validate = {
597 uclu_valobj,
598 2,
599 0,
600 0,
601 0,
602 CLU_ID,
603 0,
604 0,
605 set_modtime_by_id,
606};
607
608static char *dclu_fields[] = {
609 NAME,
610};
611
612static struct validate dclu_validate = {
613 VOclu0,
614 1,
615 0,
616 0,
617 0,
618 0,
619 0,
620 setup_dclu,
621 0,
622};
623
624static char *gmcm_fields[] = {
625 MACHINE, CLUSTER,
626 MACHINE, CLUSTER,
627};
628
629static struct valobj amtc_valobj[] = /* ADD_MACHINE_TO_CLUSTER */
630{ /* DELETE_MACHINE_FROM_CLUSTER */
631 {V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
632 {V_ID, 1, CLUSTER, NAME, CLU_ID, SMS_CLUSTER},
633};
634
635static struct validate amtc_validate = /* for amtc and dmfc */
636{
637 amtc_valobj,
638 2,
639 MACH_ID,
640 "m.mach_id = %d and m.clu_id = %d",
641 2,
642 0,
643 0,
644 0,
645 set_mach_modtime_by_id,
646};
647
648static char *gcld_fields[] = {
649 CLUSTER, "serv_label", "serv_cluster",
650};
651
652static struct valobj acld_valobj[] =
653{
654 {V_ID, 0, CLUSTER, NAME, CLU_ID, SMS_CLUSTER},
655 {V_TYPE, 1, "slabel", 0, 0, SMS_TYPE},
656 {V_CHAR, 2},
657};
658
659static struct validate acld_validate = /* ADD_CLUSTER_DATA */
660{ /* DELETE_CLUSTER_DATA */
661 acld_valobj,
662 2,
663 CLU_ID,
664 "s.clu_id = %d and s.serv_label = \"%s\" and s.serv_cluster = \"%s\"",
665 3,
666 0,
667 0,
668 0,
669 set_cluster_modtime_by_id,
670};
671
672static char *gsin_fields[] = {
673 SERVICE,
674 SERVICE, "update_int", "target_file", "script", "dfgen",
675 TYPE, "enable", "inprogress", "harderror", "errmsg",
676 ACL_TYPE, ACL_NAME, MOD1, MOD2, MOD3,
677};
678
679static struct validate gsin_validate =
680{
681 0,
682 0,
683 0,
684 0,
685 0,
686 0,
687 access_service,
688 0,
689 followup_glin,
690};
691
692static char *qgsv_fields[] = {
693 "enable", "inprogress", "harderror",
694 "service",
695};
696
697static struct valobj qgsv_valobj[] = {
698 {V_TYPE, 0, "boolean", 0, 0, SMS_TYPE},
699 {V_TYPE, 1, "boolean", 0, 0, SMS_TYPE},
700 {V_TYPE, 2, "boolean", 0, 0, SMS_TYPE},
701};
702
703static struct validate qgsv_validate = {
704 qgsv_valobj,
705 3,
706 0,
707 0,
708 0,
709 0,
710 0,
711 0,
712 qualified_get_server,
713};
714
715static char *asin_fields[] = {
716 SERVICE, "update_int", "target_file", "script", TYPE, "enable",
717 ACL_TYPE, ACL_NAME,
718};
719
720static struct valobj asin_valobj[] = {
721 {V_CHAR, 0},
722 {V_TYPE, 4, "service", 0, 0, SMS_TYPE},
723 {V_TYPE, 6, ACL_TYPE, 0, 0, SMS_ACL},
724 {V_TYPEDATA, 7, 0, 0, 0, SMS_ACL},
725};
726
727static struct validate asin_validate = /* for asin, usin */
728{
729 asin_valobj,
730 4,
731 NAME,
732 "s.name = \"%s\"",
733 1,
734 0,
735 0,
736 0,
737 set_modtime,
738};
739
740static struct validate rsve_validate = {
741 0,
742 0,
743 NAME,
744 "s.name = \"%s\"",
745 1,
746 0,
747 access_service,
748 0,
749 set_modtime,
750};
751
752static char *ssif_fields[] = {
753 SERVICE, "dfgen", "inprogress", "harderror", "errmsg",
754};
755
756static struct validate ssif_validate = {
757 VOdate1,
758 1,
759 NAME,
760 "s.name = \"%s\"",
761 1,
762 0,
763 0,
764 setup_ssif,
765 0,
766};
767
768static char *dsin_fields[] = {
769 SERVICE,
770};
771
772static struct validate dsin_validate = {
773 0,
774 0,
775 NAME,
776 "s.name = \"%s\"",
777 1,
778 0,
779 0,
780 setup_dsin,
781 0,
782};
783
784static char *gshi_fields[] = {
785 SERVICE, MACHINE,
786 SERVICE, MACHINE, "enable", "override", "success", "inprogress",
787 "hosterror", "hosterrormsg", "ltt", "lts", "value1", "value2",
788 "value3", MOD1, MOD2, MOD3,
789};
790
791static struct validate gshi_validate = {
792 0,
793 0,
794 0,
795 0,
796 0,
797 0,
798 access_service,
799 0,
800 followup_fix_modby,
801};
802
803static char *qgsh_fields[] = {
804 "service", "enable", "override", "success", "inprogress", "hosterror",
805 "service", MACHINE,
806};
807
808static struct valobj qgsh_valobj[] = {
809 {V_TYPE, 1, "boolean", 0, 0, SMS_TYPE},
810 {V_TYPE, 2, "boolean", 0, 0, SMS_TYPE},
811 {V_TYPE, 3, "boolean", 0, 0, SMS_TYPE},
812 {V_TYPE, 4, "boolean", 0, 0, SMS_TYPE},
813 {V_TYPE, 5, "boolean", 0, 0, SMS_TYPE},
814};
815
816static struct validate qgsh_validate = {
817 qgsh_valobj,
818 5,
819 0,
820 0,
821 0,
822 0,
823 0,
824 0,
825 qualified_get_serverhost,
826};
827
828static char *ashi_fields[] = {
829 SERVICE, MACHINE, "enable", "value1", "value2", "value3",
830};
831
832static struct valobj ashi_valobj[] = {
833 {V_NAME, 0, "servers", NAME, 0, SMS_SERVICE},
834 {V_ID, 1, MACHINE, NAME, MACH_ID, SMS_MACHINE},
835};
836
837static struct validate ashi_validate = /* ashi & ushi */
838{
839 ashi_valobj,
840 2,
841 SERVICE,
842 "sh.service = \"%s\" and sh.mach_id = %d",
843 2,
844 0,
845 access_service,
846 0,
847 set_serverhost_modtime,
848};
849
850static struct validate rshe_validate =
851{
852 ashi_valobj,
853 2,
854 SERVICE,
855 "sh.service = \"%s\" and sh.mach_id = %d",
856 2,
857 0,
858 access_service,
859 0,
860 set_serverhost_modtime,
861};
862
863static struct validate ssho_validate =
864{
865 ashi_valobj,
866 2,
867 SERVICE,
868 "sh.service = \"%s\" and sh.mach_id = %d",
869 2,
870 0,
871 access_service,
872 0,
873 trigger_dcm,
874};
875
876static char *sshi_fields[] = {
877 "service", MACHINE, "override", "success", "inprogress",
878 "hosterror", "errmsg", "ltt", "lts"
879};
880
881static struct valobj sshi_valobj[] = {
882 {V_NAME, 0, "servers", NAME, 0, SMS_SERVICE},
883 {V_ID, 1, MACHINE, NAME, MACH_ID, SMS_MACHINE},
884 {V_DATE, 7, 0, 0, 0, SMS_DATE},
885 {V_DATE, 8, 0, 0, 0, SMS_DATE},
886};
887
888static struct validate sshi_validate =
889{
890 sshi_valobj,
891 4,
892 SERVICE,
893 "sh.service = \"%s\" and sh.mach_id = %d",
894 2,
895 0,
896 0,
897 setup_sshi,
898 0,
899};
900
901static char *dshi_fields[] = {
902 SERVICE, MACHINE,
903};
904
905static struct validate dshi_validate =
906{
907 ashi_valobj,
908 2,
909 SERVICE,
910 "sh.service = \"%s\" and sh.mach_id = %d",
911 2,
912 0,
913 access_service,
914 setup_dshi,
915 0,
916};
917
918static char *gsha_fields[] = {
919 MACHINE,
920 MACHINE, ACL_TYPE, ACL_NAME, MOD1, MOD2, MOD3,
921};
922
923static struct validate gsha_validate =
924{
925 0,
926 0,
927 0,
928 0,
929 0,
930 0,
931 0,
932 0,
933 followup_gsha,
934};
935
936static char *asha_fields[] = {
937 MACHINE, ACL_TYPE, ACL_NAME,
938};
939
940static struct valobj asha_valobj[] = {
941 {V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
942 {V_TYPE, 1, ACL_TYPE, 0, 0, SMS_ACL},
943 {V_TYPEDATA, 2, 0, 0, 0, SMS_ACL},
944};
945
946static struct validate asha_validate =
947{
948 asha_valobj,
949 3,
950 MACH_ID,
951 "ha.mach_id = %d",
952 1,
953 MACH_ID,
954 0,
955 0,
956 set_modtime_by_id,
957};
958
959static char *gslo_fields[] = {
960 "server",
961 "server", MACHINE,
962};
963
964static char *gfsl_fields[] = {
965 LABEL,
966 LABEL, TYPE, MACHINE, NAME, "mount", "access", "comments", "owner", "owners",
967 "create", "lockertype", MOD1, MOD2, MOD3,
968};
969
970static char *gfsm_fields[] = {
971 MACHINE,
972 LABEL, TYPE, MACHINE, NAME, "mount", "access", "comments", "owner", "owners",
973 "create", "lockertype", MOD1, MOD2, MOD3,
974};
975
976static struct validate gfsm_validate = {
977 VOmach0,
978 1,
979 0,
980 0,
981 0,
982 0,
983 0,
984 0,
985 followup_fix_modby,
986};
987
988static char *gfsg_fields[] = {
989 LIST,
990 LABEL, TYPE, MACHINE, NAME, "mount", "access", "comments", "owner", "owners",
991 "create", "lockertype", MOD1, MOD2, MOD3,
992};
993
994static struct validate gfsg_validate = {
995 VOlist0,
996 1,
997 0,
998 0,
999 0,
1000 0,
1001 access_list,
1002 0,
1003 followup_fix_modby,
1004};
1005
1006static char *afil_fields[] = {
1007 LABEL, TYPE, MACHINE, NAME, "mount", "access", "comments", "owner", "owners",
1008 "create", "lockertype",
1009};
1010
1011static struct valobj afil_valobj[] = {
1012 {V_CHAR, 0},
1013 {V_TYPE, 1, FILESYS, 0, 0, SMS_TYPE},
1014 {V_ID, 2, MACHINE, NAME, MACH_ID, SMS_MACHINE},
1015 {V_CHAR, 3},
1016 {V_ID, 7, USERS, LOGIN, USERS_ID, SMS_USER},
1017 {V_ID, 8, LIST, NAME, LIST_ID, SMS_LIST},
1018 {V_TYPE, 10, "lockertype", 0, 0, SMS_TYPE}
1019};
1020
1021static struct validate afil_validate = {
1022 afil_valobj,
1023 7,
1024 LABEL,
1025 "fs.label = \"%s\"",
1026 1,
1027 FILSYS_ID,
1028 0,
1029 setup_afil,
1030 set_filesys_modtime,
1031};
1032
1033static char *ufil_fields[] = {
1034 LABEL, "newlabel", TYPE, MACHINE, NAME, "mount", "access", "comments",
1035 "owner", "owners", "create", "lockertype",
1036};
1037
1038static struct valobj ufil_valobj[] = {
1039 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
1040 {V_RENAME, 1, FILESYS, LABEL, FILSYS_ID, SMS_NOT_UNIQUE},
1041 {V_TYPE, 2, FILESYS, 0, 0, SMS_TYPE},
1042 {V_ID, 3, MACHINE, NAME, MACH_ID, SMS_MACHINE},
1043 {V_CHAR, 4},
1044 {V_ID, 8, USERS, LOGIN, USERS_ID, SMS_USER},
1045 {V_ID, 9, LIST, NAME, LIST_ID, SMS_LIST},
1046 {V_TYPE, 11, "lockertype", 0, 0, SMS_TYPE}
1047};
1048
1049static struct validate ufil_validate = {
1050 ufil_valobj,
1051 8,
1052 LABEL,
1053 "fs.filsys_id = %d",
1054 1,
1055 FILSYS_ID,
1056 0,
1057 setup_ufil,
1058 set_filesys_modtime,
1059};
1060
1061static char *dfil_fields[] = {
1062 LABEL,
1063};
1064
1065static struct valobj dfil_valobj[] = {
1066 {V_ID, 0, FILESYS, LABEL, FILSYS_ID, SMS_FILESYS},
1067};
1068
1069static struct validate dfil_validate = {
1070 dfil_valobj,
1071 1,
1072 "label",
1073 "fs.filsys_id = %d",
1074 1,
1075 0,
1076 0,
1077 setup_dfil,
1078 0,
1079};
1080
1081static char *ganf_fields[] = {
1082 MACHINE, DIR, DEVICE, STATUS, "allocated", "size", MOD1, MOD2, MOD3,
1083};
1084
1085static char *gnfp_fields[] = {
1086 MACHINE, DIR,
1087 MACHINE, DIR, DEVICE, STATUS, "allocated", "size", MOD1, MOD2, MOD3,
1088};
1089
1090static struct validate gnfp_validate = {
1091 VOmach0,
1092 1,
1093 0,
1094 0,
1095 0,
1096 0,
1097 0,
1098 0,
1099 followup_fix_modby,
1100};
1101
1102static struct valobj anfp_valobj[] = {
1103 {V_ID, 0, MACHINE, NAME, MACH_ID, SMS_MACHINE},
1104 {V_CHAR, 1},
1105};
1106
1107static struct validate anfp_validate = {
1108 anfp_valobj,
1109 2,
1110 DIR,
1111 "np.mach_id = %d and np.dir = \"%s\"",
1112 2,
1113 "nfsphys_id",
1114 0,
1115 0,
1116 set_nfsphys_modtime,
1117};
1118
1119static char *dnfp_fields[] = {
1120 MACHINE, DIR,
1121};
1122
1123static struct validate dnfp_validate = {
1124 VOmach0,
1125 1,
1126 DIR,
1127 "np.mach_id = %d and np.dir = \"%s\"",
1128 2,
1129 "nfsphys_id",
1130 0,
1131 setup_dnfp,
1132 set_nfsphys_modtime,
1133};
1134
1135static char *gnfq_fields[] = {
1136 FILESYS,
1137 FILESYS, LOGIN, "quota", DIR, MACHINE, MOD1, MOD2, MOD3,
1138};
1139
1140static struct validate gnfq_validate = {
1141 VOsort0,
1142 1,
1143 0,
1144 0,
1145 0,
1146 0,
1147 access_filesys,
1148 0,
1149 followup_fix_modby,
1150};
1151
1152static char *gnqp_fields[] = {
1153 MACHINE, DIR,
1154 FILESYS, LOGIN, "quota", DIR, MACHINE, MOD1, MOD2, MOD3,
1155};
1156
1157static char *gnqu_fields[] = {
1158 LOGIN,
1159 FILESYS, LOGIN, "quota", DIR, MACHINE, MOD1, MOD2, MOD3,
1160};
1161
1162static struct validate gnqu_validate = {
1163 VOuser0sort,
1164 2,
1165 0,
1166 0,
1167 0,
1168 0,
1169 access_user,
1170 0,
1171 followup_fix_modby,
1172};
1173
1174static char *anfq_fields[] = {
1175 FILESYS, LOGIN, "quota",
1176};
1177
1178static struct validate anfq_validate = {
1179 VOfilsys0user1,
1180 2,
1181 USERS_ID,
1182 "nq.filsys_id = %d and nq.users_id = %d",
1183 2,
1184 0,
1185 0,
1186 0,
1187 followup_anfq,
1188};
1189
1190static struct validate unfq_validate = {
1191 VOfilsys0user1,
1192 2,
1193 USERS_ID,
1194 "nq.filsys_id = %d and nq.users_id = %d",
1195 2,
1196 0,
1197 0,
1198 setup_dnfq,
1199 followup_anfq,
1200};
1201
1202static struct validate dnfq_validate = {
1203 VOfilsys0user1,
1204 2,
1205 USERS_ID,
1206 "nq.filsys_id = %d and nq.users_id = %d",
1207 2,
1208 0,
1209 0,
1210 setup_dnfq,
1211 0,
1212};
1213
1214static char *glin_fields[] = {
1215 NAME,
1216 NAME, "active", "public", "hidden", "maillist", "group", "gid",
1217 ACL_TYPE, ACL_NAME, DESC, MOD1, MOD2, MOD3,
1218};
1219
1220static struct validate glin_validate = {
1221 0,
1222 0,
1223 0,
1224 0,
1225 0,
1226 0,
1227 access_vis_list_by_name,
1228 0,
1229 get_list_info,
1230};
1231
1232static char *alis_fields[] = {
1233 NAME, "active", "public", "hidden", "maillist", "group", "gid",
1234 ACL_TYPE, ACL_NAME, DESC,
1235};
1236
1237static struct valobj alis_valobj[] = {
1238 {V_CHAR, 0},
1239 {V_TYPE, 7, ACL_TYPE, 0, 0, SMS_ACL},
1240 {V_TYPEDATA, 8, 0, 0, LIST_ID, SMS_ACL},
1241};
1242
1243static struct validate alis_validate = {
1244 alis_valobj,
1245 3,
1246 NAME,
1247 "l.name = \"%s\"",
1248 1,
1249 LIST_ID,
1250 0,
1251 setup_alis,
1252 set_modtime,
1253};
1254
1255static char *ulis_fields[] = {
1256 NAME,
1257 "newname", "active", "public", "hidden", "maillist", "group", "gid",
1258 ACL_TYPE, ACL_NAME, DESC,
1259};
1260
1261static struct valobj ulis_valobj[] = {
1262 {V_ID, 0, LIST, NAME, LIST_ID, SMS_LIST},
1263 {V_RENAME, 1, LIST, NAME, LIST_ID, SMS_NOT_UNIQUE},
1264 {V_TYPE, 8, ACL_TYPE, 0, 0, SMS_ACL},
1265 {V_TYPEDATA, 9, 0, 0, LIST_ID, SMS_ACL},
1266};
1267
1268static struct validate ulis_validate = {
1269 ulis_valobj,
1270 4,
1271 NAME,
1272 "l.list_id = %d",
1273 1,
1274 LIST_ID,
1275 access_list,
1276 setup_alis,
1277 set_modtime_by_id,
1278};
1279
1280static char *dlis_fields[] = {
1281 NAME,
1282};
1283
1284static struct validate dlis_validate = {
1285 VOlist0,
1286 1,
1287 NAME,
1288 "l.list_id = %d",
1289 1,
1290 0,
1291 access_list,
1292 setup_dlis,
1293 0,
1294};
1295
1296static char *amtl_fields[] = {
1297 "list_name", "member_type", "member_name",
1298};
1299
1300static struct valobj amtl_valobj[] = {
1301 {V_ID, 0, LIST, NAME, LIST_ID, SMS_LIST},
1302 {V_TYPE, 1, "member", 0, 0, SMS_TYPE},
1303 {V_TYPEDATA, 2, 0, 0, 0, SMS_NO_MATCH},
1304};
1305
1306static struct validate amtl_validate = /* for amtl and dmfl */
1307{
1308 amtl_valobj,
1309 3,
1310 "member_id",
1311 "m.list_id = %d and m.member_type = \"%s\" and m.member_id = %d",
1312 3,
1313 0,
1314 access_list,
1315 0,
1316 followup_amtl,
1317};
1318
1319static char *gaus_fields[] = {
1320 ACL_TYPE, ACL_NAME,
1321 "use_type", "use_name",
1322};
1323
1324static struct valobj gaus_valobj[] = {
1325 {V_TYPE, 0, "gaus", 0, 0, SMS_TYPE},
1326 {V_TYPEDATA, 1, 0, 0, 0, SMS_NO_MATCH},
1327};
1328
1329static struct validate gaus_validate = {
1330 gaus_valobj,
1331 2,
1332 0,
1333 0,
1334 0,
1335 0,
1336 access_member,
1337 0,
1338 get_acl_use,
1339};
1340
1341static char *qgli_fields[] = {
1342 "active", "public", "hidden", "maillist", "group",
1343 "list",
1344};
1345
1346static struct valobj qgli_valobj[] = {
1347 {V_TYPE, 0, "boolean", 0, 0, SMS_TYPE},
1348 {V_TYPE, 1, "boolean", 0, 0, SMS_TYPE},
1349 {V_TYPE, 2, "boolean", 0, 0, SMS_TYPE},
1350 {V_TYPE, 3, "boolean", 0, 0, SMS_TYPE},
1351 {V_TYPE, 4, "boolean", 0, 0, SMS_TYPE},
1352};
1353
1354static struct validate qgli_validate = {
1355 qgli_valobj,
1356 5,
1357 0,
1358 0,
1359 0,
1360 0,
1361 access_qgli,
1362 0,
1363 qualified_get_lists,
1364};
1365
1366static char *gmol_fields[] = {
1367 "list_name",
1368 "member_type", "member_name",
1369};
1370
1371static struct validate gmol_validate = {
1372 VOlist0,
1373 1,
1374 0,
1375 0,
1376 0,
1377 0,
1378 access_visible_list,
1379 0,
1380 get_members_of_list,
1381};
1382
1383static char *glom_fields[] = {
1384 "member_type", "member_name",
1385 "list_name", "active", "public", "hidden", "maillist", "group",
1386};
1387
1388static struct valobj glom_valobj[] = {
1389 {V_TYPE, 0, "rmember", 0, 0, SMS_TYPE},
1390 {V_TYPEDATA, 1, 0, 0, 0, SMS_NO_MATCH},
1391 {V_SORT, 0},
1392};
1393
1394static struct validate glom_validate = {
1395 glom_valobj,
1396 3,
1397 0,
1398 0,
1399 0,
1400 0,
1401 access_member,
1402 0,
1403 get_lists_of_member,
1404};
1405
1406static char *cmol_fields[] = {
1407 "list_name",
1408 "count",
1409};
1410
1411static struct validate cmol_validate = {
1412 VOlist0,
1413 1,
1414 0,
1415 0,
1416 0,
1417 0,
1418 access_visible_list,
1419 0,
1420 count_members_of_list,
1421};
1422
1423static char *augr_fields[] = {
1424 LOGIN,
1425};
1426
1427static struct validate augr_validate = {
1428 0,
1429 0,
1430 0,
1431 0,
1432 0,
1433 0,
1434 0,
1435 0,
1436 add_user_group,
1437};
1438
1439static char *gzcl_fields[] = {
1440 CLASS,
1441 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
1442 "iws_type", "iws_name", "iui_type", "iui_name", MOD1, MOD2, MOD3,
1443};
1444
1445static struct validate gzcl_validate = {
1446 VOsort0,
1447 1,
1448 0,
1449 0,
1450 0,
1451 0,
1452 0,
1453 0,
1454 followup_gzcl,
1455};
1456
1457static char *azcl_fields[] = {
1458 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
1459 "iws_type", "iws_name", "iui_type", "iui_name",
1460};
1461
1462static struct valobj azcl_valobj[] = {
1463 {V_CHAR, 0},
1464 {V_TYPE, 1, ACL_TYPE, 0, 0, SMS_ACL},
1465 {V_TYPEDATA, 2, 0, 0, LIST_ID, SMS_ACL},
1466 {V_TYPE, 3, ACL_TYPE, 0, 0, SMS_ACL},
1467 {V_TYPEDATA, 4, 0, 0, LIST_ID, SMS_ACL},
1468 {V_TYPE, 5, ACL_TYPE, 0, 0, SMS_ACL},
1469 {V_TYPEDATA, 6, 0, 0, LIST_ID, SMS_ACL},
1470 {V_TYPE, 7, ACL_TYPE, 0, 0, SMS_ACL},
1471 {V_TYPEDATA, 8, 0, 0, LIST_ID, SMS_ACL},
1472};
1473
1474static struct validate azcl_validate = {
1475 azcl_valobj,
1476 8,
1477 CLASS,
1478 "z.class = \"%s\"",
1479 1,
1480 0,
1481 0,
1482 0,
1483 set_zephyr_modtime,
1484};
1485
1486static char *uzcl_fields[] = {
1487 CLASS, "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
1488 "iws_type", "iws_name", "iui_type", "iui_name",
1489};
1490
1491static struct valobj uzcl_valobj[] = {
1492 {V_RENAME, 1, "zephyr", CLASS, 0, SMS_NOT_UNIQUE},
1493 {V_TYPE, 2, ACL_TYPE, 0, 0, SMS_ACL},
1494 {V_TYPEDATA, 3, 0, 0, LIST_ID, SMS_ACL},
1495 {V_TYPE, 4, ACL_TYPE, 0, 0, SMS_ACL},
1496 {V_TYPEDATA, 5, 0, 0, LIST_ID, SMS_ACL},
1497 {V_TYPE, 6, ACL_TYPE, 0, 0, SMS_ACL},
1498 {V_TYPEDATA, 7, 0, 0, LIST_ID, SMS_ACL},
1499 {V_TYPE, 8, ACL_TYPE, 0, 0, SMS_ACL},
1500 {V_TYPEDATA, 9, 0, 0, LIST_ID, SMS_ACL},
1501};
1502
1503static struct validate uzcl_validate = {
1504 uzcl_valobj,
1505 9,
1506 CLASS,
1507 "z.class = \"%s\"",
1508 1,
1509 0,
1510 0,
1511 0,
1512 set_zephyr_modtime,
1513};
1514
1515static struct validate dzcl_validate = {
1516 0,
1517 0,
1518 CLASS,
1519 "z.class = \"%s\"",
1520 1,
1521 0,
1522 0,
1523 0,
1524 0,
1525};
1526
1527static char *gasv_fields[] = {
1528 SERVICE, "protocol", "port", DESC,
1529};
1530
1531static char *gpcp_fields[] = {
1532 "printer",
1533 "printer", "printcap", MOD1, MOD2, MOD3,
1534};
1535
1536static char *apcp_fields[] = {
1537 "printer", "printcap", MOD1, MOD2, MOD3,
1538};
1539
1540static struct validate apcp_validate = {
1541 VOchar0,
1542 1,
1543 NAME,
1544 "p.name = \"%s\"",
1545 1,
1546 0,
1547 0,
1548 0,
1549 set_modtime,
1550};
1551
1552static char *gali_fields[] = {
1553 NAME, TYPE, "trans",
1554 NAME, TYPE, "trans",
1555};
1556
1557static char *aali_fields[] = {
1558 NAME, TYPE, "trans",
1559};
1560
1561static struct valobj aali_valobj[] = {
1562 {V_CHAR, 0},
1563 {V_TYPE, 1, "alias", 0, 0, SMS_TYPE},
1564 {V_CHAR, 2},
1565};
1566
1567static struct validate aali_validate = {
1568 aali_valobj,
1569 3,
1570 "trans",
1571 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
1572 3,
1573 0,
1574 0,
1575 0,
1576 0,
1577};
1578
1579static struct validate dali_validate = /* DELETE_ALIAS */
1580{
1581 0,
1582 0,
1583 "trans",
1584 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
1585 3,
1586 0,
1587 0,
1588 0,
1589 0,
1590};
1591
1592static char *gval_fields[] = {
1593 NAME, "value",
1594};
1595
1596static struct valobj gval_valobj[] = {
1597 {V_NAME, 0, "values", NAME, 0, SMS_NO_MATCH},
1598};
1599
1600static struct validate gval_validate = {
1601 gval_valobj,
1602 1,
1603 0,
1604 0,
1605 0,
1606 0,
1607 0,
1608 0,
1609 0,
1610};
1611
1612static char *aval_fields[] = {
1613 NAME, "value",
1614};
1615
1616static struct validate aval_validate = /* for aval, uval, and dval */
1617{
1618 VOchar0,
1619 1,
1620 NAME,
1621 "v.name = \"%s\"",
1622 1,
1623 0,
1624 0,
1625 0,
1626 0,
1627};
1628
1629static char *dval_fields[] = {
1630 NAME,
1631};
1632
1633static char *gats_fields[] = {
1634 "table", "retrieves", "appends", "updates", "deletes", MOD1, MOD2, MOD3,
1635};
1636
1637
1638\f
1639/* Generalized Query Definitions */
1640
1641struct query Queries2[] = {
1642 {
1643 /* Q_GALO - GET_ALL_LOGINS */
1644 "get_all_logins",
1645 "galo",
1646 RETRIEVE,
1647 "u",
1648 USERS,
1649 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle",
1650 galo_fields,
1651 6,
1652 "u.users_id != 0",
1653 0,
1654 0,
1655 },
1656
1657 {
1658 /* Q_GAAL - GET_ALL_ACTIVE_LOGINS */
1659 "get_all_active_logins",
1660 "gaal",
1661 RETRIEVE,
1662 "u",
1663 USERS,
1664 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle",
1665 galo_fields,
1666 6,
1667 "u.status != 0",
1668 0,
1669 0,
1670 },
1671
1672 {
1673 /* Q_GUBL - GET_USER_BY_LOGIN */
1674 "get_user_by_login",
1675 "gubl",
1676 RETRIEVE,
1677 "u",
1678 USERS,
1679 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle, %c = text(u.status), %c = u.mit_id, %c = u.mit_year, %c = u.modtime, %c = text(u.modby), %c = u.modwith",
1680 gubl_fields,
1681 12,
1682 "u.login = \"%s\" and u.users_id != 0",
1683 1,
1684 &gubx_validate,
1685 },
1686
1687 {
1688 /* Q_GUBU - GET_USER_BY_UID */
1689 "get_user_by_uid",
1690 "gubu",
1691 RETRIEVE,
1692 "u",
1693 USERS,
1694 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle, %c = text(u.status), %c = u.mit_id, %c = u.mit_year, %c = u.modtime, %c = text(u.modby), %c = u.modwith",
1695 gubu_fields,
1696 12,
1697 "u.uid = %s and u.users_id != 0",
1698 1,
1699 &gubx_validate,
1700 },
1701
1702 {
1703 /* Q_GUBN - GET_USER_BY_NAME */
1704 "get_user_by_name",
1705 "gubn",
1706 RETRIEVE,
1707 "u",
1708 USERS,
1709 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle, %c = text(u.status), %c = u.mit_id, %c = u.mit_year, %c = u.modtime, %c = text(u.modby), %c = u.modwith",
1710 gubn_fields,
1711 12,
1712 "u.first = \"%s\" and u.last = \"%s\" and u.users_id != 0",
1713 2,
1714 &VDsortf,
1715 },
1716
1717 {
1718 /* Q_GUBC - GET_USER_BY_CLASS */
1719 "get_user_by_class",
1720 "gubc",
1721 RETRIEVE,
1722 "u",
1723 USERS,
1724 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle, %c = text(u.status), %c = u.mit_id, %c = u.mit_year, %c = u.modtime, %c = text(u.modby), %c = u.modwith",
1725 gubc_fields,
1726 12,
1727 "u.mit_year = uppercase(\"%s\") and u.users_id != 0",
1728 1,
1729 &VDsortf,
1730 },
1731
1732 {
1733 /* Q_GUBM - GET_USER_BY_MITID */
1734 "get_user_by_mitid",
1735 "gubm",
1736 RETRIEVE,
1737 "u",
1738 USERS,
1739 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle, %c = text(u.status), %c = u.mit_id, %c = u.mit_year, %c = u.modtime, %c = text(u.modby), %c = u.modwith",
1740 gubm_fields,
1741 12,
1742 "u.mit_id = \"%s\" and u.users_id != 0",
1743 1,
1744 &VDsortf,
1745 },
1746
1747 {
1748 /* Q_AUSR - ADD_USER */
1749 "add_user",
1750 "ausr",
1751 APPEND,
1752 "u",
1753 USERS,
1754 "login = %c, users_id = values.value, uid = int4(%c), shell = %c, last = %c, first = %c, middle = %c, status = int4(%c), mit_id = %c, mit_year = %c",
1755 ausr_fields,
1756 9,
1757 "values.name = \"users_id\"",
1758 0,
1759 &ausr_validate,
1760 },
1761
1762 {
1763 /* Q_RUSR - REGISTER_USER */
1764 "register_user",
1765 "rusr",
1766 APPEND,
1767 0,
1768 0,
1769 0,
1770 rusr_fields,
1771 3,
1772 0,
1773 0,
1774 &rusr_validate,
1775 },
1776
1777 {
1778 /* Q_UUSR - UPDATE_USER */
1779 "update_user",
1780 "uusr",
1781 UPDATE,
1782 "u",
1783 USERS,
1784 "login = %c, uid = int4(%c), shell = %c, last = %c, first = %c, middle = %c, status = int4(%c), mit_id = %c, mit_year = %c",
1785 uusr_fields,
1786 9,
1787 "u.users_id = %d",
1788 1,
1789 &uusr_validate,
1790 },
1791
1792 {
1793 /* Q_UUSH - UPDATE_USER_SHELL */
1794 "update_user_shell",
1795 "uush",
1796 UPDATE,
1797 "u",
1798 USERS,
1799 "shell = %c",
1800 uush_fields,
1801 1,
1802 "u.users_id = %d",
1803 1,
1804 &uush_validate,
1805 },
1806
1807 {
1808 /* Q_UUST - UPDATE_USER_STATUS */
1809 "update_user_status",
1810 "uust",
1811 UPDATE,
1812 "u",
1813 USERS,
1814 "status = int4(%c)",
1815 uust_fields,
1816 1,
1817 "u.users_id = %d",
1818 1,
1819 &uust_validate,
1820 },
1821
1822 {
1823 /* Q_DUSR - DELETE_USER */
1824 "delete_user",
1825 "dusr",
1826 DELETE,
1827 "u",
1828 USERS,
1829 (char *)0,
1830 dusr_fields,
1831 0,
1832 "u.users_id = %d",
1833 1,
1834 &dusr_validate,
1835 },
1836
1837 {
1838 /* Q_DUBU - DELETE_USER_BY_UID */
1839 "delete_user_by_uid",
1840 "dubu",
1841 DELETE,
1842 "u",
1843 USERS,
1844 (char *)0,
1845 dubu_fields,
1846 0,
1847 "u.users_id = %d",
1848 1,
1849 &dubu_validate,
1850 },
1851
1852 {
1853 /* Q_GFBL - GET_FINGER_BY_LOGIN */
1854 "get_finger_by_login",
1855 "gfbl",
1856 RETRIEVE,
1857 "u",
1858 USERS,
1859 "%c = u.login,%c=u.fullname,%c=u.nickname,%c=u.home_addr,%c=u.home_phone,%c=u.office_addr,%c=u.office_phone,%c=u.mit_dept,%c=u.mit_affil,%c=u.fmodtime,%c=text(u.fmodby),%c=u.fmodwith",
1860 gfbl_fields,
1861 12,
1862 "u.users_id = %d",
1863 1,
1864 &gfbl_validate,
1865 },
1866
1867 {
1868 /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
1869 "update_finger_by_login",
1870 "ufbl",
1871 UPDATE,
1872 "u",
1873 USERS,
1874 "fullname=%c,nickname=%c,home_addr=%c,home_phone=%c,office_addr=%c,office_phone=%c,mit_dept=%c,mit_affil=%c",
1875 ufbl_fields,
1876 8,
1877 "u.users_id = %d",
1878 1,
1879 &ufbl_validate,
1880 },
1881
1882 {
1883 /* Q_GPOB - GET_POBOX */
1884 "get_pobox",
1885 "gpob",
1886 RETRIEVE,
1887 "u",
1888 USERS,
1889 "%c = u.login, %c = u.potype, %c = text(u.pop_id) + \":\" + text(u.box_id), %c = u.pmodtime, %c = text(u.pmodby), %c = u.pmodwith",
1890 gpob_fields,
1891 6,
1892 "u.users_id = %d",
1893 1,
1894 &gpob_validate,
1895 },
1896
1897 {
1898 /* Q_GAPO - GET_ALL_POBOXES */
1899 "get_all_poboxes",
1900 "gapo",
1901 RETRIEVE,
1902 "u",
1903 USERS,
1904 "%c = u.login, %c = u.potype, %c = text(u.pop_id) + \":\" + text(u.box_id)",
1905 gpox_fields,
1906 3,
1907 "u.potype != \"NONE\"",
1908 0,
1909 &gpox_validate,
1910 },
1911
1912 {
1913 /* Q_GPOP - GET_POBOXES_POP */
1914 "get_poboxes_pop",
1915 "gpop",
1916 RETRIEVE,
1917 "u",
1918 USERS,
1919 "%c = u.login, %c = u.potype, %c = text(u.pop_id) + \":\" + text(u.box_id)",
1920 gpox_fields,
1921 3,
1922 "u.potype = \"POP\"",
1923 0,
1924 &gpox_validate
1925 },
1926
1927 {
1928 /* Q_GPOF - GET_POBOXES_SMTP */
1929 "get_poboxes_smtp",
1930 "gpos",
1931 RETRIEVE,
1932 "u",
1933 USERS,
1934 "%c = u.login, %c = u.potype, %c = text(u.pop_id) + \":\" + text(u.box_id)",
1935 gpox_fields,
1936 3,
1937 "u.potype = \"SMTP\"",
1938 0,
1939 &gpox_validate
1940 },
1941
1942 {
1943 /* Q_SPOB - SET_POBOX */
1944 "set_pobox",
1945 "spob",
1946 UPDATE,
1947 0,
1948 USERS,
1949 0,
1950 spob_fields,
1951 3,
1952 (char *)0,
1953 0,
1954 &spob_validate,
1955 },
1956
1957 {
1958 /* Q_SPOP - SET_POBOX_POP */
1959 "set_pobox_pop",
1960 "spop",
1961 UPDATE,
1962 "u",
1963 USERS,
1964 "potype = \"POP\"",
1965 spob_fields,
1966 0,
1967 "u.users_id = %d",
1968 1,
1969 &spop_validate,
1970 },
1971
1972 {
1973 /* Q_DPOB - DELETE_POBOX */
1974 "delete_pobox",
1975 "dpob",
1976 UPDATE,
1977 "u",
1978 USERS,
1979 "potype = \"NONE\"",
1980 spob_fields,
1981 0,
1982 "u.users_id = %d",
1983 1,
1984 &dpob_validate,
1985 },
1986
1987 {
1988 /* Q_GMAC - GET_MACHINE */
1989 "get_machine",
1990 "gmac",
1991 RETRIEVE,
1992 "m",
1993 MACHINE,
1994 "%c = m.name, %c = m.type, %c = m.modtime, %c = text(m.modby), %c =m.modwith",
1995 gmac_fields,
1996 5,
1997 "m.name = uppercase(\"%s\") and m.mach_id != 0",
1998 1,
1999 &VDsortf,
2000 },
2001
2002 {
2003 /* Q_AMAC - ADD_MACHINE */
2004 "add_machine",
2005 "amac",
2006 APPEND,
2007 "m",
2008 MACHINE,
2009 "name = uppercase(%c), mach_id = values.value, type = %c",
2010 amac_fields,
2011 2,
2012 "values.name = \"mach_id\"",
2013 0,
2014 &amac_validate,
2015 },
2016
2017 {
2018 /* Q_UMAC - UPDATE_MACHINE */
2019 "update_machine",
2020 "umac",
2021 UPDATE,
2022 "m",
2023 MACHINE,
2024 "name = uppercase(%c), type = %c",
2025 umac_fields,
2026 2,
2027 "m.mach_id = %d",
2028 1,
2029 &umac_validate,
2030 },
2031
2032 {
2033 /* Q_DMAC - DELETE_MACHINE */
2034 "delete_machine",
2035 "dmac",
2036 DELETE,
2037 "m",
2038 MACHINE,
2039 (char *)0,
2040 dmac_fields,
2041 0,
2042 "m.mach_id = %d",
2043 1,
2044 &dmac_validate,
2045 },
2046
2047 {
2048 /* Q_GCLU - GET_CLUSTER */
2049 "get_cluster",
2050 "gclu",
2051 RETRIEVE,
2052 "c",
2053 CLUSTER,
2054 "%c = c.name, %c = c.desc, %c = c.location, %c = c.modtime, %c = text(c.modby), %c = c.modwith",
2055 gclu_fields,
2056 6,
2057 "c.name = \"%s\" and c.clu_id != 0",
2058 1,
2059 &VDsortf,
2060 },
2061
2062 {
2063 /* Q_ACLU - ADD_CLUSTER */
2064 "add_cluster",
2065 "aclu",
2066 APPEND,
2067 "c",
2068 CLUSTER,
2069 "name = %c, clu_id = values.value, desc = %c, location = %c",
2070 aclu_fields,
2071 3,
2072 "values.name = \"clu_id\"",
2073 0,
2074 &aclu_validate,
2075 },
2076
2077 {
2078 /* Q_UCLU - UPDATE_CLUSTER */
2079 "update_cluster",
2080 "uclu",
2081 UPDATE,
2082 "c",
2083 CLUSTER,
2084 "name = %c, desc = %c, location = %c",
2085 uclu_fields,
2086 3,
2087 "c.clu_id = %d",
2088 1,
2089 &uclu_validate,
2090 },
2091
2092 {
2093 /* Q_DCLU - DELETE_CLUSTER */
2094 "delete_cluster",
2095 "dclu",
2096 DELETE,
2097 "c",
2098 CLUSTER,
2099 (char *)0,
2100 dclu_fields,
2101 0,
2102 "c.clu_id = %d",
2103 1,
2104 &dclu_validate,
2105 },
2106
2107 {
2108 /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
2109 "get_machine_to_cluster_map",
2110 "gmcm",
2111 RETRIEVE,
2112 "m",
2113 "mcmap",
2114 "%c = machine.name, %c = cluster.name",
2115 gmcm_fields,
2116 2,
2117 "machine.name = uppercase(\"%s\") and cluster.name = \"%s\" and m.clu_id = cluster.clu_id and m.mach_id = machine.mach_id",
2118 2,
2119 &VDsort2,
2120 },
2121
2122 {
2123 /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
2124 "add_machine_to_cluster",
2125 "amtc",
2126 APPEND,
2127 "m",
2128 "mcmap",
2129 "mach_id = %i4, clu_id = %i4",
2130 gmcm_fields,
2131 2,
2132 0,
2133 0,
2134 &amtc_validate,
2135 },
2136
2137 {
2138 /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
2139 "delete_machine_from_cluster",
2140 "dmfc",
2141 DELETE,
2142 "m",
2143 "mcmap",
2144 0,
2145 gmcm_fields,
2146 0,
2147 "m.mach_id = %d and m.clu_id = %d",
2148 2,
2149 &amtc_validate,
2150 },
2151
2152 {
2153 /* Q_GCLD - GET_CLUSTER_DATA */
2154 "get_cluster_data",
2155 "gcld",
2156 RETRIEVE,
2157 "s",
2158 "svc",
2159 "%c = cluster.name, %c = s.serv_label, %c = s.serv_cluster",
2160 gcld_fields,
2161 3,
2162 "cluster.clu_id = s.clu_id and cluster.name = \"%s\" and s.serv_label = \"%s\"",
2163 2,
2164 &VDsort2,
2165 },
2166
2167 {
2168 /* Q_ACLD - ADD_CLUSTER_DATA */
2169 "add_cluster_data",
2170 "acld",
2171 APPEND,
2172 "s",
2173 "svc",
2174 "clu_id = %i4, serv_label = %c, serv_cluster = %c",
2175 gcld_fields,
2176 3,
2177 (char *)0,
2178 0,
2179 &acld_validate,
2180 },
2181
2182 {
2183 /* Q_DCLD - DELETE_CLUSTER_DATA */
2184 "delete_cluster_data",
2185 "dcld",
2186 DELETE,
2187 "s",
2188 "svc",
2189 (char *)0,
2190 gcld_fields,
2191 0,
2192 "s.clu_id = %d and s.serv_label = \"%s\" and s.serv_cluster = \"%s\"",
2193 3,
2194 &acld_validate,
2195 },
2196
2197 {
2198 /* Q_GSIN - GET_SERVER_INFO */
2199 "get_server_info",
2200 "gsin",
2201 RETRIEVE,
2202 "s",
2203 "servers",
2204 "%c = s.name, %c = text(s.update_int), %c = s.target_file, %c = s.script, %c = s.dfgen, %c = s.type, %c = text(s.enable), %c = text(s.inprogress), %c = text(s.harderror), %c = s.errmsg, %c = s.acl_type, %c = text(s.acl_id), %c = s.modtime, %c = text(s.modby), %c = s.modwith",
2205 gsin_fields,
2206 15,
2207 "s.name = \"%s\"",
2208 1,
2209 &gsin_validate,
2210 },
2211
2212 {
2213 /* Q_QGSV - QUALIFIED_GET_SERVER */
2214 "qualified_get_server",
2215 "qgsv",
2216 RETRIEVE,
2217 0,
2218 "servers",
2219 0,
2220 qgsv_fields,
2221 1,
2222 0,
2223 3,
2224 &qgsv_validate,
2225 },
2226
2227 {
2228 /* Q_ASIN - ADD_SERVER_INFO */
2229 "add_server_info",
2230 "asin",
2231 APPEND,
2232 "s",
2233 "servers",
2234 "name = %c, update_int = int4(%c), target_file = %c, script = %c, type = %c, enable = int1(%c), acl_type = %c, acl_id = %i4",
2235 asin_fields,
2236 8,
2237 (char *)0,
2238 0,
2239 &asin_validate,
2240 },
2241
2242 {
2243 /* Q_USIN - UPDATE_SERVER_INFO */
2244 "update_server_info",
2245 "usin",
2246 UPDATE,
2247 "s",
2248 "servers",
2249 "update_int = int4(%c), target_file = %c, script = %c, type = %c, enable = int1(%c), acl_type = %c, acl_id = %i4",
2250 asin_fields,
2251 7,
2252 "s.name = \"%s\"",
2253 1,
2254 &asin_validate,
2255 },
2256
2257 {
2258 /* Q_RSVE - RESET_SERVER_ERROR */
2259 "reset_server_error",
2260 "rsve",
2261 UPDATE,
2262 "s",
2263 "servers",
2264 "harderror = 0",
2265 dsin_fields,
2266 0,
2267 "s.name = \"%s\"",
2268 1,
2269 &rsve_validate,
2270 },
2271
2272 {
2273 /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
2274 "set_server_internal_flags",
2275 "ssif",
2276 UPDATE,
2277 "s",
2278 "servers",
2279 "dfgen = %c, inprogress = int1(%c), harderror = int1(%c), errmsg = %c",
2280 ssif_fields,
2281 4,
2282 "s.name = \"%s\"",
2283 1,
2284 &ssif_validate,
2285 },
2286
2287 {
2288 /* Q_DSIN - DELETE_SERVER_INFO */
2289 "delete_server_info",
2290 "dsin",
2291 DELETE,
2292 "s",
2293 "servers",
2294 (char *)0,
2295 dsin_fields,
2296 0,
2297 "s.name = \"%s\"",
2298 1,
2299 &dsin_validate,
2300 },
2301
2302 {
2303 /* Q_GSHI - GET_SERVER_HOST_INFO */
2304 "get_server_host_info",
2305 "gshi",
2306 RETRIEVE,
2307 "sh",
2308 "serverhosts",
2309 "%c = sh.service, %c = machine.name, %c = text(sh.enable), %c = text(sh.override), %c = text(sh.success), %c = text(sh.inprogress), %c = text(sh.hosterror), %c = sh.hosterrmsg, %c = sh.ltt, %c = sh.lts, %c = text(sh.value1), %c = text(sh.value2), %c = sh.value3, %c = sh.modtime, %c = text(sh.modby), %c = sh.modwith",
2310 gshi_fields,
2311 16,
2312 "sh.service = \"%s\" and machine.name = uppercase(\"%s\") and machine.mach_id = sh.mach_id",
2313 2,
2314 &gshi_validate,
2315 },
2316
2317 {
2318 /* Q_QGSV - QUALIFIED_GET_SERVER_HOST */
2319 "qualified_get_server_host",
2320 "qgsh",
2321 RETRIEVE,
2322 0,
2323 "serverhosts",
2324 0,
2325 qgsh_fields,
2326 2,
2327 0,
2328 6,
2329 &qgsh_validate,
2330 },
2331
2332 {
2333 /* Q_ASHI - ADD_SERVER_HOST_INFO */
2334 "add_server_host_info",
2335 "ashi",
2336 APPEND,
2337 "sh",
2338 "serverhosts",
2339 "service = %c, mach_id = %i4, enable = int1(%c), value1 = int4(%c), value2 = int4(%c), value3 = %c",
2340 ashi_fields,
2341 6,
2342 (char *)0,
2343 0,
2344 &ashi_validate,
2345 },
2346
2347 {
2348 /* Q_USHI - UPDATE_SERVER_HOST_INFO */
2349 "update_server_host_info",
2350 "ushi",
2351 UPDATE,
2352 "sh",
2353 "serverhosts",
2354 "enable = int1(%c), value1 = int4(%c), value2 = int4(%c), value3 = %c",
2355 ashi_fields,
2356 4,
2357 "sh.service = \"%s\" and sh.mach_id = %d",
2358 2,
2359 &ashi_validate,
2360 },
2361
2362 {
2363 /* Q_RSHE - RESET_SERVER_HOST_ERROR */
2364 "reset_server_host_error",
2365 "rshe",
2366 UPDATE,
2367 "sh",
2368 "serverhosts",
2369 "hosterror = 0",
2370 dshi_fields,
2371 0,
2372 "sh.service = \"%s\" and sh.mach_id = %d",
2373 2,
2374 &rshe_validate,
2375 },
2376
2377 {
2378 /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
2379 "set_server_host_override",
2380 "ssho",
2381 UPDATE,
2382 "sh",
2383 "serverhosts",
2384 "override = 1",
2385 dshi_fields,
2386 0,
2387 "sh.service = \"%s\" and sh.mach_id = %d",
2388 2,
2389 &ssho_validate,
2390 },
2391
2392 {
2393 /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
2394 "set_server_host_internal",
2395 "sshi",
2396 UPDATE,
2397 "sh",
2398 "serverhosts",
2399 "override = int1(%c), success = int1(%c), inprogress = int1(%c), hosterror = int1(%c), hosterrmsg = %c, ltt = %c, lts = %c",
2400 sshi_fields,
2401 7,
2402 "sh.service = \"%s\" and sh.mach_id = %d",
2403 2,
2404 &sshi_validate,
2405 },
2406
2407 {
2408 /* Q_DSHI - DELETE_SERVER_HOST_INFO */
2409 "delete_server_host_info",
2410 "dshi",
2411 DELETE,
2412 "sh",
2413 "serverhosts",
2414 (char *)0,
2415 dshi_fields,
2416 0,
2417 "sh.service = \"%s\" and sh.mach_id = %d",
2418 2,
2419 &dshi_validate,
2420 },
2421
2422 {
2423 /* Q_GSHA - GET_SERVER_HOST_ACCESS */
2424 "get_server_host_access",
2425 "gsha",
2426 RETRIEVE,
2427 "ha",
2428 "hostaccess",
2429 "%c = machine.name, %c = ha.acl_type, %c = text(ha.acl_id), %c = ha.modtime, %c = text(ha.modby), %c = ha.modwith",
2430 gsha_fields,
2431 6,
2432 "machine.name = uppercase(\"%s\") and ha.mach_id = machine.mach_id",
2433 1,
2434 &gsha_validate,
2435 },
2436
2437 {
2438 /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
2439 "add_server_host_access",
2440 "asha",
2441 APPEND,
2442 "ha",
2443 "hostaccess",
2444 "mach_id = %i4, acl_type = %c, acl_id = %i4",
2445 asha_fields,
2446 3,
2447 0,
2448 0,
2449 &asha_validate,
2450 },
2451
2452 {
2453 /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
2454 "update_server_host_access",
2455 "usha",
2456 UPDATE,
2457 "ha",
2458 "hostaccess",
2459 "acl_type = %c, acl_id = %i4",
2460 asha_fields,
2461 2,
2462 "ha.mach_id = %d",
2463 1,
2464 &asha_validate,
2465 },
2466
2467 {
2468 /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
2469 "delete_server_host_access",
2470 "dsha",
2471 DELETE,
2472 "ha",
2473 "hostaccess",
2474 0,
2475 asha_fields,
2476 0,
2477 "ha.mach_id = %d",
2478 1,
2479 &VDmach,
2480 },
2481
2482 {
2483 /* Q_GSLO - GET_SERVER_LOCATIONS */
2484 "get_server_locations",
2485 "gslo",
2486 RETRIEVE,
2487 "sh",
2488 "serverhosts",
2489 "%c = sh.service, %c = machine.name",
2490 gslo_fields,
2491 2,
2492 "sh.service = \"%s\" and sh.mach_id = machine.mach_id",
2493 1,
2494 0,
2495 },
2496
2497 {
2498 /* Q_GFSL - GET_FILESYS_BY_LABEL */
2499 "get_filesys_by_label",
2500 "gfsl",
2501 RETRIEVE,
2502 "fs",
2503 FILESYS,
2504 "%c = fs.label, %c = fs.type, %c = machine.name, %c = fs.name, %c = fs.mount, %c = fs.access, %c = fs.comments, %c = users.login, %c = list.name, %c = text(fs.createflg), %c = fs.lockertype, %c = fs.modtime, %c = text(fs.modby), %c = fs.modwith",
2505 gfsl_fields,
2506 14,
2507 "fs.label = \"%s\" and fs.mach_id = machine.mach_id and fs.owner = users.users_id and fs.owners = list.list_id",
2508 1,
2509 &VDsortf,
2510 },
2511
2512 {
2513 /* Q_GFSM - GET_FILESYS_BY_MACHINE */
2514 "get_filesys_by_machine",
2515 "gfsm",
2516 RETRIEVE,
2517 "fs",
2518 FILESYS,
2519 "%c = fs.label, %c = fs.type, %c = machine.name, %c = fs.name, %c = fs.mount, %c = fs.access, %c = fs.comments, %c = users.login, %c = list.name, %c = text(fs.createflg), %c = fs.lockertype, %c = fs.modtime, %c = text(fs.modby), %c = fs.modwith",
2520 gfsm_fields,
2521 14,
2522 "fs.mach_id = %d and machine.mach_id = fs.mach_id and fs.owner = users.users_id and fs.owners = list.list_id",
2523 1,
2524 &gfsm_validate,
2525 },
2526
2527 {
2528 /* Q_GFSG - GET_FILESYS_BY_GROUP */
2529 "get_filesys_by_group",
2530 "gfsg",
2531 RETRIEVE,
2532 "fs",
2533 FILESYS,
2534 "%c = fs.label, %c = fs.type, %c = machine.name, %c = fs.name, %c = fs.mount, %c = fs.access, %c = fs.comments, %c = users.login, %c = list.name, %c = text(fs.createflg), %c = fs.lockertype, %c = fs.modtime, %c = text(fs.modby), %c = fs.modwith",
2535 gfsg_fields,
2536 14,
2537 "fs.owners = %d and machine.mach_id = fs.mach_id and fs.owner = users.users_id and fs.owners = list.list_id",
2538 1,
2539 &gfsg_validate,
2540 },
2541
2542 {
2543 /* Q_AFIL - ADD_FILESYS */
2544 "add_filesys",
2545 "afil",
2546 APPEND,
2547 "fs",
2548 FILESYS,
2549 "filsys_id = values.value, label = %c, type = %c, mach_id = %i4, name = %c, mount = %c, access = %c, comments = %c, owner = %i4, owners = %i4, createflg = int1(%c), lockertype = %c",
2550 afil_fields,
2551 11,
2552 "values.name = \"filsys_id\"",
2553 0,
2554 &afil_validate,
2555 },
2556
2557 {
2558 /* Q_UFIL - UPDATE_FILESYS */
2559 "update_filesys",
2560 "ufil",
2561 UPDATE,
2562 "fs",
2563 FILESYS,
2564 "label = %c, type = %c, mach_id = %i4, name = %c, mount = %c, access = %c, comments = %c, owner = %i4, owners = %i4, createflg = int1(%c), lockertype = %c",
2565 ufil_fields,
2566 11,
2567 "fs.filsys_id = %d",
2568 1,
2569 &ufil_validate,
2570 },
2571
2572 {
2573 /* Q_DFIL - DELETE_FILESYS */
2574 "delete_filesys",
2575 "dfil",
2576 DELETE,
2577 "fs",
2578 FILESYS,
2579 (char *)0,
2580 dfil_fields,
2581 0,
2582 "fs.filsys_id = %d",
2583 1,
2584 &dfil_validate,
2585 },
2586
2587 {
2588 /* Q_GANF - GET_ALL_NFSPHYS */
2589 "get_all_nfsphys",
2590 "ganf",
2591 RETRIEVE,
2592 "np",
2593 "nfsphys",
2594 "%c = machine.name, %c = np.dir, %c = np.device, %c = text(np.status), %c = text(np.allocated), %c = text(np.size), %c = np.modtime, %c = text(np.modby), %c = np.modwith",
2595 ganf_fields,
2596 9,
2597 "machine.mach_id = np.mach_id",
2598 0,
2599 &VDsortf,
2600 },
2601
2602 {
2603 /* Q_GNFP - GET_NFSPHYS */
2604 "get_nfsphys",
2605 "gnfp",
2606 RETRIEVE,
2607 "np",
2608 "nfsphys",
2609 "%c = machine.name, %c = np.dir, %c = np.device, %c = text(np.status), %c = text(np.allocated), %c = text(np.size), %c = np.modtime, %c = text(np.modby), %c = np.modwith",
2610 gnfp_fields,
2611 9,
2612 "np.mach_id = %d and np.dir = \"%s\" and machine.mach_id = np.mach_id",
2613 2,
2614 &gnfp_validate,
2615 },
2616
2617 {
2618 /* Q_ANFP - ADD_NFSPHYS */
2619 "add_nfsphys",
2620 "anfp",
2621 APPEND,
2622 "np",
2623 "nfsphys",
2624 "nfsphys_id = values.value, mach_id = %i4, dir = %c, device = %c, status = int4(%c), allocated = int4(%c), size = int4(%c)",
2625 ganf_fields,
2626 6,
2627 "values.name = \"nfsphys_id\"",
2628 0,
2629 &anfp_validate,
2630 },
2631
2632 {
2633 /* Q_UNFP - UPDATE_NFSPHYS */
2634 "update_nfsphys",
2635 "unfp",
2636 UPDATE,
2637 "np",
2638 "nfsphys",
2639 "device = %c, status = int4(%c), allocated = int4(%c), size = int4(%c)",
2640 gnfp_fields,
2641 4,
2642 "np.mach_id = %d and np.dir = \"%s\"",
2643 2,
2644 &anfp_validate,
2645 },
2646
2647 {
2648 /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
2649 "adjust_nfsphys_allocation",
2650 "ajnf",
2651 UPDATE,
2652 "np",
2653 "nfsphys",
2654 "allocated = np.allocated + int4(%c)",
2655 dnfp_fields,
2656 1,
2657 "np.mach_id = %d and np.dir = \"%s\"",
2658 2,
2659 &anfp_validate,
2660 },
2661
2662 {
2663 /* Q_DNFP - DELETE_NFSPHYS */
2664 "delete_nfsphys",
2665 "dnfp",
2666 DELETE,
2667 "np",
2668 "nfsphys",
2669 (char *)0,
2670 dnfp_fields,
2671 0,
2672 "np.mach_id = %d and np.dir = \"%s\"",
2673 2,
2674 &dnfp_validate,
2675 },
2676
2677 {
2678 /* Q_GNFQ - GET_NFS_QUOTAS */
2679 "get_nfs_quotas",
2680 "gnfq",
2681 RETRIEVE,
2682 "nq",
2683 "nfsquota",
2684 "%c = filesys.label, %c = users.login, %c = text(nq.quota), %c = nfsphys.dir, %c = machine.name, %c = nq.modtime, %c = text(nq.modby), %c = nq.modwith",
2685 gnfq_fields,
2686 8,
2687 "filesys.label = \"%s\" and filesys.phys_id = nfsphys.nfsphys_id and machine.mach_id = filesys.mach_id and users.users_id = nq.users_id and filesys.filsys_id = nq.filsys_id",
2688 1,
2689 &gnfq_validate,
2690 },
2691
2692 {
2693 /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
2694 "get_nfs_quotas_by_partition",
2695 "gnqp",
2696 RETRIEVE,
2697 "nq",
2698 "nfsquota",
2699 "%c = filesys.label, %c = users.login, %c = text(nq.quota), %c = nfsphys.dir, %c = machine.name",
2700 gnqp_fields,
2701 5,
2702 "filesys.mach_id = %d and nfsphys.dir = \"%s\" and nq.filsys_id = filesys.filsys_id and nfsphys.nfsphys_id = filesys.phys_id and users.users_id = nq.users_id and machine.mach_id = filesys.mach_id",
2703 2,
2704 &VDmach,
2705 },
2706
2707 {
2708 /* Q_GNQU - GET_NFS_QUOTAS_BY_USER */
2709 "get_nfs_quotas_by_user",
2710 "gnqu",
2711 RETRIEVE,
2712 "nq",
2713 "nfsquota",
2714 "%c = filesys.label, %c = users.login, %c = text(nq.quota), %c = nfsphys.dir, %c = machine.name, %c = nq.modtime, %c = text(nq.modby), %c = nq.modwith",
2715 gnqu_fields,
2716 8,
2717 "nq.users_id = %d and filesys.mach_id = machine.mach_id and nq.filsys_id = filesys.filsys_id and nfsphys.nfsphys_id = filesys.phys_id and users.users_id = nq.users_id",
2718 1,
2719 &gnqu_validate,
2720 },
2721
2722 {
2723 /* Q_ANFQ - ADD_NFS_QUOTA */
2724 "add_nfs_quota",
2725 "anfq",
2726 APPEND,
2727 "nq",
2728 "nfsquota",
2729 "filsys_id = %i4, users_id = %i4, quota = int4(%c)",
2730 anfq_fields,
2731 3,
2732 (char *)0,
2733 0,
2734 &anfq_validate,
2735 },
2736
2737 {
2738 /* Q_UNFQ - UPDATE_NFS_QUOTA */
2739 "update_nfs_quota",
2740 "unfq",
2741 UPDATE,
2742 "nq",
2743 "nfsquota",
2744 "quota = int4(%c)",
2745 anfq_fields,
2746 1,
2747 "nq.filsys_id = %d and nq.users_id = %d",
2748 2,
2749 &unfq_validate,
2750 },
2751
2752 {
2753 /* Q_DNFQ - DELETE_NFS_QUOTA */
2754 "delete_nfs_quota",
2755 "dnfq",
2756 DELETE,
2757 "nq",
2758 "nfsquota",
2759 (char *)0,
2760 anfq_fields,
2761 0,
2762 "nq.filsys_id = %d and nq.users_id = %d",
2763 2,
2764 &dnfq_validate,
2765 },
2766
2767 {
2768 /* Q_GLIN - GET_LIST_INFO */
2769 "get_list_info",
2770 "glin",
2771 RETRIEVE,
2772 0,
2773 LIST,
2774 0,
2775 glin_fields,
2776 13,
2777 0,
2778 1,
2779 &glin_validate,
2780 },
2781
2782 {
2783 /* Q_EXLN - EXPAND_LIST_NAMES */
2784 "expand_list_names",
2785 "exln",
2786 RETRIEVE,
2787 "l",
2788 LIST,
2789 "%c = l.name",
2790 glin_fields,
2791 1,
2792 "l.name = \"%s\" and l.list_id != 0",
2793 1,
2794 0
2795 },
2796
2797 {
2798 /* Q_ALIS - ADD_LIST */
2799 "add_list",
2800 "alis",
2801 APPEND,
2802 "l",
2803 LIST,
2804 "list_id=values.value, name=%c, active=int1(%c), public=int1(%c), hidden=int1(%c), maillist=int1(%c), group=int1(%c), gid=int2(%c), acl_type=%c, acl_id=%i4, desc=%c",
2805 alis_fields,
2806 10,
2807 "values.name = \"list_id\"",
2808 0,
2809 &alis_validate,
2810 },
2811
2812 {
2813 /* Q_ULIS - UPDATE_LIST */
2814 "update_list",
2815 "ulis",
2816 UPDATE,
2817 "l",
2818 LIST,
2819 "name=%c, active=int1(%c), public=int1(%c), hidden=int1(%c), maillist=int1(%c), group=int1(%c), gid=int2(%c), acl_type=%c, acl_id=%i4, desc=%c",
2820 ulis_fields,
2821 10,
2822 "l.list_id = %d",
2823 1,
2824 &ulis_validate,
2825 },
2826
2827 {
2828 /* Q_DLIS - DELETE_LIST */
2829 "delete_list",
2830 "dlis",
2831 DELETE,
2832 "l",
2833 LIST,
2834 (char *)0,
2835 dlis_fields,
2836 0,
2837 "l.list_id = %d",
2838 1,
2839 &dlis_validate,
2840 },
2841
2842 {
2843 /* Q_AMTL - ADD_MEMBER_TO_LIST */
2844 "add_member_to_list",
2845 "amtl",
2846 APPEND,
2847 "m",
2848 "members",
2849 "list_id=%i4, member_type=%c, member_id=%i4",
2850 amtl_fields,
2851 3,
2852 (char *)0,
2853 0,
2854 &amtl_validate,
2855 },
2856
2857 {
2858 /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
2859 "delete_member_from_list",
2860 "dmfl",
2861 DELETE,
2862 "m",
2863 "members",
2864 (char *)0,
2865 amtl_fields,
2866 0,
2867 "m.list_id = %d and m.member_type = \"%s\" and m.member_id = %d",
2868 3,
2869 &amtl_validate,
2870 },
2871
2872 {
2873 /* Q_GAUS - GET_ACL_USE */
2874 "get_acl_use",
2875 "gaus",
2876 RETRIEVE,
2877 0,
2878 0,
2879 0,
2880 gaus_fields,
2881 2,
2882 0,
2883 2,
2884 &gaus_validate,
2885 },
2886
2887 {
2888 /* Q_QGLI - QUALIFIED_GET_LISTS */
2889 "qualified_get_lists",
2890 "qgli",
2891 RETRIEVE,
2892 0,
2893 LIST,
2894 0,
2895 qgli_fields,
2896 1,
2897 0,
2898 5,
2899 &qgli_validate,
2900 },
2901
2902 {
2903 /* Q_GMOL - GET_MEMBERS_OF_LIST */
2904 "get_members_of_list",
2905 "gmol",
2906 RETRIEVE,
2907 (char *)0,
2908 "members",
2909 (char *)0,
2910 gmol_fields,
2911 0,
2912 (char *)0,
2913 1,
2914 &gmol_validate,
2915 },
2916
2917 {
2918 /* Q_GLOM - GET_LISTS_OF_MEMBER */
2919 "get_lists_of_member",
2920 "glom",
2921 RETRIEVE,
2922 0,
2923 "members",
2924 0,
2925 glom_fields,
2926 6,
2927 0,
2928 2,
2929 &glom_validate,
2930 },
2931
2932 {
2933 /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
2934 "count_members_of_list",
2935 "cmol",
2936 RETRIEVE,
2937 0,
2938 "members",
2939 0,
2940 cmol_fields,
2941 1,
2942 0,
2943 1,
2944 &cmol_validate,
2945 },
2946
2947 {
2948 /* Q_AUGR - ADD_USER_GROUP */
2949 "add_user_group",
2950 "augr",
2951 APPEND,
2952 (char *)0,
2953 (char *)0,
2954 (char *)0,
2955 augr_fields,
2956 1,
2957 (char *)0,
2958 0,
2959 &augr_validate,
2960 },
2961
2962 {
2963 /* Q_GZCL - GET_ZEPHYR_CLASS */
2964 "get_zephyr_class",
2965 "gzcl",
2966 RETRIEVE,
2967 "z",
2968 "zephyr",
2969 "%c = z.class, %c = z.xmt_type, %c = text(z.xmt_id),%c = z.sub_type, %c = text(z.sub_id),%c = z.iws_type, %c = text(z.iws_id),%c = z.iui_type, %c = text(z.iui_id), %c=z.modtime, %c = text(z.modby), %c = z.modwith",
2970 gzcl_fields,
2971 12,
2972 "z.class = \"%s\"",
2973 1,
2974 &gzcl_validate,
2975 },
2976
2977 {
2978 /* Q_AZCL - ADD_ZEPHYR_CLASS */
2979 "add_zephyr_class",
2980 "azcl",
2981 APPEND,
2982 "z",
2983 "zephyr",
2984 "class = %c, xmt_type = %c, xmt_id = %i4, sub_type = %c, sub_id = %i4, iws_type = %c, iws_id = %i4, iui_type = %c, iui_id = %i4",
2985 azcl_fields,
2986 9,
2987 0,
2988 0,
2989 &azcl_validate,
2990 },
2991
2992 {
2993 /* Q_UZCL - UPDATE_ZEPHYR_CLASS */
2994 "update_zephyr_class",
2995 "uzcl",
2996 UPDATE,
2997 "z",
2998 "zephyr",
2999 "class = %c, xmt_type = %c, xmt_id = %i4, sub_type = %c, sub_id = %i4, iws_type = %c, iws_id = %i4, iui_type = %c, iui_id = %i4",
3000 uzcl_fields,
3001 9,
3002 "z.class = \"%s\"",
3003 1,
3004 &uzcl_validate,
3005 },
3006
3007 {
3008 /* Q_DZCL - DELETE_ZEPHYR_CLASS */
3009 "delete_zephyr_class",
3010 "dzcl",
3011 DELETE,
3012 "z",
3013 "zephyr",
3014 0,
3015 uzcl_fields,
3016 0,
3017 "z.class = \"%s\"",
3018 1,
3019 &dzcl_validate,
3020 },
3021#ifdef notdef
3022 {
3023 /* Q_GSVC - GET_SERVICE */
3024 "get_service",
3025 "gsvc",
3026 RETRIEVE,
3027 "s",
3028 "services",
3029 "%c = s.name, %c = s.protocol, %c = text(s.port), %c = s.desc, %c = s.modtime, %c = text(s.modby), %c = s.modwith",
3030 gasv_fields,
3031 7,
3032 (char *)0,
3033 0,
3034 &gsvc_validate,
3035 },
3036
3037 {
3038 /* Q_ASVC - ADD_SERVICE */
3039 "add_service",
3040 "asvc",
3041 APPEND,
3042 "s",
3043 "services",
3044 "name = %c, protocol = %c, port = int2(%c), desc = %c",
3045 gasv_fields,
3046 4,
3047 (char *)0,
3048 0,
3049 &asvc_validate,
3050 },
3051
3052 {
3053 /* Q_DSVC - DELETE_SERVICE */
3054 "delete_service",
3055 "dsvc",
3056 DELETE,
3057 "s",
3058 "services",
3059 0,
3060 gasv_fields,
3061 0,
3062 "s.name = \"%s\"",
3063 1,
3064 &dsvc_validate,
3065 },
3066#endif
3067 {
3068 /* Q_GPCP - GET_PRINTCAP */
3069 "get_printcap",
3070 "gpcp",
3071 RETRIEVE,
3072 "p",
3073 "printcap",
3074 "%c = p.name, %c = p.pcap, %c = p.modtime, %c = text(p.modby), %c = p.modwith",
3075 gpcp_fields,
3076 5,
3077 "p.name = \"%s\"",
3078 1,
3079 &VDsortf,
3080 },
3081
3082 {
3083 /* Q_APCP - ADD_PRINTCAP */
3084 "add_printcap",
3085 "apcp",
3086 APPEND,
3087 "p",
3088 "printcap",
3089 "name = %c, pcap = %c",
3090 apcp_fields,
3091 2,
3092 0,
3093 0,
3094 &apcp_validate,
3095 },
3096
3097 {
3098 /* Q_DPCP - DELETE_PRINTCAP */
3099 "delete_printcap",
3100 "dpcp",
3101 DELETE,
3102 "p",
3103 "printcap",
3104 0,
3105 apcp_fields,
3106 0,
3107 "p.name = \"%s\"",
3108 1,
3109 &apcp_validate,
3110 },
3111
3112 {
3113 /* Q_GALI - GET_ALIAS */
3114 "get_alias",
3115 "gali",
3116 RETRIEVE,
3117 "a",
3118 "alias",
3119 "%c = a.name, %c = a.type, %c = a.trans",
3120 gali_fields,
3121 3,
3122 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
3123 3,
3124 0,
3125 },
3126
3127 {
3128 /* Q_AALI - ADD_ALIAS */
3129 "add_alias",
3130 "aali",
3131 APPEND,
3132 "a",
3133 "alias",
3134 "name = %c, type = %c, trans = %c",
3135 aali_fields,
3136 3,
3137 (char *)0,
3138 0,
3139 &aali_validate,
3140 },
3141
3142 {
3143 /* Q_DALI - DELETE_ALIAS */
3144 "delete_alias",
3145 "dali",
3146 DELETE,
3147 "a",
3148 "alias",
3149 (char *)0,
3150 aali_fields,
3151 0,
3152 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
3153 3,
3154 &dali_validate,
3155 },
3156
3157 {
3158 /* Q_GVAL - GET_VALUE */
3159 "get_value",
3160 "gval",
3161 RETRIEVE,
3162 "v",
3163 "values",
3164 "%c = text(v.value)",
3165 gval_fields,
3166 1,
3167 "v.name = \"%s\"",
3168 1,
3169 &gval_validate,
3170 },
3171
3172 {
3173 /* Q_AVAL - ADD_VALUE */
3174 "add_value",
3175 "aval",
3176 APPEND,
3177 "v",
3178 "values",
3179 "name = %c, value = int4(%c)",
3180 aval_fields,
3181 2,
3182 (char *)0,
3183 0,
3184 &aval_validate,
3185 },
3186
3187 {
3188 /* Q_UVAL - UPDATE_VALUE */
3189 "update_value",
3190 "uval",
3191 UPDATE,
3192 "v",
3193 "values",
3194 "value = int4(%c)",
3195 aval_fields,
3196 1,
3197 "v.name = \"%s\"",
3198 1,
3199 &aval_validate,
3200 },
3201
3202 {
3203 /* Q_DVAL - DELETE_VALUE */
3204 "delete_value",
3205 "dval",
3206 DELETE,
3207 "v",
3208 "values",
3209 (char *)0,
3210 dval_fields,
3211 0,
3212 "v.name = \"%s\"",
3213 1,
3214 &aval_validate,
3215 },
3216
3217 {
3218 /* Q_GATS - GET_ALL_TABLE_STATS */
3219 "get_all_table_stats",
3220 "gats",
3221 RETRIEVE,
3222 "tbs",
3223 "tblstats",
3224 "%c = tbs.table, %c = text(tbs.retrieves), %c = text(tbs.appends), %c = text(tbs.updates), %c = text(tbs.deletes), %c = tbs.modtime",
3225 gats_fields,
3226 6,
3227 (char *)0,
3228 0,
3229 0,
3230 },
3231
3232};
3233
3234int QueryCount2 = (sizeof Queries2 / sizeof (struct query));
This page took 0.473957 seconds and 5 git commands to generate.