]> andersk Git - moira.git/blame - server/queries2.c
pr_ChangeEntry is smart enough to know that the id's haven't changed.
[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";
68dd808d 111static char MIT_ID[] = "clearid";
d33e787c 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,
68dd808d 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",
68dd808d 447 "home_phone", "office_addr", "office_phone", "department",
4e5ec77f 448 "affiliation", MOD1, MOD2, MOD3,
d33e787c 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",
68dd808d 466 "home_phone", "office_addr", "office_phone", "department",
4e5ec77f 467 "affiliation",
d33e787c 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",
68dd808d 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,
68dd808d 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,
68dd808d 655 "clusters.name = '%s'",
d33e787c 656 1,
68dd808d 657 CLU_ID,
d33e787c 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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,
68dd808d 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",
68dd808d 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",
68dd808d 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,
68dd808d 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",
68dd808d 1973 USERS,
1974 "login, text(uid), shell, last, first, middle, text(status), clearid, type, modtime, text(modby), modwith FROM users",
d33e787c 1975 gubl_fields,
1976 12,
4e5ec77f 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,
68dd808d 1989 "login, text(uid), shell, last, first, middle, text(status), clearid, type, modtime, text(modby), modwith FROM users",
d33e787c 1990 gubu_fields,
1991 12,
4e5ec77f 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,
68dd808d 2004 "login, text(uid), shell, last, first, middle, text(status), clearid, type, modtime, text(modby), modwith FROM users",
d33e787c 2005 gubn_fields,
2006 12,
4e5ec77f 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,
68dd808d 2019 "login, text(uid), shell, last, first, middle, text(status), clearid, type, modtime, text(modby), modwith FROM users",
d33e787c 2020 gubc_fields,
2021 12,
68dd808d 2022 "type = uppercase('%s') AND 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,
68dd808d 2034 "login, text(uid), shell, last, first, middle, text(status), clearid, type, modtime, text(modby), modwith FROM users",
d33e787c 2035 gubm_fields,
2036 12,
68dd808d 2037 "clearid = '%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,
68dd808d 2049 "INTO users (login, users_id, uid, shell, last, first, middle, status, clearid, type) 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,
68dd808d 2079 "users SET login = '%s', uid = %s, shell = '%s', last = '%s', first = '%s', middle = '%s', status = %s, clearid = '%s', type = '%s'",
d33e787c 2080 uusr_fields,
2081 9,
4e5ec77f 2082 "users_id = %d",
d33e787c 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,
4e5ec77f 2094 "users SET shell = '%s'",
d33e787c 2095 uush_fields,
2096 1,
4e5ec77f 2097 "users_id = %d",
d33e787c 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,
4e5ec77f 2109 "users SET status = %s",
d33e787c 2110 uust_fields,
2111 1,
4e5ec77f 2112 "users_id = %d",
d33e787c 2113 1,
2114 &uust_validate,
2115 },
2116
2117 {
4e5ec77f 2118 /* Q_DUSR - DELETE_USER */
d33e787c 2119 "delete_user",
2120 "dusr",
2121 DELETE,
2122 "u",
2123 USERS,
2124 (char *)0,
2125 dusr_fields,
2126 0,
4e5ec77f 2127 "users_id = %d",
d33e787c 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 {
68dd808d 2148 /* Q_GKUM - GET_KERBEROS_USER_MAP */
012fc215 2149 "get_kerberos_user_map",
2150 "gkum",
2151 RETRIEVE,
2152 "k",
2153 "krbmap",
4e5ec77f 2154 "u.login, s.string FROM krbmap k, users u, strings s",
012fc215 2155 gkum_fields,
2156 2,
4e5ec77f 2157 "u.login = '%s' AND s.string = '%s' AND k.users_id = u.users_id AND k.string_id = s.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",
4e5ec77f 2169 "INTO krbmap (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,
4e5ec77f 2187 "k.users_id = %d AND k.string_id = %d",
012fc215 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,
4e5ec77f 2199 "login, fullname, nickname, home_addr, home_phone, office_addr, office_phone, department, affiliation, fmodtime, text(fmodby), fmodwith FROM users",
d33e787c 2200 gfbl_fields,
2201 12,
4e5ec77f 2202 "users_id = %d",
d33e787c 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,
4e5ec77f 2214 "users SET fullname= '%s',nickname= '%s',home_addr= '%s',home_phone= '%s',office_addr= '%s',office_phone= '%s',department= '%s',affiliation= '%s'",
d33e787c 2215 ufbl_fields,
2216 8,
4e5ec77f 2217 "users_id = %d",
d33e787c 2218 1,
2219 &ufbl_validate,
2220 },
2221
2222 {
2223 /* Q_GPOB - GET_POBOX */
2224 "get_pobox",
2225 "gpob",
2226 RETRIEVE,
2227 "u",
2228 USERS,
68dd808d 2229 "login, potype, text(pop_id) + ':' + text(box_id), pmodtime, text(pmodby), pmodwith FROM users",
d33e787c 2230 gpob_fields,
2231 6,
4e5ec77f 2232 "users_id = %d",
d33e787c 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,
68dd808d 2244 "login, potype, text(pop_id) + ':' + text(box_id) FROM users",
d33e787c 2245 gpox_fields,
2246 3,
4e5ec77f 2247 "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,
68dd808d 2259 "login, potype, text(pop_id) + ':' + text(box_id) FROM users",
d33e787c 2260 gpox_fields,
2261 3,
4e5ec77f 2262 "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,
68dd808d 2274 "login, potype, text(pop_id) + ':' + text(box_id) FROM users",
d33e787c 2275 gpox_fields,
2276 3,
4e5ec77f 2277 "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,
4e5ec77f 2304 "users SET potype = 'POP'",
d33e787c 2305 spob_fields,
2306 0,
4e5ec77f 2307 "users_id = %d",
d33e787c 2308 1,
2309 &spop_validate,
2310 },
2311
2312 {
2313 /* Q_DPOB - DELETE_POBOX */
2314 "delete_pobox",
2315 "dpob",
2316 UPDATE,
2317 "u",
2318 USERS,
4e5ec77f 2319 "users SET potype = 'NONE'",
d33e787c 2320 spob_fields,
2321 0,
4e5ec77f 2322 "users_id = %d",
d33e787c 2323 1,
2324 &dpob_validate,
2325 },
2326
2327 {
2328 /* Q_GMAC - GET_MACHINE */
2329 "get_machine",
2330 "gmac",
2331 RETRIEVE,
2332 "m",
2333 MACHINE,
4e5ec77f 2334 "name, type, modtime, text(modby), modwith FROM machine",
d33e787c 2335 gmac_fields,
2336 5,
4e5ec77f 2337 "name = uppercase('%s') AND mach_id != 0",
d33e787c 2338 1,
2339 &VDsortf,
2340 },
2341
2342 {
4e5ec77f 2343 /* Q_AMAC - ADD_MACHINE */ /** Needs subselect */
d33e787c 2344 "add_machine",
2345 "amac",
2346 APPEND,
2347 "m",
2348 MACHINE,
4e5ec77f 2349 "INTO machine (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,
4e5ec77f 2364 "machine SET name = uppercase('%s'), type = '%s'",
d33e787c 2365 umac_fields,
2366 2,
4e5ec77f 2367 "mach_id = %d",
d33e787c 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,
4e5ec77f 2382 "mach_id = %d",
d33e787c 2383 1,
2384 &dmac_validate,
2385 },
2386
2387 {
2388 /* Q_GCLU - GET_CLUSTER */
2389 "get_cluster",
2390 "gclu",
2391 RETRIEVE,
2392 "c",
2393 CLUSTER,
4e5ec77f 2394 "name, desc, location, modtime, text(modby), modwith FROM cluster",
d33e787c 2395 gclu_fields,
2396 6,
4e5ec77f 2397 "name = '%s' AND clu_id != 0",
d33e787c 2398 1,
2399 &VDsortf,
2400 },
2401
2402 {
4e5ec77f 2403 /* Q_ACLU - ADD_CLUSTER */ /** Needs subselect */
d33e787c 2404 "add_cluster",
2405 "aclu",
2406 APPEND,
2407 "c",
2408 CLUSTER,
4e5ec77f 2409 "INTO cluster (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,
4e5ec77f 2424 "cluster SET name = '%s', desc = '%s', location = '%s'",
d33e787c 2425 uclu_fields,
2426 3,
4e5ec77f 2427 "clu_id = %d",
d33e787c 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,
4e5ec77f 2442 "clu_id = %d",
d33e787c 2443 1,
2444 &dclu_validate,
2445 },
2446
2447 {
68dd808d 2448 /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
d33e787c 2449 "get_machine_to_cluster_map",
2450 "gmcm",
2451 RETRIEVE,
4e5ec77f 2452 "map",
d33e787c 2453 "mcmap",
4e5ec77f 2454 "m.name, c.name FROM machine m, cluster c, mcmap map",
d33e787c 2455 gmcm_fields,
2456 2,
4e5ec77f 2457 "m.name = uppercase('%s') AND c.name = '%s' AND map.clu_id = c.clu_id AND map.mach_id = m.mach_id",
d33e787c 2458 2,
2459 &VDsort2,
2460 },
4e5ec77f 2461
d33e787c 2462 {
2463 /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
2464 "add_machine_to_cluster",
2465 "amtc",
2466 APPEND,
2467 "m",
2468 "mcmap",
4e5ec77f 2469 "INTO mcmap (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,
4e5ec77f 2487 "mach_id = %d AND clu_id = %d",
d33e787c 2488 2,
2489 &amtc_validate,
2490 },
2491
2492 {
68dd808d 2493 /* Q_GCLD - GET_CLUSTER_DATA */
d33e787c 2494 "get_cluster_data",
2495 "gcld",
2496 RETRIEVE,
2497 "s",
2498 "svc",
4e5ec77f 2499 "c.name, s.serv_label, s.serv_cluster FROM svc s, cluster c",
d33e787c 2500 gcld_fields,
2501 3,
4e5ec77f 2502 "c.clu_id = s.clu_id AND c.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",
4e5ec77f 2514 "INTO svc (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,
4e5ec77f 2532 "clu_id = %d AND serv_label = '%s' AND 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",
4e5ec77f 2544 "name, text(update_int), target_file, script, text(dfgen), text(dfcheck), type, text(enable), text(inprogress), text(harderror), errmsg, acl_type, text(acl_id), modtime, text(modby), modwith FROM servers",
d33e787c 2545 gsin_fields,
7ac4c1b1 2546 16,
4e5ec77f 2547 "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",
4e5ec77f 2574 "INTO servers (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",
4e5ec77f 2589 "servers 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,
4e5ec77f 2592 "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",
4e5ec77f 2604 "servers SET harderror = 0, dfcheck = dfgen",
d33e787c 2605 dsin_fields,
2606 0,
4e5ec77f 2607 "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",
4e5ec77f 2619 "servers SET dfgen = %s, dfcheck = %s, inprogress = %s, harderror = %s, errmsg = '%s'",
d33e787c 2620 ssif_fields,
7ac4c1b1 2621 5,
4e5ec77f 2622 "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,
4e5ec77f 2637 "name = uppercase('%s')",
d33e787c 2638 1,
2639 &dsin_validate,
2640 },
2641
2642 {
68dd808d 2643 /* Q_GSHI - GET_SERVER_HOST_INFO */
d33e787c 2644 "get_server_host_info",
2645 "gshi",
2646 RETRIEVE,
2647 "sh",
2648 "serverhosts",
4e5ec77f 2649 "sh.service, m.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 FROM serverhosts sh, machine m",
d33e787c 2650 gshi_fields,
2651 16,
4e5ec77f 2652 "sh.service = uppercase('%s') AND m.name = uppercase('%s') AND m.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",
4e5ec77f 2679 "INTO serverhosts (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",
4e5ec77f 2694 "serverhosts SET enable = %s, value1 = %s, value2 = %s, value3 = '%s'",
d33e787c 2695 ashi_fields,
2696 4,
4e5ec77f 2697 "service = uppercase('%s') AND 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",
4e5ec77f 2709 "serverhosts SET hosterror = 0",
d33e787c 2710 dshi_fields,
2711 0,
4e5ec77f 2712 "service = uppercase('%s') AND 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",
4e5ec77f 2724 "serverhosts SET override = 1",
d33e787c 2725 dshi_fields,
2726 0,
4e5ec77f 2727 "service = uppercase('%s') AND mach_id = %d",
d33e787c 2728 2,
2729 &ssho_validate,
2730 },
2731
2732 {
4e5ec77f 2733 /* Q_SSHI - SET_SERVER_HOST_INTERNAL */ /**! Would benefit from extra corr. names -- How to do it? */
d33e787c 2734 "set_server_host_internal",
2735 "sshi",
2736 UPDATE,
7ac4c1b1 2737 "s",
d33e787c 2738 "serverhosts",
4e5ec77f 2739 "serverhosts SET override = %s, success = %s, inprogress = %s, hosterror = %s, hosterrmsg = '%s', ltt = %s, lts = %s",
d33e787c 2740 sshi_fields,
2741 7,
4e5ec77f 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,
4e5ec77f 2757 "service = uppercase('%s') AND mach_id = %d",
d33e787c 2758 2,
2759 &dshi_validate,
2760 },
2761
2762 {
68dd808d 2763 /* Q_GSHA - GET_SERVER_HOST_ACCESS */
d33e787c 2764 "get_server_host_access",
2765 "gsha",
2766 RETRIEVE,
2767 "ha",
2768 "hostaccess",
4e5ec77f 2769 "m.name, ha.acl_type, text(ha.acl_id), ha.modtime, text(ha.modby), ha.modwith FROM hostaccess ha, machine m",
d33e787c 2770 gsha_fields,
2771 6,
4e5ec77f 2772 "m.name = uppercase('%s') AND ha.mach_id = m.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",
4e5ec77f 2784 "INTO hostaccess (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",
4e5ec77f 2799 "hostaccess SET acl_type = '%s', acl_id = %d",
d33e787c 2800 asha_fields,
2801 2,
4e5ec77f 2802 "mach_id = %d",
d33e787c 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,
4e5ec77f 2817 "mach_id = %d",
d33e787c 2818 1,
2819 &VDmach,
2820 },
2821
2822 {
68dd808d 2823 /* Q_GSLO - GET_SERVER_LOCATIONS */
d33e787c 2824 "get_server_locations",
2825 "gslo",
2826 RETRIEVE,
2827 "sh",
2828 "serverhosts",
4e5ec77f 2829 "sh.service, m.name FROM serverhosts sh, machine m",
d33e787c 2830 gslo_fields,
2831 2,
4e5ec77f 2832 "sh.service = uppercase('%s') AND sh.mach_id = m.mach_id",
d33e787c 2833 1,
2834 0,
2835 },
2836
2837 {
68dd808d 2838 /* Q_GFSL - GET_FILESYS_BY_LABEL */
d33e787c 2839 "get_filesys_by_label",
2840 "gfsl",
2841 RETRIEVE,
2842 "fs",
2843 FILESYS,
4e5ec77f 2844 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.access, fs.comments, u.login, l.name, text(fs.createflg), fs.lockertype, fs.modtime, text(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l",
d33e787c 2845 gfsl_fields,
2846 14,
4e5ec77f 2847 "fs.label = '%s' AND fs.mach_id = m.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
d33e787c 2848 1,
2849 &VDsortf,
2850 },
2851
2852 {
68dd808d 2853 /* Q_GFSM - GET_FILESYS_BY_MACHINE */
d33e787c 2854 "get_filesys_by_machine",
2855 "gfsm",
2856 RETRIEVE,
2857 "fs",
2858 FILESYS,
4e5ec77f 2859 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.access, fs.comments, u.login, l.name, text(fs.createflg), fs.lockertype, fs.modtime, text(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l",
d33e787c 2860 gfsm_fields,
2861 14,
4e5ec77f 2862 "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
d33e787c 2863 1,
2864 &gfsm_validate,
2865 },
2866
88343c5e 2867 {
68dd808d 2868 /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
88343c5e 2869 "get_filesys_by_nfsphys",
2870 "gfsn",
2871 RETRIEVE,
2872 "fs",
2873 FILESYS,
4e5ec77f 2874 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.access, fs.comments, u.login, l.name, text(fs.createflg), fs.lockertype, fs.modtime, text(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l, nfsphys np",
88343c5e 2875 gfsn_fields,
2876 14,
4e5ec77f 2877 "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id AND np.nfsphys_id = fs.phys_id AND np.dir = '%s' AND fs.type = 'NFS'",
88343c5e 2878 2,
2879 &gfsm_validate,
2880 },
2881
d33e787c 2882 {
68dd808d 2883 /* Q_GFSG - GET_FILESYS_BY_GROUP */
d33e787c 2884 "get_filesys_by_group",
2885 "gfsg",
2886 RETRIEVE,
2887 "fs",
2888 FILESYS,
4e5ec77f 2889 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.access, fs.comments, u.login, l.name, text(fs.createflg), fs.lockertype, fs.modtime, text(fs.modby), fs.modwith FROM filesys fs, machine m, users u, list l",
d33e787c 2890 gfsg_fields,
2891 14,
4e5ec77f 2892 "fs.owners = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
d33e787c 2893 1,
2894 &gfsg_validate,
2895 },
2896
2897 {
4e5ec77f 2898 /* Q_AFIL - ADD_FILESYS */ /** Need subselect */
d33e787c 2899 "add_filesys",
2900 "afil",
2901 APPEND,
2902 "fs",
2903 FILESYS,
4e5ec77f 2904 "INTO filesys (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,
4e5ec77f 2919 "filesys 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,
4e5ec77f 2922 "filsys_id = %d",
d33e787c 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,
4e5ec77f 2937 "filsys_id = %d",
d33e787c 2938 1,
2939 &dfil_validate,
2940 },
2941
95127ba8 2942 {
68dd808d 2943 /* Q_GFGM - GET_FSGROUOP_MEMBERS */
95127ba8 2944 "get_fsgroup_members",
2945 "gfgm",
2946 RETRIEVE,
2947 "fg",
2948 "fsgroup",
4e5ec77f 2949 "fs.label, fg.key FROM fsgroup fg, filesys fs",
95127ba8 2950 gfgm_fields,
2951 2,
4e5ec77f 2952 "fg.group_id = %d AND fs.filsys_id = fg.filsys_id",
95127ba8 2953 1,
2954 &gfgm_validate,
2955 },
2956
2957 {
4e5ec77f 2958 /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */ /** Needs subselect */
95127ba8 2959 "add_filesys_to_fsgroup",
2960 "aftg",
2961 APPEND,
2962 "fg",
2963 "fsgroup",
4e5ec77f 2964 "INTO fsgroup (group_id,filsys_id,key) VALUES (filesys.filsys_id, %d, '%s')",
95127ba8 2965 gfgm_fields,
2966 2,
4e5ec77f 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,
4e5ec77f 2982 "group_id = %d AND filsys_id = %d",
95127ba8 2983 2,
2984 &aftg_validate,
2985 },
2986
d33e787c 2987 {
68dd808d 2988 /* Q_GANF - GET_ALL_NFSPHYS */
d33e787c 2989 "get_all_nfsphys",
2990 "ganf",
2991 RETRIEVE,
2992 "np",
2993 "nfsphys",
4e5ec77f 2994 "m.name, np.dir, np.device, text(np.status), text(np.allocated), text(np.size), np.modtime, text(np.modby), np.modwith FROM nfsphys np, machine m",
d33e787c 2995 ganf_fields,
2996 9,
4e5ec77f 2997 "m.mach_id = np.mach_id",
d33e787c 2998 0,
2999 &VDsortf,
3000 },
3001
3002 {
68dd808d 3003 /* Q_GNFP - GET_NFSPHYS */
d33e787c 3004 "get_nfsphys",
3005 "gnfp",
3006 RETRIEVE,
3007 "np",
3008 "nfsphys",
4e5ec77f 3009 "m.name, np.dir, np.device, text(np.status), text(np.allocated), text(np.size), np.modtime, text(np.modby), np.modwith FROM nfsphys np, machine m",
d33e787c 3010 gnfp_fields,
3011 9,
4e5ec77f 3012 "np.mach_id = %d AND np.dir = '%s' AND m.mach_id = np.mach_id",
d33e787c 3013 2,
3014 &gnfp_validate,
3015 },
3016
3017 {
4e5ec77f 3018 /* Q_ANFP - ADD_NFSPHYS */ /** Needs subselect */
d33e787c 3019 "add_nfsphys",
3020 "anfp",
3021 APPEND,
3022 "np",
3023 "nfsphys",
4e5ec77f 3024 "INTO nfsphys (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",
4e5ec77f 3039 "nfsphys SET device = '%s', status = '%s', allocated = %s, size = %s",
d33e787c 3040 gnfp_fields,
3041 4,
4e5ec77f 3042 "mach_id = %d AND 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",
4e5ec77f 3054 "nfsphys SET allocated = allocated + %s",
d33e787c 3055 dnfp_fields,
3056 1,
4e5ec77f 3057 "mach_id = %d AND 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,
4e5ec77f 3072 "mach_id = %d AND dir = '%s'",
d33e787c 3073 2,
3074 &dnfp_validate,
3075 },
3076
368be132 3077 {
68dd808d 3078 /* Q_GQOT - GET_QUOTA */
368be132 3079 "get_quota",
3080 "gqot",
3081 RETRIEVE,
3082 "q",
3083 QUOTA,
4e5ec77f 3084 "fs.label, q.type, text(q.entity_id), text(q.quota), text(q.phys_id), m.name, q.modtime, text(q.modby), q.modwith FROM quota q, filesys fs, machine m",
368be132 3085 gqot_fields,
3086 9,
4e5ec77f 3087 "fs.label = '%s' AND q.type = '%s' AND q.entity_id = %d AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
368be132 3088 3,
3089 &gqot_validate,
3090 },
3091
3092 {
68dd808d 3093 /* Q_GQBF - GET_QUOTA_BY_FILESYS */
368be132 3094 "get_quota_by_filesys",
3095 "gqbf",
3096 RETRIEVE,
3097 "q",
3098 QUOTA,
4e5ec77f 3099 "fs.label, q.type, text(q.entity_id), text(q.quota), text(q.phys_id), m.name, q.modtime, text(q.modby), q.modwith FROM quota q, filesys fs, machine m",
368be132 3100 gqbf_fields,
3101 9,
4e5ec77f 3102 "fs.label = '%s' AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
368be132 3103 1,
3104 &gqbf_validate,
3105 },
3106
3107 {
4e5ec77f 3108 /* Q_AQOT - ADD_QUOTA */ /** Needs subselect */
368be132 3109 "add_quota",
3110 "aqot",
3111 APPEND,
3112 "q",
3113 QUOTA,
4e5ec77f 3114 "INTO quota (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,
4e5ec77f 3129 "quota SET quota = %s",
368be132 3130 aqot_fields,
3131 1,
4e5ec77f 3132 "filsys_id = %d AND type = '%s' AND 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,
4e5ec77f 3147 "filsys_id = %d AND type = '%s' AND entity_id = %d",
368be132 3148 3,
3149 &dqot_validate,
3150 },
3151
d33e787c 3152 {
68dd808d 3153 /* Q_GNFQ - GET_NFS_QUOTAS */
88343c5e 3154 "get_nfs_quota",
d33e787c 3155 "gnfq",
3156 RETRIEVE,
368be132 3157 "q",
3158 QUOTA,
4e5ec77f 3159 "fs.label, u.login, text(q.quota), text(q.phys_id), m.name, q.modtime, text(q.modby), q.modwith FROM quota q, filesys fs, users u, machine m",
d33e787c 3160 gnfq_fields,
3161 8,
4e5ec77f 3162 "fs.label = '%s' AND q.type = 'USER' AND q.entity_id = u.users_id AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id AND u.login = '%s'",
88343c5e 3163 2,
d33e787c 3164 &gnfq_validate,
3165 },
3166
3167 {
68dd808d 3168 /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
d33e787c 3169 "get_nfs_quotas_by_partition",
3170 "gnqp",
3171 RETRIEVE,
368be132 3172 "q",
3173 QUOTA,
4e5ec77f 3174 "fs.label, u.login, text(q.quota), np.dir, m.name FROM quota q, filesys fs, users u, nfsphys np, machine m",
d33e787c 3175 gnqp_fields,
3176 5,
4e5ec77f 3177 "np.mach_id = %d AND np.dir = '%s' AND q.phys_id = np.nfsphys_id AND fs.filsys_id = q.filsys_id AND q.type = 'USER' AND u.users_id = q.entity_id AND m.mach_id = np.mach_id",
d33e787c 3178 2,
3179 &VDmach,
3180 },
3181
d33e787c 3182 {
4e5ec77f 3183 /* Q_ANFQ - ADD_NFS_QUOTA */ /** Needs subselect */
d33e787c 3184 "add_nfs_quota",
3185 "anfq",
3186 APPEND,
368be132 3187 "q",
3188 QUOTA,
4e5ec77f 3189 "INTO quota (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,
4e5ec77f 3204 "quota SET quota = %s",
d33e787c 3205 anfq_fields,
3206 1,
4e5ec77f 3207 "filsys_id = %d AND type = 'USER' AND 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,
4e5ec77f 3222 "filsys_id = %d AND type = 'USER' AND 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,
4e5ec77f 3249 "l.name FROM list l",
d33e787c 3250 glin_fields,
3251 1,
4e5ec77f 3252 "l.name = '%s' AND l.list_id != 0",
d33e787c 3253 1,
3254 0
3255 },
3256
3257 {
4e5ec77f 3258 /* Q_ALIS - ADD_LIST */ /** Needs numvalues subselect */
d33e787c 3259 "add_list",
3260 "alis",
3261 APPEND,
3262 "l",
d9b808c4 3263 LIST,
4e5ec77f 3264 "INTO list (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,
4e5ec77f 3279 "list 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,
4e5ec77f 3297 "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",
4e5ec77f 3414 "class, xmt_type, text(xmt_id),sub_type, text(sub_id),iws_type, text(iws_id),iui_type, text(iui_id), modtime, text(modby), modwith FROM zephyr",
d33e787c 3415 gzcl_fields,
3416 12,
4e5ec77f 3417 "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",
4e5ec77f 3429 "INTO zephyr (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",
4e5ec77f 3444 "zephyr 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,
4e5ec77f 3447 "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,
4e5ec77f 3462 "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",
4e5ec77f 3474 "name, protocol, text(port), desc, modtime, text(modby), modwith FROM services",
fd5b2340 3475 gsvc_fields,
d33e787c 3476 7,
4e5ec77f 3477 "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",
4e5ec77f 3489 "INTO services (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,
4e5ec77f 3507 "name = '%s'",
d33e787c 3508 1,
fd5b2340 3509 &asvc_validate,
d33e787c 3510 },
fd5b2340 3511
d33e787c 3512 {
68dd808d 3513 /* Q_GPCE - GET_PRINTCAP_ENTRY */
fd5b2340 3514 "get_printcap_entry",
3515 "gpce",
d33e787c 3516 RETRIEVE,
3517 "p",
3518 "printcap",
4e5ec77f 3519 "p.name, m.name, p.dir, p.rp, text(p.quotaserver), text(p.auth), text(p.price), p.comments, p.modtime, text(p.modby), p.modwith FROM printcap p, machine m",
fd5b2340 3520 gpce_fields,
3521 11,
4e5ec77f 3522 "p.name = '%s' AND m.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",
4e5ec77f 3534 "INTO printcap (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,
4e5ec77f 3552 "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",
4e5ec77f 3564 "p.name, m.name, p.dir, p.rp, p.comments, p.modtime, text(p.modby), p.modwith FROM printcap p, machine m",
fd5b2340 3565 gpcp_fields,
3566 8,
4e5ec77f 3567 "p.name = '%s' AND m.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,
4e5ec77f 3582 "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",
4e5ec77f 3594 "p.name, text(p.ident), m.name, p.modtime, text(p.modby), p.modwith FROM palladium p, machine m",
012fc215 3595 gpdm_fields,
3596 6,
4e5ec77f 3597 "p.name = '%s' AND m.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",
4e5ec77f 3609 "INTO palladium (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,
4e5ec77f 3627 "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",
4e5ec77f 3639 "name, type, trans FROM alias",
d33e787c 3640 gali_fields,
3641 3,
4e5ec77f 3642 "name = '%s' AND type = '%s' AND 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",
4e5ec77f 3654 "INTO alias (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,
4e5ec77f 3672 "name = '%s' AND type = '%s' AND 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",
4e5ec77f 3683 "numvalues",
3684 "text(value) FROM numvalues",
d33e787c 3685 gval_fields,
3686 1,
4e5ec77f 3687 "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",
4e5ec77f 3699 "INTO numvalues (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",
4e5ec77f 3714 "numvalues SET value = %s",
d33e787c 3715 aval_fields,
3716 1,
4e5ec77f 3717 "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,
4e5ec77f 3732 "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",
4e5ec77f 3744 "tbs.table_name, text(tbs.retrieves), text(tbs.appends), text(tbs.updates), text(tbs.deletes), tbs.modtime FROM tblstats tbs",
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.648697 seconds and 5 git commands to generate.