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