]> andersk Git - moira.git/blame - server/queries2.c
fixes for gcc -f... (the -- $(CFLAGS) --) in makedepend
[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();
50int followup_amtl();
51int followup_anfq();
52int followup_gzcl();
53int followup_gsha();
7ac4c1b1 54int followup_gnfq();
d33e787c 55
56int set_modtime();
57int set_modtime_by_id();
58int set_finger_modtime();
59int set_pobox_modtime();
0ec43029 60int set_uppercase_modtime();
d33e787c 61int set_mach_modtime_by_id();
62int set_cluster_modtime_by_id();
63int set_serverhost_modtime();
64int set_nfsphys_modtime();
65int set_filesys_modtime();
66int set_zephyr_modtime();
67
68/* Special Queries */
69int set_pobox();
70int get_list_info();
88343c5e 71int get_ace_use();
d33e787c 72int qualified_get_lists();
73int get_members_of_list();
74int qualified_get_server();
75int qualified_get_serverhost();
76int trigger_dcm();
77int count_members_of_list();
78int get_lists_of_member();
79int register_user();
80int add_user_group();
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
1379static struct validate amtl_validate = /* for amtl and dmfl */
1380{
1381 amtl_valobj,
339a00a3 1382 4,
d33e787c 1383 "member_id",
1384 "m.list_id = %d and m.member_type = \"%s\" and m.member_id = %d",
1385 3,
1386 0,
1387 access_list,
1388 0,
1389 followup_amtl,
1390};
1391
1392static char *gaus_fields[] = {
88343c5e 1393 ACE_TYPE, ACE_NAME,
d33e787c 1394 "use_type", "use_name",
1395};
1396
1397static struct valobj gaus_valobj[] = {
1398 {V_TYPE, 0, "gaus", 0, 0, SMS_TYPE},
1399 {V_TYPEDATA, 1, 0, 0, 0, SMS_NO_MATCH},
1400};
1401
1402static struct validate gaus_validate = {
1403 gaus_valobj,
1404 2,
1405 0,
1406 0,
1407 0,
1408 0,
1409 access_member,
1410 0,
88343c5e 1411 get_ace_use,
d33e787c 1412};
1413
1414static char *qgli_fields[] = {
1415 "active", "public", "hidden", "maillist", "group",
1416 "list",
1417};
1418
1419static struct valobj qgli_valobj[] = {
1420 {V_TYPE, 0, "boolean", 0, 0, SMS_TYPE},
1421 {V_TYPE, 1, "boolean", 0, 0, SMS_TYPE},
1422 {V_TYPE, 2, "boolean", 0, 0, SMS_TYPE},
1423 {V_TYPE, 3, "boolean", 0, 0, SMS_TYPE},
1424 {V_TYPE, 4, "boolean", 0, 0, SMS_TYPE},
1425};
1426
1427static struct validate qgli_validate = {
1428 qgli_valobj,
1429 5,
1430 0,
1431 0,
1432 0,
1433 0,
1434 access_qgli,
1435 0,
1436 qualified_get_lists,
1437};
1438
1439static char *gmol_fields[] = {
1440 "list_name",
1441 "member_type", "member_name",
1442};
1443
1444static struct validate gmol_validate = {
1445 VOlist0,
1446 1,
1447 0,
1448 0,
1449 0,
1450 0,
1451 access_visible_list,
1452 0,
1453 get_members_of_list,
1454};
1455
1456static char *glom_fields[] = {
1457 "member_type", "member_name",
1458 "list_name", "active", "public", "hidden", "maillist", "group",
1459};
1460
1461static struct valobj glom_valobj[] = {
1462 {V_TYPE, 0, "rmember", 0, 0, SMS_TYPE},
1463 {V_TYPEDATA, 1, 0, 0, 0, SMS_NO_MATCH},
1464 {V_SORT, 0},
1465};
1466
1467static struct validate glom_validate = {
1468 glom_valobj,
1469 3,
1470 0,
1471 0,
1472 0,
1473 0,
1474 access_member,
1475 0,
1476 get_lists_of_member,
1477};
1478
1479static char *cmol_fields[] = {
1480 "list_name",
1481 "count",
1482};
1483
1484static struct validate cmol_validate = {
1485 VOlist0,
1486 1,
1487 0,
1488 0,
1489 0,
1490 0,
1491 access_visible_list,
1492 0,
1493 count_members_of_list,
1494};
1495
1496static char *augr_fields[] = {
1497 LOGIN,
1498};
1499
1500static struct validate augr_validate = {
1501 0,
1502 0,
1503 0,
1504 0,
1505 0,
1506 0,
1507 0,
1508 0,
1509 add_user_group,
1510};
1511
1512static char *gzcl_fields[] = {
1513 CLASS,
1514 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
1515 "iws_type", "iws_name", "iui_type", "iui_name", MOD1, MOD2, MOD3,
1516};
1517
1518static struct validate gzcl_validate = {
1519 VOsort0,
1520 1,
1521 0,
1522 0,
1523 0,
1524 0,
1525 0,
1526 0,
1527 followup_gzcl,
1528};
1529
1530static char *azcl_fields[] = {
1531 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
1532 "iws_type", "iws_name", "iui_type", "iui_name",
1533};
1534
1535static struct valobj azcl_valobj[] = {
1536 {V_CHAR, 0},
88343c5e 1537 {V_TYPE, 1, ACE_TYPE, 0, 0, SMS_ACE},
1538 {V_TYPEDATA, 2, 0, 0, LIST_ID, SMS_ACE},
1539 {V_TYPE, 3, ACE_TYPE, 0, 0, SMS_ACE},
1540 {V_TYPEDATA, 4, 0, 0, LIST_ID, SMS_ACE},
1541 {V_TYPE, 5, ACE_TYPE, 0, 0, SMS_ACE},
1542 {V_TYPEDATA, 6, 0, 0, LIST_ID, SMS_ACE},
1543 {V_TYPE, 7, ACE_TYPE, 0, 0, SMS_ACE},
1544 {V_TYPEDATA, 8, 0, 0, LIST_ID, SMS_ACE},
d33e787c 1545};
1546
1547static struct validate azcl_validate = {
1548 azcl_valobj,
1549 8,
1550 CLASS,
1551 "z.class = \"%s\"",
1552 1,
1553 0,
1554 0,
1555 0,
1556 set_zephyr_modtime,
1557};
1558
1559static char *uzcl_fields[] = {
1560 CLASS, "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
1561 "iws_type", "iws_name", "iui_type", "iui_name",
1562};
1563
1564static struct valobj uzcl_valobj[] = {
1565 {V_RENAME, 1, "zephyr", CLASS, 0, SMS_NOT_UNIQUE},
88343c5e 1566 {V_TYPE, 2, ACE_TYPE, 0, 0, SMS_ACE},
1567 {V_TYPEDATA, 3, 0, 0, LIST_ID, SMS_ACE},
1568 {V_TYPE, 4, ACE_TYPE, 0, 0, SMS_ACE},
1569 {V_TYPEDATA, 5, 0, 0, LIST_ID, SMS_ACE},
1570 {V_TYPE, 6, ACE_TYPE, 0, 0, SMS_ACE},
1571 {V_TYPEDATA, 7, 0, 0, LIST_ID, SMS_ACE},
1572 {V_TYPE, 8, ACE_TYPE, 0, 0, SMS_ACE},
1573 {V_TYPEDATA, 9, 0, 0, LIST_ID, SMS_ACE},
d33e787c 1574};
1575
1576static struct validate uzcl_validate = {
1577 uzcl_valobj,
1578 9,
1579 CLASS,
1580 "z.class = \"%s\"",
1581 1,
1582 0,
1583 0,
1584 0,
1585 set_zephyr_modtime,
1586};
1587
1588static struct validate dzcl_validate = {
1589 0,
1590 0,
1591 CLASS,
1592 "z.class = \"%s\"",
1593 1,
1594 0,
1595 0,
1596 0,
1597 0,
1598};
1599
1600static char *gasv_fields[] = {
1601 SERVICE, "protocol", "port", DESC,
1602};
1603
1604static char *gpcp_fields[] = {
1605 "printer",
fad88070 1606 "printer", "spooling_host", "spool_directory", "rprinter", "comments",
1607 MOD1, MOD2, MOD3,
d33e787c 1608};
1609
1610static char *apcp_fields[] = {
fad88070 1611 "printer", "spooling_host", "spool_directory", "rprinter", "comments",
1612 MOD1, MOD2, MOD3,
1613};
1614
1615static struct valobj apcp_valobj[] = {
1616 {V_CHAR, 0},
1617 {V_ID, 1, MACHINE, NAME, MACH_ID, SMS_MACHINE},
d33e787c 1618};
1619
1620static struct validate apcp_validate = {
fad88070 1621 apcp_valobj,
1622 2,
d33e787c 1623 NAME,
1624 "p.name = \"%s\"",
1625 1,
1626 0,
1627 0,
1628 0,
1629 set_modtime,
1630};
1631
fad88070 1632static struct validate dpcp_validate = {
1633 0,
1634 0,
1635 NAME,
1636 "p.name = \"%s\"",
1637 1,
1638 0,
1639 0,
1640 0,
1641 0,
1642};
1643
d33e787c 1644static char *gali_fields[] = {
1645 NAME, TYPE, "trans",
1646 NAME, TYPE, "trans",
1647};
1648
1649static char *aali_fields[] = {
1650 NAME, TYPE, "trans",
1651};
1652
1653static struct valobj aali_valobj[] = {
1654 {V_CHAR, 0},
1655 {V_TYPE, 1, "alias", 0, 0, SMS_TYPE},
1656 {V_CHAR, 2},
1657};
1658
1659static struct validate aali_validate = {
1660 aali_valobj,
1661 3,
1662 "trans",
1663 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
1664 3,
1665 0,
1666 0,
1667 0,
1668 0,
1669};
1670
1671static struct validate dali_validate = /* DELETE_ALIAS */
1672{
1673 0,
1674 0,
1675 "trans",
1676 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
1677 3,
1678 0,
1679 0,
1680 0,
1681 0,
1682};
1683
1684static char *gval_fields[] = {
1685 NAME, "value",
1686};
1687
1688static struct valobj gval_valobj[] = {
1689 {V_NAME, 0, "values", NAME, 0, SMS_NO_MATCH},
1690};
1691
1692static struct validate gval_validate = {
1693 gval_valobj,
1694 1,
1695 0,
1696 0,
1697 0,
1698 0,
1699 0,
1700 0,
1701 0,
1702};
1703
1704static char *aval_fields[] = {
1705 NAME, "value",
1706};
1707
1708static struct validate aval_validate = /* for aval, uval, and dval */
1709{
1710 VOchar0,
1711 1,
1712 NAME,
1713 "v.name = \"%s\"",
1714 1,
1715 0,
1716 0,
1717 0,
1718 0,
1719};
1720
1721static char *dval_fields[] = {
1722 NAME,
1723};
1724
1725static char *gats_fields[] = {
1726 "table", "retrieves", "appends", "updates", "deletes", MOD1, MOD2, MOD3,
1727};
1728
1729
1730\f
1731/* Generalized Query Definitions */
1732
1733struct query Queries2[] = {
1734 {
1735 /* Q_GALO - GET_ALL_LOGINS */
1736 "get_all_logins",
1737 "galo",
1738 RETRIEVE,
1739 "u",
1740 USERS,
1741 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle",
1742 galo_fields,
1743 6,
1744 "u.users_id != 0",
1745 0,
1746 0,
1747 },
1748
1749 {
1750 /* Q_GAAL - GET_ALL_ACTIVE_LOGINS */
1751 "get_all_active_logins",
1752 "gaal",
1753 RETRIEVE,
1754 "u",
1755 USERS,
1756 "%c = u.login, %c = text(u.uid), %c = u.shell, %c = u.last, %c = u.first, %c = u.middle",
1757 galo_fields,
1758 6,
91cdc7c5 1759 "u.status = 1",
d33e787c 1760 0,
1761 0,
1762 },
1763
1764 {
1765 /* Q_GUBL - GET_USER_BY_LOGIN */
1766 "get_user_by_login",
1767 "gubl",
1768 RETRIEVE,
1769 "u",
1770 USERS,
1771 "%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",
1772 gubl_fields,
1773 12,
1774 "u.login = \"%s\" and u.users_id != 0",
1775 1,
1776 &gubx_validate,
1777 },
1778
1779 {
1780 /* Q_GUBU - GET_USER_BY_UID */
1781 "get_user_by_uid",
1782 "gubu",
1783 RETRIEVE,
1784 "u",
1785 USERS,
1786 "%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",
1787 gubu_fields,
1788 12,
1789 "u.uid = %s and u.users_id != 0",
1790 1,
1791 &gubx_validate,
1792 },
1793
1794 {
1795 /* Q_GUBN - GET_USER_BY_NAME */
1796 "get_user_by_name",
1797 "gubn",
1798 RETRIEVE,
1799 "u",
1800 USERS,
1801 "%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",
1802 gubn_fields,
1803 12,
1804 "u.first = \"%s\" and u.last = \"%s\" and u.users_id != 0",
1805 2,
1806 &VDsortf,
1807 },
1808
1809 {
1810 /* Q_GUBC - GET_USER_BY_CLASS */
1811 "get_user_by_class",
1812 "gubc",
1813 RETRIEVE,
1814 "u",
1815 USERS,
1816 "%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",
1817 gubc_fields,
1818 12,
1819 "u.mit_year = uppercase(\"%s\") and u.users_id != 0",
1820 1,
1821 &VDsortf,
1822 },
1823
1824 {
1825 /* Q_GUBM - GET_USER_BY_MITID */
1826 "get_user_by_mitid",
1827 "gubm",
1828 RETRIEVE,
1829 "u",
1830 USERS,
1831 "%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",
1832 gubm_fields,
1833 12,
1834 "u.mit_id = \"%s\" and u.users_id != 0",
1835 1,
1836 &VDsortf,
1837 },
1838
1839 {
1840 /* Q_AUSR - ADD_USER */
1841 "add_user",
1842 "ausr",
1843 APPEND,
1844 "u",
1845 USERS,
1846 "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",
1847 ausr_fields,
1848 9,
1849 "values.name = \"users_id\"",
1850 0,
1851 &ausr_validate,
1852 },
1853
1854 {
1855 /* Q_RUSR - REGISTER_USER */
1856 "register_user",
1857 "rusr",
1858 APPEND,
1859 0,
1860 0,
1861 0,
1862 rusr_fields,
1863 3,
1864 0,
1865 0,
1866 &rusr_validate,
1867 },
1868
1869 {
1870 /* Q_UUSR - UPDATE_USER */
1871 "update_user",
1872 "uusr",
1873 UPDATE,
1874 "u",
1875 USERS,
1876 "login = %c, uid = int4(%c), shell = %c, last = %c, first = %c, middle = %c, status = int4(%c), mit_id = %c, mit_year = %c",
1877 uusr_fields,
1878 9,
1879 "u.users_id = %d",
1880 1,
1881 &uusr_validate,
1882 },
1883
1884 {
1885 /* Q_UUSH - UPDATE_USER_SHELL */
1886 "update_user_shell",
1887 "uush",
1888 UPDATE,
1889 "u",
1890 USERS,
1891 "shell = %c",
1892 uush_fields,
1893 1,
1894 "u.users_id = %d",
1895 1,
1896 &uush_validate,
1897 },
1898
1899 {
1900 /* Q_UUST - UPDATE_USER_STATUS */
1901 "update_user_status",
1902 "uust",
1903 UPDATE,
1904 "u",
1905 USERS,
1906 "status = int4(%c)",
1907 uust_fields,
1908 1,
1909 "u.users_id = %d",
1910 1,
1911 &uust_validate,
1912 },
1913
1914 {
1915 /* Q_DUSR - DELETE_USER */
1916 "delete_user",
1917 "dusr",
1918 DELETE,
1919 "u",
1920 USERS,
1921 (char *)0,
1922 dusr_fields,
1923 0,
1924 "u.users_id = %d",
1925 1,
1926 &dusr_validate,
1927 },
1928
1929 {
1930 /* Q_DUBU - DELETE_USER_BY_UID */
1931 "delete_user_by_uid",
1932 "dubu",
1933 DELETE,
1934 "u",
1935 USERS,
1936 (char *)0,
1937 dubu_fields,
1938 0,
1939 "u.users_id = %d",
1940 1,
1941 &dubu_validate,
1942 },
1943
1944 {
1945 /* Q_GFBL - GET_FINGER_BY_LOGIN */
1946 "get_finger_by_login",
1947 "gfbl",
1948 RETRIEVE,
1949 "u",
1950 USERS,
1951 "%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",
1952 gfbl_fields,
1953 12,
1954 "u.users_id = %d",
1955 1,
1956 &gfbl_validate,
1957 },
1958
1959 {
1960 /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
1961 "update_finger_by_login",
1962 "ufbl",
1963 UPDATE,
1964 "u",
1965 USERS,
1966 "fullname=%c,nickname=%c,home_addr=%c,home_phone=%c,office_addr=%c,office_phone=%c,mit_dept=%c,mit_affil=%c",
1967 ufbl_fields,
1968 8,
1969 "u.users_id = %d",
1970 1,
1971 &ufbl_validate,
1972 },
1973
1974 {
1975 /* Q_GPOB - GET_POBOX */
1976 "get_pobox",
1977 "gpob",
1978 RETRIEVE,
1979 "u",
1980 USERS,
1981 "%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",
1982 gpob_fields,
1983 6,
1984 "u.users_id = %d",
1985 1,
1986 &gpob_validate,
1987 },
1988
1989 {
1990 /* Q_GAPO - GET_ALL_POBOXES */
1991 "get_all_poboxes",
1992 "gapo",
1993 RETRIEVE,
1994 "u",
1995 USERS,
1996 "%c = u.login, %c = u.potype, %c = text(u.pop_id) + \":\" + text(u.box_id)",
1997 gpox_fields,
1998 3,
1999 "u.potype != \"NONE\"",
2000 0,
2001 &gpox_validate,
2002 },
2003
2004 {
2005 /* Q_GPOP - GET_POBOXES_POP */
2006 "get_poboxes_pop",
2007 "gpop",
2008 RETRIEVE,
2009 "u",
2010 USERS,
2011 "%c = u.login, %c = u.potype, %c = text(u.pop_id) + \":\" + text(u.box_id)",
2012 gpox_fields,
2013 3,
2014 "u.potype = \"POP\"",
2015 0,
2016 &gpox_validate
2017 },
2018
2019 {
2020 /* Q_GPOF - GET_POBOXES_SMTP */
2021 "get_poboxes_smtp",
2022 "gpos",
2023 RETRIEVE,
2024 "u",
2025 USERS,
2026 "%c = u.login, %c = u.potype, %c = text(u.pop_id) + \":\" + text(u.box_id)",
2027 gpox_fields,
2028 3,
2029 "u.potype = \"SMTP\"",
2030 0,
2031 &gpox_validate
2032 },
2033
2034 {
2035 /* Q_SPOB - SET_POBOX */
2036 "set_pobox",
2037 "spob",
2038 UPDATE,
2039 0,
2040 USERS,
2041 0,
2042 spob_fields,
2043 3,
2044 (char *)0,
2045 0,
2046 &spob_validate,
2047 },
2048
2049 {
2050 /* Q_SPOP - SET_POBOX_POP */
2051 "set_pobox_pop",
2052 "spop",
2053 UPDATE,
2054 "u",
2055 USERS,
2056 "potype = \"POP\"",
2057 spob_fields,
2058 0,
2059 "u.users_id = %d",
2060 1,
2061 &spop_validate,
2062 },
2063
2064 {
2065 /* Q_DPOB - DELETE_POBOX */
2066 "delete_pobox",
2067 "dpob",
2068 UPDATE,
2069 "u",
2070 USERS,
2071 "potype = \"NONE\"",
2072 spob_fields,
2073 0,
2074 "u.users_id = %d",
2075 1,
2076 &dpob_validate,
2077 },
2078
2079 {
2080 /* Q_GMAC - GET_MACHINE */
2081 "get_machine",
2082 "gmac",
2083 RETRIEVE,
2084 "m",
2085 MACHINE,
2086 "%c = m.name, %c = m.type, %c = m.modtime, %c = text(m.modby), %c =m.modwith",
2087 gmac_fields,
2088 5,
2089 "m.name = uppercase(\"%s\") and m.mach_id != 0",
2090 1,
2091 &VDsortf,
2092 },
2093
2094 {
2095 /* Q_AMAC - ADD_MACHINE */
2096 "add_machine",
2097 "amac",
2098 APPEND,
2099 "m",
2100 MACHINE,
2101 "name = uppercase(%c), mach_id = values.value, type = %c",
2102 amac_fields,
2103 2,
2104 "values.name = \"mach_id\"",
2105 0,
2106 &amac_validate,
2107 },
2108
2109 {
2110 /* Q_UMAC - UPDATE_MACHINE */
2111 "update_machine",
2112 "umac",
2113 UPDATE,
2114 "m",
2115 MACHINE,
2116 "name = uppercase(%c), type = %c",
2117 umac_fields,
2118 2,
2119 "m.mach_id = %d",
2120 1,
2121 &umac_validate,
2122 },
2123
2124 {
2125 /* Q_DMAC - DELETE_MACHINE */
2126 "delete_machine",
2127 "dmac",
2128 DELETE,
2129 "m",
2130 MACHINE,
2131 (char *)0,
2132 dmac_fields,
2133 0,
2134 "m.mach_id = %d",
2135 1,
2136 &dmac_validate,
2137 },
2138
2139 {
2140 /* Q_GCLU - GET_CLUSTER */
2141 "get_cluster",
2142 "gclu",
2143 RETRIEVE,
2144 "c",
2145 CLUSTER,
2146 "%c = c.name, %c = c.desc, %c = c.location, %c = c.modtime, %c = text(c.modby), %c = c.modwith",
2147 gclu_fields,
2148 6,
2149 "c.name = \"%s\" and c.clu_id != 0",
2150 1,
2151 &VDsortf,
2152 },
2153
2154 {
2155 /* Q_ACLU - ADD_CLUSTER */
2156 "add_cluster",
2157 "aclu",
2158 APPEND,
2159 "c",
2160 CLUSTER,
2161 "name = %c, clu_id = values.value, desc = %c, location = %c",
2162 aclu_fields,
2163 3,
2164 "values.name = \"clu_id\"",
2165 0,
2166 &aclu_validate,
2167 },
2168
2169 {
2170 /* Q_UCLU - UPDATE_CLUSTER */
2171 "update_cluster",
2172 "uclu",
2173 UPDATE,
2174 "c",
2175 CLUSTER,
2176 "name = %c, desc = %c, location = %c",
2177 uclu_fields,
2178 3,
2179 "c.clu_id = %d",
2180 1,
2181 &uclu_validate,
2182 },
2183
2184 {
2185 /* Q_DCLU - DELETE_CLUSTER */
2186 "delete_cluster",
2187 "dclu",
2188 DELETE,
2189 "c",
2190 CLUSTER,
2191 (char *)0,
2192 dclu_fields,
2193 0,
2194 "c.clu_id = %d",
2195 1,
2196 &dclu_validate,
2197 },
2198
2199 {
2200 /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
2201 "get_machine_to_cluster_map",
2202 "gmcm",
2203 RETRIEVE,
2204 "m",
2205 "mcmap",
2206 "%c = machine.name, %c = cluster.name",
2207 gmcm_fields,
2208 2,
2209 "machine.name = uppercase(\"%s\") and cluster.name = \"%s\" and m.clu_id = cluster.clu_id and m.mach_id = machine.mach_id",
2210 2,
2211 &VDsort2,
2212 },
2213
2214 {
2215 /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
2216 "add_machine_to_cluster",
2217 "amtc",
2218 APPEND,
2219 "m",
2220 "mcmap",
2221 "mach_id = %i4, clu_id = %i4",
2222 gmcm_fields,
2223 2,
2224 0,
2225 0,
2226 &amtc_validate,
2227 },
2228
2229 {
2230 /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
2231 "delete_machine_from_cluster",
2232 "dmfc",
2233 DELETE,
2234 "m",
2235 "mcmap",
2236 0,
2237 gmcm_fields,
2238 0,
2239 "m.mach_id = %d and m.clu_id = %d",
2240 2,
2241 &amtc_validate,
2242 },
2243
2244 {
2245 /* Q_GCLD - GET_CLUSTER_DATA */
2246 "get_cluster_data",
2247 "gcld",
2248 RETRIEVE,
2249 "s",
2250 "svc",
2251 "%c = cluster.name, %c = s.serv_label, %c = s.serv_cluster",
2252 gcld_fields,
2253 3,
2254 "cluster.clu_id = s.clu_id and cluster.name = \"%s\" and s.serv_label = \"%s\"",
2255 2,
2256 &VDsort2,
2257 },
2258
2259 {
2260 /* Q_ACLD - ADD_CLUSTER_DATA */
2261 "add_cluster_data",
2262 "acld",
2263 APPEND,
2264 "s",
2265 "svc",
2266 "clu_id = %i4, serv_label = %c, serv_cluster = %c",
88343c5e 2267 acld_fields,
d33e787c 2268 3,
2269 (char *)0,
2270 0,
2271 &acld_validate,
2272 },
2273
2274 {
2275 /* Q_DCLD - DELETE_CLUSTER_DATA */
2276 "delete_cluster_data",
2277 "dcld",
2278 DELETE,
2279 "s",
2280 "svc",
2281 (char *)0,
88343c5e 2282 acld_fields,
d33e787c 2283 0,
2284 "s.clu_id = %d and s.serv_label = \"%s\" and s.serv_cluster = \"%s\"",
2285 3,
2286 &acld_validate,
2287 },
2288
2289 {
2290 /* Q_GSIN - GET_SERVER_INFO */
2291 "get_server_info",
2292 "gsin",
2293 RETRIEVE,
2294 "s",
2295 "servers",
7ac4c1b1 2296 "%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 2297 gsin_fields,
7ac4c1b1 2298 16,
88343c5e 2299 "s.name = uppercase(\"%s\")",
d33e787c 2300 1,
2301 &gsin_validate,
2302 },
2303
2304 {
2305 /* Q_QGSV - QUALIFIED_GET_SERVER */
2306 "qualified_get_server",
2307 "qgsv",
2308 RETRIEVE,
2309 0,
2310 "servers",
2311 0,
2312 qgsv_fields,
2313 1,
2314 0,
2315 3,
2316 &qgsv_validate,
2317 },
2318
2319 {
2320 /* Q_ASIN - ADD_SERVER_INFO */
2321 "add_server_info",
2322 "asin",
2323 APPEND,
2324 "s",
2325 "servers",
88343c5e 2326 "name = uppercase(%c), update_int = int4(%c), target_file = %c, script = %c, type = %c, enable = int1(%c), acl_type = %c, acl_id = %i4",
d33e787c 2327 asin_fields,
2328 8,
2329 (char *)0,
2330 0,
2331 &asin_validate,
2332 },
2333
2334 {
2335 /* Q_USIN - UPDATE_SERVER_INFO */
2336 "update_server_info",
2337 "usin",
2338 UPDATE,
2339 "s",
2340 "servers",
2341 "update_int = int4(%c), target_file = %c, script = %c, type = %c, enable = int1(%c), acl_type = %c, acl_id = %i4",
2342 asin_fields,
2343 7,
88343c5e 2344 "s.name = uppercase(\"%s\")",
d33e787c 2345 1,
2346 &asin_validate,
2347 },
2348
2349 {
2350 /* Q_RSVE - RESET_SERVER_ERROR */
2351 "reset_server_error",
2352 "rsve",
2353 UPDATE,
2354 "s",
2355 "servers",
7ac4c1b1 2356 "harderror = 0, dfcheck = s.dfgen",
d33e787c 2357 dsin_fields,
2358 0,
88343c5e 2359 "s.name = uppercase(\"%s\")",
d33e787c 2360 1,
2361 &rsve_validate,
2362 },
2363
2364 {
2365 /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
2366 "set_server_internal_flags",
2367 "ssif",
2368 UPDATE,
2369 "s",
2370 "servers",
7ac4c1b1 2371 "dfgen = int4(%c), dfcheck = int4(%c), inprogress = int1(%c), harderror = int1(%c), errmsg = %c",
d33e787c 2372 ssif_fields,
7ac4c1b1 2373 5,
88343c5e 2374 "s.name = uppercase(\"%s\")",
d33e787c 2375 1,
2376 &ssif_validate,
2377 },
2378
2379 {
2380 /* Q_DSIN - DELETE_SERVER_INFO */
2381 "delete_server_info",
2382 "dsin",
2383 DELETE,
2384 "s",
2385 "servers",
2386 (char *)0,
2387 dsin_fields,
2388 0,
88343c5e 2389 "s.name = uppercase(\"%s\")",
d33e787c 2390 1,
2391 &dsin_validate,
2392 },
2393
2394 {
2395 /* Q_GSHI - GET_SERVER_HOST_INFO */
2396 "get_server_host_info",
2397 "gshi",
2398 RETRIEVE,
2399 "sh",
2400 "serverhosts",
87167924 2401 "%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 2402 gshi_fields,
2403 16,
88343c5e 2404 "sh.service = uppercase(\"%s\") and machine.name = uppercase(\"%s\") and machine.mach_id = sh.mach_id",
d33e787c 2405 2,
2406 &gshi_validate,
2407 },
2408
2409 {
2410 /* Q_QGSV - QUALIFIED_GET_SERVER_HOST */
2411 "qualified_get_server_host",
2412 "qgsh",
2413 RETRIEVE,
2414 0,
2415 "serverhosts",
2416 0,
2417 qgsh_fields,
2418 2,
2419 0,
2420 6,
2421 &qgsh_validate,
2422 },
2423
2424 {
2425 /* Q_ASHI - ADD_SERVER_HOST_INFO */
2426 "add_server_host_info",
2427 "ashi",
2428 APPEND,
2429 "sh",
2430 "serverhosts",
88343c5e 2431 "service = uppercase(%c), mach_id = %i4, enable = int1(%c), value1 = int4(%c), value2 = int4(%c), value3 = %c",
d33e787c 2432 ashi_fields,
2433 6,
2434 (char *)0,
2435 0,
2436 &ashi_validate,
2437 },
2438
2439 {
2440 /* Q_USHI - UPDATE_SERVER_HOST_INFO */
2441 "update_server_host_info",
2442 "ushi",
2443 UPDATE,
2444 "sh",
2445 "serverhosts",
2446 "enable = int1(%c), value1 = int4(%c), value2 = int4(%c), value3 = %c",
2447 ashi_fields,
2448 4,
88343c5e 2449 "sh.service = uppercase(\"%s\") and sh.mach_id = %d",
d33e787c 2450 2,
2451 &ashi_validate,
2452 },
2453
2454 {
2455 /* Q_RSHE - RESET_SERVER_HOST_ERROR */
2456 "reset_server_host_error",
2457 "rshe",
2458 UPDATE,
2459 "sh",
2460 "serverhosts",
2461 "hosterror = 0",
2462 dshi_fields,
2463 0,
88343c5e 2464 "sh.service = uppercase(\"%s\") and sh.mach_id = %d",
d33e787c 2465 2,
2466 &rshe_validate,
2467 },
2468
2469 {
2470 /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
2471 "set_server_host_override",
2472 "ssho",
2473 UPDATE,
2474 "sh",
2475 "serverhosts",
2476 "override = 1",
2477 dshi_fields,
2478 0,
88343c5e 2479 "sh.service = uppercase(\"%s\") and sh.mach_id = %d",
d33e787c 2480 2,
2481 &ssho_validate,
2482 },
2483
2484 {
2485 /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
2486 "set_server_host_internal",
2487 "sshi",
2488 UPDATE,
7ac4c1b1 2489 "s",
d33e787c 2490 "serverhosts",
87167924 2491 "override = int1(%c), success = int1(%c), inprogress = int1(%c), hosterror = int1(%c), hosterrmsg = %c, ltt = int4(%c), lts = int4(%c)",
d33e787c 2492 sshi_fields,
2493 7,
647daf33 2494 "s.service = uppercase(\"%s\") and s.mach_id = machine.mach_id and machine.name = \"%s\"",
d33e787c 2495 2,
2496 &sshi_validate,
2497 },
2498
2499 {
2500 /* Q_DSHI - DELETE_SERVER_HOST_INFO */
2501 "delete_server_host_info",
2502 "dshi",
2503 DELETE,
2504 "sh",
2505 "serverhosts",
2506 (char *)0,
2507 dshi_fields,
2508 0,
88343c5e 2509 "sh.service = uppercase(\"%s\") and sh.mach_id = %d",
d33e787c 2510 2,
2511 &dshi_validate,
2512 },
2513
2514 {
2515 /* Q_GSHA - GET_SERVER_HOST_ACCESS */
2516 "get_server_host_access",
2517 "gsha",
2518 RETRIEVE,
2519 "ha",
2520 "hostaccess",
2521 "%c = machine.name, %c = ha.acl_type, %c = text(ha.acl_id), %c = ha.modtime, %c = text(ha.modby), %c = ha.modwith",
2522 gsha_fields,
2523 6,
2524 "machine.name = uppercase(\"%s\") and ha.mach_id = machine.mach_id",
2525 1,
2526 &gsha_validate,
2527 },
2528
2529 {
2530 /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
2531 "add_server_host_access",
2532 "asha",
2533 APPEND,
2534 "ha",
2535 "hostaccess",
2536 "mach_id = %i4, acl_type = %c, acl_id = %i4",
2537 asha_fields,
2538 3,
2539 0,
2540 0,
2541 &asha_validate,
2542 },
2543
2544 {
2545 /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
2546 "update_server_host_access",
2547 "usha",
2548 UPDATE,
2549 "ha",
2550 "hostaccess",
2551 "acl_type = %c, acl_id = %i4",
2552 asha_fields,
2553 2,
2554 "ha.mach_id = %d",
2555 1,
2556 &asha_validate,
2557 },
2558
2559 {
2560 /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
2561 "delete_server_host_access",
2562 "dsha",
2563 DELETE,
2564 "ha",
2565 "hostaccess",
2566 0,
2567 asha_fields,
2568 0,
2569 "ha.mach_id = %d",
2570 1,
2571 &VDmach,
2572 },
2573
2574 {
2575 /* Q_GSLO - GET_SERVER_LOCATIONS */
2576 "get_server_locations",
2577 "gslo",
2578 RETRIEVE,
2579 "sh",
2580 "serverhosts",
2581 "%c = sh.service, %c = machine.name",
2582 gslo_fields,
2583 2,
88343c5e 2584 "sh.service = uppercase(\"%s\") and sh.mach_id = machine.mach_id",
d33e787c 2585 1,
2586 0,
2587 },
2588
2589 {
2590 /* Q_GFSL - GET_FILESYS_BY_LABEL */
2591 "get_filesys_by_label",
2592 "gfsl",
2593 RETRIEVE,
2594 "fs",
2595 FILESYS,
2596 "%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",
2597 gfsl_fields,
2598 14,
2599 "fs.label = \"%s\" and fs.mach_id = machine.mach_id and fs.owner = users.users_id and fs.owners = list.list_id",
2600 1,
2601 &VDsortf,
2602 },
2603
2604 {
2605 /* Q_GFSM - GET_FILESYS_BY_MACHINE */
2606 "get_filesys_by_machine",
2607 "gfsm",
2608 RETRIEVE,
2609 "fs",
2610 FILESYS,
2611 "%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",
2612 gfsm_fields,
2613 14,
2614 "fs.mach_id = %d and machine.mach_id = fs.mach_id and fs.owner = users.users_id and fs.owners = list.list_id",
2615 1,
2616 &gfsm_validate,
2617 },
2618
88343c5e 2619 {
2620 /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
2621 "get_filesys_by_nfsphys",
2622 "gfsn",
2623 RETRIEVE,
2624 "fs",
2625 FILESYS,
2626 "%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",
2627 gfsn_fields,
2628 14,
2629 "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\"",
2630 2,
2631 &gfsm_validate,
2632 },
2633
d33e787c 2634 {
2635 /* Q_GFSG - GET_FILESYS_BY_GROUP */
2636 "get_filesys_by_group",
2637 "gfsg",
2638 RETRIEVE,
2639 "fs",
2640 FILESYS,
2641 "%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",
2642 gfsg_fields,
2643 14,
2644 "fs.owners = %d and machine.mach_id = fs.mach_id and fs.owner = users.users_id and fs.owners = list.list_id",
2645 1,
2646 &gfsg_validate,
2647 },
2648
2649 {
2650 /* Q_AFIL - ADD_FILESYS */
2651 "add_filesys",
2652 "afil",
2653 APPEND,
2654 "fs",
2655 FILESYS,
2656 "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",
2657 afil_fields,
2658 11,
2659 "values.name = \"filsys_id\"",
2660 0,
2661 &afil_validate,
2662 },
2663
2664 {
2665 /* Q_UFIL - UPDATE_FILESYS */
2666 "update_filesys",
2667 "ufil",
2668 UPDATE,
2669 "fs",
2670 FILESYS,
2671 "label = %c, type = %c, mach_id = %i4, name = %c, mount = %c, access = %c, comments = %c, owner = %i4, owners = %i4, createflg = int1(%c), lockertype = %c",
2672 ufil_fields,
2673 11,
2674 "fs.filsys_id = %d",
2675 1,
2676 &ufil_validate,
2677 },
2678
2679 {
2680 /* Q_DFIL - DELETE_FILESYS */
2681 "delete_filesys",
2682 "dfil",
2683 DELETE,
2684 "fs",
2685 FILESYS,
2686 (char *)0,
2687 dfil_fields,
2688 0,
2689 "fs.filsys_id = %d",
2690 1,
2691 &dfil_validate,
2692 },
2693
95127ba8 2694 {
2695 /* Q_GFGM - GET_FSGROUOP_MEMBERS */
2696 "get_fsgroup_members",
2697 "gfgm",
2698 RETRIEVE,
2699 "fg",
2700 "fsgroup",
2701 "%c = filesys.label, %c = fg.key",
2702 gfgm_fields,
2703 2,
2704 "fg.group_id = %d and filesys.filsys_id = fg.filsys_id",
2705 1,
2706 &gfgm_validate,
2707 },
2708
2709 {
2710 /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
2711 "add_filesys_to_fsgroup",
2712 "aftg",
2713 APPEND,
2714 "fg",
2715 "fsgroup",
2716 "group_id = filesys.filsys_id, filsys_id = %i4, key = %c",
2717 gfgm_fields,
2718 2,
2719 "filesys.filsys_id = %d and filesys.type = \"FSGROUP\"",
2720 1,
2721 &aftg_validate,
2722 },
2723
2724 {
2725 /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
2726 "remove_filesys_from_fsgroup",
2727 "rffg",
2728 DELETE,
2729 "fg",
2730 "fsgroup",
2731 (char *)0,
2732 gfgm_fields,
2733 0,
2734 "fg.group_id = %d and fg.filsys_id = %d",
2735 2,
2736 &aftg_validate,
2737 },
2738
d33e787c 2739 {
2740 /* Q_GANF - GET_ALL_NFSPHYS */
2741 "get_all_nfsphys",
2742 "ganf",
2743 RETRIEVE,
2744 "np",
2745 "nfsphys",
2746 "%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",
2747 ganf_fields,
2748 9,
2749 "machine.mach_id = np.mach_id",
2750 0,
2751 &VDsortf,
2752 },
2753
2754 {
2755 /* Q_GNFP - GET_NFSPHYS */
2756 "get_nfsphys",
2757 "gnfp",
2758 RETRIEVE,
2759 "np",
2760 "nfsphys",
2761 "%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",
2762 gnfp_fields,
2763 9,
2764 "np.mach_id = %d and np.dir = \"%s\" and machine.mach_id = np.mach_id",
2765 2,
2766 &gnfp_validate,
2767 },
2768
2769 {
2770 /* Q_ANFP - ADD_NFSPHYS */
2771 "add_nfsphys",
2772 "anfp",
2773 APPEND,
2774 "np",
2775 "nfsphys",
2776 "nfsphys_id = values.value, mach_id = %i4, dir = %c, device = %c, status = int4(%c), allocated = int4(%c), size = int4(%c)",
2777 ganf_fields,
2778 6,
2779 "values.name = \"nfsphys_id\"",
2780 0,
2781 &anfp_validate,
2782 },
2783
2784 {
2785 /* Q_UNFP - UPDATE_NFSPHYS */
2786 "update_nfsphys",
2787 "unfp",
2788 UPDATE,
2789 "np",
2790 "nfsphys",
2791 "device = %c, status = int4(%c), allocated = int4(%c), size = int4(%c)",
2792 gnfp_fields,
2793 4,
2794 "np.mach_id = %d and np.dir = \"%s\"",
2795 2,
2796 &anfp_validate,
2797 },
2798
2799 {
2800 /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
2801 "adjust_nfsphys_allocation",
2802 "ajnf",
2803 UPDATE,
2804 "np",
2805 "nfsphys",
2806 "allocated = np.allocated + int4(%c)",
2807 dnfp_fields,
2808 1,
2809 "np.mach_id = %d and np.dir = \"%s\"",
2810 2,
2811 &anfp_validate,
2812 },
2813
2814 {
2815 /* Q_DNFP - DELETE_NFSPHYS */
2816 "delete_nfsphys",
2817 "dnfp",
2818 DELETE,
2819 "np",
2820 "nfsphys",
2821 (char *)0,
2822 dnfp_fields,
2823 0,
2824 "np.mach_id = %d and np.dir = \"%s\"",
2825 2,
2826 &dnfp_validate,
2827 },
2828
2829 {
2830 /* Q_GNFQ - GET_NFS_QUOTAS */
88343c5e 2831 "get_nfs_quota",
d33e787c 2832 "gnfq",
2833 RETRIEVE,
2834 "nq",
2835 "nfsquota",
2836 "%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",
2837 gnfq_fields,
2838 8,
d90d5c45 2839 "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 2840 2,
d33e787c 2841 &gnfq_validate,
2842 },
2843
2844 {
2845 /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
2846 "get_nfs_quotas_by_partition",
2847 "gnqp",
2848 RETRIEVE,
2849 "nq",
2850 "nfsquota",
2851 "%c = filesys.label, %c = users.login, %c = text(nq.quota), %c = nfsphys.dir, %c = machine.name",
2852 gnqp_fields,
2853 5,
d90d5c45 2854 "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 2855 2,
2856 &VDmach,
2857 },
2858
d33e787c 2859 {
2860 /* Q_ANFQ - ADD_NFS_QUOTA */
2861 "add_nfs_quota",
2862 "anfq",
2863 APPEND,
2864 "nq",
2865 "nfsquota",
d90d5c45 2866 "filsys_id = filesys.filsys_id, users_id = %i4, quota = int4(%c), phys_id = filesys.phys_id",
d33e787c 2867 anfq_fields,
d90d5c45 2868 2,
2869 "filesys.filsys_id = %d",
2870 1,
d33e787c 2871 &anfq_validate,
2872 },
2873
2874 {
2875 /* Q_UNFQ - UPDATE_NFS_QUOTA */
2876 "update_nfs_quota",
2877 "unfq",
2878 UPDATE,
2879 "nq",
2880 "nfsquota",
2881 "quota = int4(%c)",
2882 anfq_fields,
2883 1,
2884 "nq.filsys_id = %d and nq.users_id = %d",
2885 2,
2886 &unfq_validate,
2887 },
2888
2889 {
2890 /* Q_DNFQ - DELETE_NFS_QUOTA */
2891 "delete_nfs_quota",
2892 "dnfq",
2893 DELETE,
2894 "nq",
2895 "nfsquota",
2896 (char *)0,
2897 anfq_fields,
2898 0,
2899 "nq.filsys_id = %d and nq.users_id = %d",
2900 2,
2901 &dnfq_validate,
2902 },
2903
2904 {
2905 /* Q_GLIN - GET_LIST_INFO */
2906 "get_list_info",
2907 "glin",
2908 RETRIEVE,
2909 0,
2910 LIST,
2911 0,
2912 glin_fields,
2913 13,
2914 0,
2915 1,
2916 &glin_validate,
2917 },
2918
2919 {
2920 /* Q_EXLN - EXPAND_LIST_NAMES */
2921 "expand_list_names",
2922 "exln",
2923 RETRIEVE,
2924 "l",
2925 LIST,
2926 "%c = l.name",
2927 glin_fields,
2928 1,
2929 "l.name = \"%s\" and l.list_id != 0",
2930 1,
2931 0
2932 },
2933
2934 {
2935 /* Q_ALIS - ADD_LIST */
2936 "add_list",
2937 "alis",
2938 APPEND,
2939 "l",
2940 LIST,
2941 "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",
2942 alis_fields,
2943 10,
2944 "values.name = \"list_id\"",
2945 0,
2946 &alis_validate,
2947 },
2948
2949 {
2950 /* Q_ULIS - UPDATE_LIST */
2951 "update_list",
2952 "ulis",
2953 UPDATE,
2954 "l",
2955 LIST,
2956 "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",
2957 ulis_fields,
2958 10,
2959 "l.list_id = %d",
2960 1,
2961 &ulis_validate,
2962 },
2963
2964 {
2965 /* Q_DLIS - DELETE_LIST */
2966 "delete_list",
2967 "dlis",
2968 DELETE,
2969 "l",
2970 LIST,
2971 (char *)0,
2972 dlis_fields,
2973 0,
2974 "l.list_id = %d",
2975 1,
2976 &dlis_validate,
2977 },
2978
2979 {
2980 /* Q_AMTL - ADD_MEMBER_TO_LIST */
2981 "add_member_to_list",
2982 "amtl",
2983 APPEND,
2984 "m",
2985 "members",
2986 "list_id=%i4, member_type=%c, member_id=%i4",
2987 amtl_fields,
2988 3,
2989 (char *)0,
2990 0,
2991 &amtl_validate,
2992 },
2993
2994 {
2995 /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
2996 "delete_member_from_list",
2997 "dmfl",
2998 DELETE,
2999 "m",
3000 "members",
3001 (char *)0,
3002 amtl_fields,
3003 0,
3004 "m.list_id = %d and m.member_type = \"%s\" and m.member_id = %d",
3005 3,
3006 &amtl_validate,
3007 },
3008
3009 {
88343c5e 3010 /* Q_GAUS - GET_ACE_USE */
3011 "get_ace_use",
d33e787c 3012 "gaus",
3013 RETRIEVE,
3014 0,
3015 0,
3016 0,
3017 gaus_fields,
3018 2,
3019 0,
3020 2,
3021 &gaus_validate,
3022 },
3023
3024 {
3025 /* Q_QGLI - QUALIFIED_GET_LISTS */
3026 "qualified_get_lists",
3027 "qgli",
3028 RETRIEVE,
3029 0,
3030 LIST,
3031 0,
3032 qgli_fields,
3033 1,
3034 0,
3035 5,
3036 &qgli_validate,
3037 },
3038
3039 {
3040 /* Q_GMOL - GET_MEMBERS_OF_LIST */
3041 "get_members_of_list",
3042 "gmol",
3043 RETRIEVE,
3044 (char *)0,
3045 "members",
3046 (char *)0,
3047 gmol_fields,
3048 0,
3049 (char *)0,
3050 1,
3051 &gmol_validate,
3052 },
3053
3054 {
3055 /* Q_GLOM - GET_LISTS_OF_MEMBER */
3056 "get_lists_of_member",
3057 "glom",
3058 RETRIEVE,
3059 0,
3060 "members",
3061 0,
3062 glom_fields,
3063 6,
3064 0,
3065 2,
3066 &glom_validate,
3067 },
3068
3069 {
3070 /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
3071 "count_members_of_list",
3072 "cmol",
3073 RETRIEVE,
3074 0,
3075 "members",
3076 0,
3077 cmol_fields,
3078 1,
3079 0,
3080 1,
3081 &cmol_validate,
3082 },
7ac4c1b1 3083#ifdef notdef
d33e787c 3084 {
3085 /* Q_AUGR - ADD_USER_GROUP */
3086 "add_user_group",
3087 "augr",
3088 APPEND,
3089 (char *)0,
3090 (char *)0,
3091 (char *)0,
3092 augr_fields,
3093 1,
3094 (char *)0,
3095 0,
3096 &augr_validate,
3097 },
7ac4c1b1 3098#endif
d33e787c 3099 {
3100 /* Q_GZCL - GET_ZEPHYR_CLASS */
3101 "get_zephyr_class",
3102 "gzcl",
3103 RETRIEVE,
3104 "z",
3105 "zephyr",
3106 "%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",
3107 gzcl_fields,
3108 12,
3109 "z.class = \"%s\"",
3110 1,
3111 &gzcl_validate,
3112 },
3113
3114 {
3115 /* Q_AZCL - ADD_ZEPHYR_CLASS */
3116 "add_zephyr_class",
3117 "azcl",
3118 APPEND,
3119 "z",
3120 "zephyr",
3121 "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",
3122 azcl_fields,
3123 9,
3124 0,
3125 0,
3126 &azcl_validate,
3127 },
3128
3129 {
3130 /* Q_UZCL - UPDATE_ZEPHYR_CLASS */
3131 "update_zephyr_class",
3132 "uzcl",
3133 UPDATE,
3134 "z",
3135 "zephyr",
3136 "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",
3137 uzcl_fields,
3138 9,
3139 "z.class = \"%s\"",
3140 1,
3141 &uzcl_validate,
3142 },
3143
3144 {
3145 /* Q_DZCL - DELETE_ZEPHYR_CLASS */
3146 "delete_zephyr_class",
3147 "dzcl",
3148 DELETE,
3149 "z",
3150 "zephyr",
3151 0,
3152 uzcl_fields,
3153 0,
3154 "z.class = \"%s\"",
3155 1,
3156 &dzcl_validate,
3157 },
3158#ifdef notdef
3159 {
3160 /* Q_GSVC - GET_SERVICE */
3161 "get_service",
3162 "gsvc",
3163 RETRIEVE,
3164 "s",
3165 "services",
3166 "%c = s.name, %c = s.protocol, %c = text(s.port), %c = s.desc, %c = s.modtime, %c = text(s.modby), %c = s.modwith",
3167 gasv_fields,
3168 7,
3169 (char *)0,
3170 0,
3171 &gsvc_validate,
3172 },
3173
3174 {
3175 /* Q_ASVC - ADD_SERVICE */
3176 "add_service",
3177 "asvc",
3178 APPEND,
3179 "s",
3180 "services",
3181 "name = %c, protocol = %c, port = int2(%c), desc = %c",
3182 gasv_fields,
3183 4,
3184 (char *)0,
3185 0,
3186 &asvc_validate,
3187 },
3188
3189 {
3190 /* Q_DSVC - DELETE_SERVICE */
3191 "delete_service",
3192 "dsvc",
3193 DELETE,
3194 "s",
3195 "services",
3196 0,
3197 gasv_fields,
3198 0,
3199 "s.name = \"%s\"",
3200 1,
3201 &dsvc_validate,
3202 },
3203#endif
3204 {
3205 /* Q_GPCP - GET_PRINTCAP */
3206 "get_printcap",
3207 "gpcp",
3208 RETRIEVE,
3209 "p",
3210 "printcap",
fad88070 3211 "%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 3212 gpcp_fields,
fad88070 3213 8,
3214 "p.name = \"%s\" and machine.mach_id = p.mach_id",
d33e787c 3215 1,
3216 &VDsortf,
3217 },
3218
3219 {
3220 /* Q_APCP - ADD_PRINTCAP */
3221 "add_printcap",
3222 "apcp",
3223 APPEND,
3224 "p",
3225 "printcap",
fad88070 3226 "name = %c, mach_id = %i4, dir = %c, rp = %c, comments = %c",
d33e787c 3227 apcp_fields,
fad88070 3228 5,
d33e787c 3229 0,
3230 0,
3231 &apcp_validate,
3232 },
3233
3234 {
3235 /* Q_DPCP - DELETE_PRINTCAP */
3236 "delete_printcap",
3237 "dpcp",
3238 DELETE,
3239 "p",
3240 "printcap",
3241 0,
3242 apcp_fields,
3243 0,
3244 "p.name = \"%s\"",
3245 1,
fad88070 3246 &dpcp_validate,
d33e787c 3247 },
3248
3249 {
3250 /* Q_GALI - GET_ALIAS */
3251 "get_alias",
3252 "gali",
3253 RETRIEVE,
3254 "a",
3255 "alias",
3256 "%c = a.name, %c = a.type, %c = a.trans",
3257 gali_fields,
3258 3,
3259 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
3260 3,
3261 0,
3262 },
3263
3264 {
3265 /* Q_AALI - ADD_ALIAS */
3266 "add_alias",
3267 "aali",
3268 APPEND,
3269 "a",
3270 "alias",
3271 "name = %c, type = %c, trans = %c",
3272 aali_fields,
3273 3,
3274 (char *)0,
3275 0,
3276 &aali_validate,
3277 },
3278
3279 {
3280 /* Q_DALI - DELETE_ALIAS */
3281 "delete_alias",
3282 "dali",
3283 DELETE,
3284 "a",
3285 "alias",
3286 (char *)0,
3287 aali_fields,
3288 0,
3289 "a.name = \"%s\" and a.type = \"%s\" and a.trans = \"%s\"",
3290 3,
3291 &dali_validate,
3292 },
3293
3294 {
3295 /* Q_GVAL - GET_VALUE */
3296 "get_value",
3297 "gval",
3298 RETRIEVE,
3299 "v",
3300 "values",
3301 "%c = text(v.value)",
3302 gval_fields,
3303 1,
3304 "v.name = \"%s\"",
3305 1,
3306 &gval_validate,
3307 },
3308
3309 {
3310 /* Q_AVAL - ADD_VALUE */
3311 "add_value",
3312 "aval",
3313 APPEND,
3314 "v",
3315 "values",
3316 "name = %c, value = int4(%c)",
3317 aval_fields,
3318 2,
3319 (char *)0,
3320 0,
3321 &aval_validate,
3322 },
3323
3324 {
3325 /* Q_UVAL - UPDATE_VALUE */
3326 "update_value",
3327 "uval",
3328 UPDATE,
3329 "v",
3330 "values",
3331 "value = int4(%c)",
3332 aval_fields,
3333 1,
3334 "v.name = \"%s\"",
3335 1,
3336 &aval_validate,
3337 },
3338
3339 {
3340 /* Q_DVAL - DELETE_VALUE */
3341 "delete_value",
3342 "dval",
3343 DELETE,
3344 "v",
3345 "values",
3346 (char *)0,
3347 dval_fields,
3348 0,
3349 "v.name = \"%s\"",
3350 1,
3351 &aval_validate,
3352 },
3353
3354 {
3355 /* Q_GATS - GET_ALL_TABLE_STATS */
3356 "get_all_table_stats",
3357 "gats",
3358 RETRIEVE,
3359 "tbs",
3360 "tblstats",
3361 "%c = tbs.table, %c = text(tbs.retrieves), %c = text(tbs.appends), %c = text(tbs.updates), %c = text(tbs.deletes), %c = tbs.modtime",
3362 gats_fields,
3363 6,
3364 (char *)0,
3365 0,
3366 0,
3367 },
3368
3369};
3370
3371int QueryCount2 = (sizeof Queries2 / sizeof (struct query));
This page took 0.52699 seconds and 5 git commands to generate.