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