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