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