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