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