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