]> andersk Git - moira.git/blame - server/queries2.c
punt mrgdb
[moira.git] / server / queries2.c
CommitLineData
7ac48069 1/* $Id$
d33e787c 2 *
7ac48069 3 * This file defines the query dispatch table for version 2 of the protocol
d33e787c 4 *
7ac48069 5 * Copyright (C) 1987-1998 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>
03c05291 11#include "mr_server.h"
12#undef ACE_TYPE
13#undef ACE_NAME
14#undef NAME
d33e787c 15#include "query.h"
d33e787c 16
7ac48069 17#include "mr_et.h"
d33e787c 18
d33e787c 19/* String compression
20 * These are commonly used strings in the table, defined here so that
21 * they can be shared.
22 */
23
88343c5e 24static char ACE_NAME[] = "ace_name";
25static char ACE_TYPE[] = "ace_type";
3c1d412c 26static char ADDRESS[] = "address";
a66a2204 27static char ALIAS[] = "alias";
d33e787c 28static char CLASS[] = "class";
29static char CLU_ID[] = "clu_id";
03c05291 30static char CLUSTER[] = "clusters";
4ffa124a 31static char COMMENTS[] = "comments";
d33e787c 32static char DESC[] = "description";
33static char DEVICE[] = "device";
34static char DIR[] = "dir";
35static char FILESYS[] = "filesys";
36static char FILSYS_ID[] = "filsys_id";
03c05291 37static char FIRST[] = "first";
38static char HOSTACCESS[] = "hostaccess";
d33e787c 39static char LABEL[] = "label";
03c05291 40static char LAST[] = "last";
d33e787c 41static char LIST[] = "list";
42static char LIST_ID[] = "list_id";
43static char LOCATION[] = "location";
44static char LOGIN[] = "login";
45static char MACH_ID[] = "mach_id";
46static char MACHINE[] = "machine";
47static char MIDDLE[] = "middle";
68dd808d 48static char MIT_ID[] = "clearid";
d33e787c 49static char MOD1[] = "modtime";
50static char MOD2[] = "modby";
51static char MOD3[] = "modwith";
52static char NAME[] = "name";
03c05291 53static char PRINTCAP[] = "printcap";
368be132 54static char QUOTA[] = "quota";
55static char QUOTA_TYPE[] = "quota_type";
4ffa124a 56static char SECURE[] = "secure";
d33e787c 57static char SERVICE[] = "service";
03c05291 58static char SERVERS[] = "servers";
d33e787c 59static char SHELL[] = "shell";
4ffa124a 60static char SIGNATURE[] = "signature";
3c1d412c 61static char SNET_ID[] = "snet_id";
62static char SUBNET[] = "subnet";
d33e787c 63static char STATUS[] = "status";
64static char TYPE[] = "type";
65static char USERS[] = "users";
66static char USERS_ID[] = "users_id";
03c05291 67static char UID[] = "unix_uid";
68static char ZEPH[] = "zephyr";
69static char ZEPH_ID[] = "xmt_id";
d33e787c 70
03c05291 71/* Table Names */
72char *table_name[] = {
73 "none", USERS, "krbmap", MACHINE, "hostalias", SUBNET, CLUSTER,
74 "mcmap", "svc", LIST, "imembers", SERVERS, "serverhosts", FILESYS,
75 "fsgroup", "nfsphys", "quota", ZEPH, HOSTACCESS, "strings", "services",
76 PRINTCAP, "palladium", "capacls", "alias", "numvalues", "tblstats",
77 "incremental"};
78int num_tables = 27;
d33e787c 79
80
81/* VALOBJS
82 * These are commonly used validation objects, defined here so that they
83 * can be shared.
84 */
85
03c05291 86/*
87 * A word about validation objects and locking: The validation object
88 * for a query should also request locks on behalf of the pre-processing
89 * and post-processing routines. This helps to ensure that tables are
5eaef520 90 * accessed and locked in the proper order and thus avoids deadlock
03c05291 91 * situations
92 */
93
d33e787c 94static struct valobj VOsort0[] = {
99e09b48 95 {V_SORT, 0},
96};
97
98static struct valobj VOwild0[] = {
99 {V_WILD, 0},
100};
101
102static struct valobj VOupwild0[] = {
103 {V_UPWILD, 0},
d33e787c 104};
105
f9f5c199 106static struct valobj VOwild0sort[] = {
107 {V_WILD, 0},
99e09b48 108 {V_SORT, 0},
109};
110
111static struct valobj VOupwild0sort[] = {
112 {V_UPWILD, 0},
113 {V_SORT, 0},
114};
115
116static struct valobj VOwild01sort0[] = {
117 {V_WILD, 0},
118 {V_WILD, 1},
119 {V_SORT, 0},
120};
121
122static struct valobj VOwild01sort01[] = {
123 {V_WILD, 0},
124 {V_WILD, 1},
125 {V_SORT, 0},
5eaef520 126 {V_SORT, 1},
99e09b48 127};
128
129static struct valobj VOwild012sort0[] = { /* get_alias */
4ffa124a 130 {V_WILD, 0},
131 {V_WILD, 1},
132 {V_WILD, 2},
133 {V_SORT, 0},
f9f5c199 134};
135
d33e787c 136
137static struct valobj VOuser0[] = {
03c05291 138 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
d33e787c 139};
140
03c05291 141
339a00a3 142static struct valobj VOuser0lock[] = {
03c05291 143 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
144 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
339a00a3 145};
146
d33e787c 147static struct valobj VOmach0[] = {
03c05291 148 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
d33e787c 149};
150
151static struct valobj VOclu0[] = {
03c05291 152 {V_ID, 0, CLUSTER_TABLE, NAME, CLU_ID, MR_CLUSTER},
d33e787c 153};
154
155static struct valobj VOlist0[] = {
03c05291 156 {V_ID, 0, LIST_TABLE, NAME, LIST_ID, MR_LIST},
d33e787c 157};
158
95127ba8 159
d33e787c 160static struct valobj VOchar0[] = {
161 {V_CHAR, 0},
162};
163
d33e787c 164
d33e787c 165
166static struct valobj VOfilsys0user1[] = {
03c05291 167 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
168 {V_ID, 0, FILESYS_TABLE, LABEL, FILSYS_ID, MR_FILESYS},
169 {V_ID, 1, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
d33e787c 170};
171
172
173/* Validations
174 * Commonly used validation records defined here so that they may
175 * be shared.
176 */
177
178static struct validate VDmach = { VOmach0, 1 };
99e09b48 179static struct validate VDwild0= { VOwild0, 1 };
180static struct validate VDupwild0= { VOupwild0, 1 };
5eaef520 181static struct validate VDwild2sort2 = { VOwild01sort01, 4 };
182static struct validate VDwild3sort1 = { VOwild012sort0, 4 };
183static struct validate VDsortf = {
0c345c78 184 VOsort0,
185 1,
186 0,
187 0,
188 0,
189 0,
190 0,
191 0,
192 followup_fix_modby,
d33e787c 193};
194
5eaef520 195static struct validate VDwildsortf = {
0c345c78 196 VOwild0sort,
197 2,
198 0,
199 0,
200 0,
201 0,
202 0,
203 0,
204 followup_fix_modby,
99e09b48 205};
03c05291 206static struct validate VDsort0= { VOsort0, 1 };
99e09b48 207
4ffa124a 208
03c05291 209static struct validate VDupwildsortf = {
0c345c78 210 VOupwild0sort,
211 2,
212 0,
213 0,
214 0,
215 0,
216 0,
217 0,
218 followup_fix_modby,
99e09b48 219};
d33e787c 220/* Query data */
221
222static char *galo_fields[] = {
223 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE,
224};
225
4ffa124a 226static char *gual_fields[] = {
227 LOGIN,
228 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
229 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
230};
0c345c78 231
d33e787c 232static char *gubl_fields[] = {
233 LOGIN,
5eaef520 234 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
4ffa124a 235 MIT_ID, CLASS, MOD1, MOD2, MOD3,
d33e787c 236};
237
5eaef520 238static struct validate gubl_validate =
d33e787c 239{
f9f5c199 240 VOwild0sort,
241 2,
d33e787c 242 0,
243 0,
244 0,
245 0,
246 access_login,
247 0,
4ffa124a 248 followup_guax,
d33e787c 249};
250
4ffa124a 251static char *guau_fields[] = {
0c345c78 252 UID,
253 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
254 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
4ffa124a 255};
0c345c78 256
4ffa124a 257static char *guan_fields[] = {
0c345c78 258 FIRST, LAST,
259 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
260 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
4ffa124a 261};
0c345c78 262
5eaef520 263static struct validate guan_validate =
60452f41 264{
265 VOwild01sort01,
266 4,
267 0,
268 0,
269 0,
270 0,
271 0,
272 0,
273 followup_guax,
274};
275
4ffa124a 276static char *guac_fields[] = {
0c345c78 277 CLASS,
278 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
279 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
4ffa124a 280};
0c345c78 281
4ffa124a 282static char *guam_fields[] = {
0c345c78 283 MIT_ID,
284 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
285 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
4ffa124a 286};
0c345c78 287
d33e787c 288static char *gubu_fields[] = {
0c345c78 289 UID,
5eaef520 290 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
0c345c78 291 MIT_ID, CLASS, MOD1, MOD2, MOD3,
d33e787c 292};
293
5eaef520 294static struct validate gubu_validate =
f9f5c199 295{
296 VOsort0,
297 1,
298 0,
299 0,
300 0,
301 0,
302 access_login,
303 0,
304 followup_fix_modby,
305};
306
d33e787c 307static char *gubn_fields[] = {
308 FIRST, LAST,
5eaef520 309 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
d33e787c 310 MIT_ID, CLASS, MOD1, MOD2, MOD3,
311};
312
99e09b48 313static struct validate gubn_validate =
314{
0c345c78 315 VOwild01sort0,
316 3,
317 0,
318 0,
319 0,
320 0,
321 0,
322 0,
323 followup_fix_modby,
99e09b48 324};
325
d33e787c 326static char *gubc_fields[] = {
327 CLASS,
5eaef520 328 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
d33e787c 329 MIT_ID, CLASS, MOD1, MOD2, MOD3,
330};
331
332static char *gubm_fields[] = {
333 MIT_ID,
5eaef520 334 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
d33e787c 335 MIT_ID, CLASS, MOD1, MOD2, MOD3,
336};
337
0b401a9a 338static char *gudf_fields[] = {
339 LOGIN,
f9a578ec 340 "dirsuppress", "dirremote"
0b401a9a 341};
342
5eaef520 343static struct validate gudf_validate =
0b401a9a 344{
345 VOuser0,
346 2,
347 0,
348 0,
349 0,
350 0,
351 access_user,
352 0,
353 0,
354};
355
4ffa124a 356static char *auac_fields[] = {
5eaef520 357 LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
4ffa124a 358 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE,
d33e787c 359};
360
4ffa124a 361static struct valobj auac_valobj[] = {
03c05291 362 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
363 {V_CHAR, 0, USERS_TABLE, LOGIN},
364 {V_CHAR, 2, USERS_TABLE, SHELL},
365 {V_CHAR, 3, USERS_TABLE, LAST},
366 {V_CHAR, 4, USERS_TABLE, FIRST},
367 {V_CHAR, 5, USERS_TABLE, MIDDLE},
368 {V_CHAR, 7, USERS_TABLE, MIT_ID},
369 {V_TYPE, 8, 0, CLASS, 0, MR_BAD_CLASS},
370 {V_ID, 9, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
d33e787c 371};
372
4ffa124a 373static struct validate auac_validate = {
374 auac_valobj,
03c05291 375 9,
4ffa124a 376 LOGIN,
03c05291 377 "login = '%s'",
4ffa124a 378 1,
379 USERS_ID,
380 0,
381 setup_ausr,
382 followup_ausr,
383};
0c345c78 384
d33e787c 385static struct validate ausr_validate = {
4ffa124a 386 auac_valobj,
03c05291 387 8,
d33e787c 388 LOGIN,
03c05291 389 "login = '%s'",
d33e787c 390 1,
391 USERS_ID,
392 0,
393 setup_ausr,
394 followup_ausr,
395};
396
397static char *rusr_fields[] = {
398 UID, LOGIN, "fs_type"
03c05291 399};
d33e787c 400
ba408d23 401static struct valobj rusr_valobj[] = {
03c05291 402 {V_LOCK, 0, IMEMBERS_TABLE, 0, LIST_ID, MR_DEADLOCK},
403 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
404 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
5eaef520 405 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
03c05291 406 {V_LOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
407 {V_LOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
5eaef520 408 {V_LOCK, 0, QUOTA_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
409 {V_RLOCK, 0, SERVERHOSTS_TABLE, 0, MACH_ID, MR_DEADLOCK},
ba408d23 410};
411
d33e787c 412static struct validate rusr_validate = {
ba408d23 413 rusr_valobj,
03c05291 414 8,
d33e787c 415 0,
416 0,
417 0,
418 0,
419 0,
420 register_user,
421 0,
422};
423
4ffa124a 424static char *uuac_fields[] = {
d33e787c 425 LOGIN,
5eaef520 426 "newlogin", UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
4ffa124a 427 MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE,
d33e787c 428};
429
4ffa124a 430static struct valobj uuac_valobj[] = {
03c05291 431 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
432 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
433 {V_RENAME, 1, USERS_TABLE, LOGIN, USERS_ID, MR_NOT_UNIQUE},
434 {V_CHAR, 3, USERS_TABLE, SHELL},
435 {V_CHAR, 4, USERS_TABLE, FIRST},
436 {V_CHAR, 5, USERS_TABLE, LAST},
437 {V_CHAR, 6, USERS_TABLE, MIDDLE},
438 {V_CHAR, 8, USERS_TABLE, MIT_ID},
439 {V_TYPE, 9, 0, CLASS, 0, MR_BAD_CLASS},
440 {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
d33e787c 441};
442
4ffa124a 443static struct validate uuac_validate = {
0c345c78 444 uuac_valobj,
03c05291 445 10,
0c345c78 446 0,
447 0,
448 0,
449 USERS_ID,
450 0,
451 setup_ausr,
452 followup_uuac,
4ffa124a 453};
0c345c78 454
d33e787c 455static struct validate uusr_validate = {
4ffa124a 456 uuac_valobj,
03c05291 457 10,
d33e787c 458 0,
459 0,
460 0,
461 USERS_ID,
462 0,
4ffa124a 463 setup_ausr,
d33e787c 464 set_modtime_by_id,
465};
466
467static char *uush_fields[] = {
468 LOGIN,
469 SHELL,
470};
471
03c05291 472static struct valobj uush_valobj[] = {
473 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
474 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
475 {V_CHAR, 1, USERS_TABLE, SHELL},
476};
477
d33e787c 478static struct validate uush_validate = {
03c05291 479 uush_valobj,
480 3,
d33e787c 481 0,
482 0,
483 0,
484 USERS_ID,
485 access_user,
486 0,
487 set_modtime_by_id,
488};
489
490static char *uust_fields[] = {
491 LOGIN,
492 STATUS,
493};
494
4ffa124a 495static char *uuss_fields[] = {
496 LOGIN,
497 SECURE,
498};
0c345c78 499
d33e787c 500static struct validate uust_validate = {
339a00a3 501 VOuser0lock,
502 2,
d33e787c 503 0,
504 0,
505 0,
506 USERS_ID,
507 0,
508 0,
509 set_modtime_by_id,
510};
511
0b401a9a 512static char *uudf_fields[] = {
513 LOGIN,
f9a578ec 514 "dirsuppress", "dirremote"
0b401a9a 515};
516
517static struct validate uudf_validate = {
518 VOuser0lock,
519 2,
520 0,
521 0,
522 0,
523 USERS_ID,
524 access_user,
525 0,
526 set_modtime_by_id,
527};
528
d33e787c 529static char *dusr_fields[] = {
530 LOGIN,
531};
532
03c05291 533struct valobj dusr_valobj[]= {
534 {V_LOCK, 0, IMEMBERS_TABLE, 0, LIST_ID, MR_DEADLOCK},
535 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
536 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
537 {V_LOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
538 {V_LOCK, 0, QUOTA_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
539 {V_LOCK, 0, HOSTACCESS_TABLE, 0, MACH_ID, MR_DEADLOCK},
540 {V_LOCK, 0, KRBMAP_TABLE, 0, "users_id", MR_DEADLOCK},
541 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
542};
543
d33e787c 544static struct validate dusr_validate = {
03c05291 545 dusr_valobj,
546 8,
d33e787c 547 0,
548 0,
549 0,
550 0,
551 0,
552 setup_dusr,
553 0,
554};
555
556static char *dubu_fields[] = {
557 UID,
558};
559
560static struct valobj dubu_valobj[] = {
03c05291 561 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
562 {V_ID, 0, USERS_TABLE, UID, USERS_ID, MR_USER}
d33e787c 563};
564
565static struct validate dubu_validate = {
566 dubu_valobj,
339a00a3 567 2,
d33e787c 568 0,
569 0,
570 0,
571 0,
572 0,
573 setup_dusr,
574 0,
575};
576
012fc215 577static char *gkum_fields[] = { LOGIN, "kerberos",
0c345c78 578 LOGIN, "kerberos" };
012fc215 579
580static char *akum_fields[] = { LOGIN, "kerberos" };
581
582static struct valobj akum_valobj[] =
583{
03c05291 584 {V_LOCK, 0, KRBMAP_TABLE, 0, "users_id", MR_DEADLOCK},
585 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
586 {V_ID, 1, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
012fc215 587};
588
589static struct validate akum_validate =
590{
0c345c78 591 akum_valobj,
03c05291 592 3,
0c345c78 593 USERS_ID,
3e8c655c 594 "users_id = %d or string_id = %d",
0c345c78 595 2,
596 USERS_ID,
597 access_user,
598 setup_akum,
135dcb80 599 0,
600};
012fc215 601
602static struct validate dkum_validate =
603{
0c345c78 604 akum_valobj,
03c05291 605 3,
0c345c78 606 USERS_ID,
3e8c655c 607 "users_id = %d and string_id = %d",
0c345c78 608 2,
609 USERS_ID,
610 access_user,
611 0,
135dcb80 612 0,
613};
012fc215 614
d33e787c 615static char *gfbl_fields[] = {
616 LOGIN,
617 LOGIN, "fullname", "nickname", "home_addr",
5eaef520 618 "home_phone", "office_addr", "office_phone", "department",
4e5ec77f 619 "affiliation", MOD1, MOD2, MOD3,
d33e787c 620};
621
622static struct validate gfbl_validate = {
623 VOuser0,
624 1,
625 0,
626 0,
627 0,
628 0,
629 access_user,
630 0,
631 followup_fix_modby,
632};
633
634static char *ufbl_fields[] = {
635 LOGIN,
636 "fullname", "nickname", "home_addr",
5eaef520 637 "home_phone", "office_addr", "office_phone", "department",
4e5ec77f 638 "affiliation",
d33e787c 639};
640
03c05291 641static struct valobj ufbl_valobj[] = {
642 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
643 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
644 {V_LEN, 1, USERS_TABLE, "fullname"},
645 {V_LEN, 2, USERS_TABLE, "nickname"},
646 {V_LEN, 3, USERS_TABLE, "home_addr"},
647 {V_LEN, 4, USERS_TABLE, "home_phone"},
648 {V_LEN, 5, USERS_TABLE, "office_addr"},
649 {V_LEN, 6, USERS_TABLE, "office_phone"},
650 {V_LEN, 7, USERS_TABLE, "department"},
651 {V_LEN, 8, USERS_TABLE, "affiliation"},
652};
653
d33e787c 654static struct validate ufbl_validate = {
03c05291 655 ufbl_valobj,
656 10,
d33e787c 657 0,
658 0,
659 0,
660 0,
661 access_user,
662 0,
663 set_finger_modtime,
664};
665
666static char *gpob_fields[] = {
667 LOGIN,
668 LOGIN, TYPE, "box", MOD1, MOD2, MOD3,
669};
670
671static struct validate gpob_validate = {
672 VOuser0,
673 1,
674 "potype",
5eaef520 675 "potype != 'NONE' and users_id = %d",
d33e787c 676 1,
677 0,
678 access_user,
679 0,
680 followup_gpob,
681};
682
683static char *gpox_fields[] = {
684 LOGIN, TYPE, "box",
685};
686
5eaef520 687struct valobj gpox_valobj[] = {
03c05291 688 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
689 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK}
690};
691
d33e787c 692static struct validate gpox_validate = {
03c05291 693 gpox_valobj,
694 2,
d33e787c 695 0,
696 0,
697 0,
698 0,
699 0,
700 0,
701 followup_gpob,
702};
703
704static char *spob_fields[] = {
705 LOGIN, TYPE, "box",
706};
707
708static struct valobj spob_valobj[] = {
03c05291 709 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
710 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
711 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
712 {V_TYPE, 1, 0, "pobox", 0, MR_TYPE},
d33e787c 713};
714
715static struct validate spob_validate = /* SET_POBOX */
716{
717 spob_valobj,
03c05291 718 4,
d33e787c 719 0,
720 0,
721 0,
722 0,
723 access_user,
724 0,
725 set_pobox,
726};
727
03c05291 728struct valobj spop_valobj[] = {
729 {V_LOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
730 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
731 {V_ID, 0, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
732};
733
d33e787c 734static struct validate spop_validate = /* SET_POBOX_POP */
735{
03c05291 736 spop_valobj,
737 3,
d33e787c 738 0,
739 0,
740 0,
741 0,
742 access_user,
743 setup_spop,
744 set_pobox_modtime,
745};
746
747static struct validate dpob_validate = /* DELETE_POBOX */
748{
03c05291 749 spop_valobj,
750 3,
d33e787c 751 0,
752 0,
753 0,
754 0,
755 access_user,
756 setup_dpob,
757 set_pobox_modtime,
758};
759
760static char *gmac_fields[] = {
761 NAME,
762 NAME, TYPE, MOD1, MOD2, MOD3,
763};
764
a66a2204 765static char *ghst_fields[] = {
ba53ba08 766 NAME, ADDRESS, "location", "network",
767 NAME, "vendor", "model", "os", "location", "contact", "use", "status", "status_change", "network", ADDRESS, ACE_TYPE, ACE_NAME, "admin_comment", "ops_comment", "created", "creator", "inuse", MOD1, MOD2, MOD3,
d33e787c 768};
769
a66a2204 770static struct valobj ghst_valobj[] = {
771 {V_UPWILD, 0},
772 {V_UPWILD, 1},
773 {V_UPWILD, 2},
774 {V_UPWILD, 3},
775 {V_SORT, 0},
776};
777
5eaef520 778static struct validate ghst_validate = {
a66a2204 779 ghst_valobj,
780 5,
781 0,
782 0,
783 0,
784 0,
785 access_host,
786 0,
787 followup_ghst,
788};
789
790static char *ahst_fields[] = {
791 NAME, "vendor", "model", "os", "location", "contact", "use", "status", SUBNET, ADDRESS, ACE_TYPE, ACE_NAME, "admin_comment", "ops_comment",
792};
793
794static struct valobj ahst_valobj[] = {
03c05291 795 {V_CHAR, 0, MACHINE_TABLE, NAME},
796 {V_CHAR, 1, MACHINE_TABLE, "vendor"},
797 {V_CHAR, 2, MACHINE_TABLE, "model"},
798 {V_CHAR, 3, MACHINE_TABLE, "os"},
799 {V_CHAR, 4, MACHINE_TABLE, "location"},
800 {V_CHAR, 5, MACHINE_TABLE, "contact"},
5eaef520 801 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
03c05291 802 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
803 {V_RLOCK, 0, SUBNET_TABLE, 0, SNET_ID, MR_DEADLOCK},
804 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
805 {V_RLOCK, 0, HOSTALIAS_TABLE, 0, MACH_ID, MR_DEADLOCK},
806 {V_ID, 8, SUBNET_TABLE, NAME, SNET_ID, MR_SUBNET},
807 {V_TYPE, 10, 0, ACE_TYPE, 0, MR_ACE},
a66a2204 808 {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
03c05291 809 {V_ID, 12, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
810 {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
d33e787c 811};
812
a66a2204 813static struct validate ahst_validate = {
814 ahst_valobj,
03c05291 815 16,
d33e787c 816 NAME,
03c05291 817 "name = UPPER('%s')",
d33e787c 818 1,
819 MACH_ID,
a66a2204 820 access_host,
821 setup_ahst,
0ec43029 822 set_uppercase_modtime,
d33e787c 823};
824
a66a2204 825static char *uhst_fields[] = {
d33e787c 826 NAME,
a66a2204 827 "newname", "vendor", "model", "os", "location", "contact", "use", "status", SUBNET, ADDRESS, ACE_TYPE, ACE_NAME, "admin_comment", "ops_comment",
d33e787c 828};
829
a66a2204 830static struct valobj uhst_valobj[] = {
03c05291 831 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
832 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
833 {V_RLOCK, 0, SUBNET_TABLE, 0, SNET_ID, MR_DEADLOCK},
834 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
835 {V_CHAR, 0, MACHINE_TABLE, "name"},
836 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
837 {V_RENAME, 1, MACHINE_TABLE, NAME, MACH_ID, MR_NOT_UNIQUE},
838 {V_CHAR, 2, MACHINE_TABLE, "vendor"},
839 {V_CHAR, 3, MACHINE_TABLE, "model"},
840 {V_CHAR, 4, MACHINE_TABLE, "os"},
841 {V_CHAR, 5, MACHINE_TABLE, "location"},
842 {V_ID, 9, SUBNET_TABLE, NAME, SNET_ID, MR_SUBNET},
843 {V_TYPE, 11, 0, ACE_TYPE, 0, MR_ACE},
a66a2204 844 {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
03c05291 845 {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
846 {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
d33e787c 847};
848
a66a2204 849static struct validate uhst_validate = {
850 uhst_valobj,
03c05291 851 16,
d33e787c 852 0,
853 0,
854 0,
855 MACH_ID,
a66a2204 856 access_host,
857 setup_ahst,
d33e787c 858 set_modtime_by_id,
859};
860
a66a2204 861static char *dhst_fields[] = {
d33e787c 862 NAME,
863};
864
a66a2204 865static struct valobj dhst_valobj[] = {
03c05291 866 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
867 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
868 {V_RLOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
869 {V_RLOCK, 0, SERVERHOSTS_TABLE, 0, MACH_ID, MR_DEADLOCK},
870 {V_RLOCK, 0, HOSTACCESS_TABLE, 0, MACH_ID, MR_DEADLOCK},
871 {V_RLOCK, 0, HOSTALIAS_TABLE, 0, MACH_ID, MR_DEADLOCK},
872 {V_LOCK, 0, MCMAP_TABLE, 0, MACH_ID, MR_DEADLOCK},
873 {V_RLOCK, 0, PRINTCAP_TABLE, 0, MACH_ID, MR_DEADLOCK},
874 {V_RLOCK, 0, PALLADIUM_TABLE, 0, MACH_ID, MR_DEADLOCK},
875 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
339a00a3 876};
877
a66a2204 878static struct validate dhst_validate = {
879 dhst_valobj,
03c05291 880 10,
d33e787c 881 0,
882 0,
883 0,
884 0,
885 0,
886 setup_dmac,
887 0,
888};
889
a66a2204 890static char *ghal_fields[] = {
5eaef520 891 ALIAS, "canonical_hostname",
892 ALIAS, "canonical_hostname"
a66a2204 893};
894
895static struct valobj ghal_valobj[] = {
896 {V_UPWILD, 0},
897 {V_UPWILD, 1},
898 {V_SORT, 0},
899};
900
901static struct validate ghal_validate = {
902 ghal_valobj,
903 3,
904 0,
905 0,
906 0,
907 0,
65adfb53 908 access_ahal,
a66a2204 909 0,
03c05291 910 0,
a66a2204 911};
912
913static struct valobj ahal_valobj[] = {
03c05291 914 {V_CHAR, 0, HOSTALIAS_TABLE, NAME},
a66a2204 915 {V_UPWILD, 0},
03c05291 916 {V_ID, 1, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
a66a2204 917};
918
919static struct validate ahal_validate = {
920 ahal_valobj,
921 3,
922 NAME,
03c05291 923 "name = '%s'",
a66a2204 924 1,
925 MACH_ID,
926 access_ahal,
927 setup_ahal,
928 0,
929};
930
931static struct valobj dhal_valobj[] = {
03c05291 932 {V_UPWILD, 0},
933 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
934 {V_ID, 1, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
a66a2204 935};
936
937static struct validate dhal_validate = {
938 dhal_valobj,
939 3,
940 NAME,
03c05291 941 "name = '%s' AND mach_id = %d",
a66a2204 942 2,
943 MACH_ID,
944 access_ahal,
945 0,
946 0,
947};
948
3c1d412c 949static char *gsnt_fields[] = {
5eaef520 950 NAME,
951 NAME, DESC, ADDRESS, "mask", "low", "high", "prefix", ACE_TYPE, ACE_NAME,
952 MOD1, MOD2, MOD3
3c1d412c 953};
954
955static struct valobj gsnt_valobj[] = {
03c05291 956 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
957 {V_RLOCK, 0, SUBNET_TABLE, 0, SNET_ID, MR_DEADLOCK},
958 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
3c1d412c 959 {V_UPWILD, 0},
960 {V_SORT, 0},
961};
962
963static struct validate gsnt_validate = {
964 gsnt_valobj,
03c05291 965 5,
3c1d412c 966 0,
967 0,
968 0,
969 0,
a70337e7 970 access_snt,
3c1d412c 971 0,
972 followup_gsnt,
973};
974
975static char *asnt_fields[] = {
5eaef520 976 NAME, DESC, ADDRESS, "mask", "low", "high", "prefix", ACE_TYPE, ACE_NAME,
3c1d412c 977};
978
979static struct valobj asnt_valobj[] = {
03c05291 980 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
981 {V_LOCK, 0, SUBNET_TABLE, 0, SNET_ID, MR_DEADLOCK},
982 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
983 {V_CHAR, 0, SUBNET_TABLE, NAME},
984 {V_LEN, 1, SUBNET_TABLE, DESC},
985 {V_LEN, 6, SUBNET_TABLE, "prefix"},
986 {V_TYPE, 7, 0, ACE_TYPE, 0, MR_ACE},
bd8c26ff 987 {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
3c1d412c 988};
989
5eaef520 990static struct validate asnt_validate =
3c1d412c 991{
5eaef520 992 asnt_valobj,
993 8,
994 NAME,
995 "name = UPPER('%s')",
996 1,
997 SNET_ID,
998 0,
999 prefetch_value,
1000 set_uppercase_modtime,
3c1d412c 1001};
1002
1003static char *usnt_fields[] = {
5eaef520 1004 NAME,
1005 "newname", DESC, ADDRESS, "mask", "low", "high", "prefix", ACE_TYPE, ACE_NAME,
3c1d412c 1006};
1007
1008static struct valobj usnt_valobj[] = {
03c05291 1009 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1010 {V_LOCK, 0, SUBNET_TABLE, 0, SNET_ID, MR_DEADLOCK},
1011 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1012 {V_ID, 0, SUBNET_TABLE, NAME, SNET_ID, MR_NO_MATCH},
1013 {V_RENAME, 1, SUBNET_TABLE, NAME, SNET_ID, MR_NOT_UNIQUE},
1014 {V_LEN, 2, SUBNET_TABLE, DESC},
1015 {V_LEN, 7, SUBNET_TABLE, "prefix"},
1016 {V_TYPE, 8, 0, ACE_TYPE, 0, MR_ACE},
bd8c26ff 1017 {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
3c1d412c 1018};
1019
5eaef520 1020static struct validate usnt_validate =
3c1d412c 1021{
5eaef520 1022 usnt_valobj,
1023 9,
1024 NAME,
1025 "snet_id = %d",
1026 1,
1027 SNET_ID,
1028 0,
1029 0,
1030 set_modtime_by_id,
3c1d412c 1031};
1032
1033static char *dsnt_fields[] = {
1034 NAME,
1035};
1036
1037static struct valobj dsnt_valobj[] = {
03c05291 1038 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1039 {V_LOCK, 0, SUBNET_TABLE, 0, SNET_ID, MR_DEADLOCK},
1040 {V_ID, 0, SUBNET_TABLE, NAME, SNET_ID, MR_SUBNET},
3c1d412c 1041};
1042
1043static struct validate dsnt_validate = {
1044 dsnt_valobj,
03c05291 1045 3,
3c1d412c 1046 0,
1047 0,
1048 0,
1049 0,
1050 0,
1051 setup_dsnt,
1052 0,
1053};
1054
d33e787c 1055static char *gclu_fields[] = {
1056 NAME,
5eaef520 1057 NAME, DESC, LOCATION, MOD1, MOD2, MOD3,
d33e787c 1058};
1059
1060static char *aclu_fields[] = {
1061 NAME, DESC, LOCATION,
1062};
0c345c78 1063
339a00a3 1064static struct valobj aclu_valobj[] = {
03c05291 1065 {V_LOCK, 0, CLUSTER_TABLE, 0, CLU_ID, MR_DEADLOCK},
1066 {V_CHAR, 0, CLUSTER_TABLE, NAME},
1067 {V_LEN, 1, CLUSTER_TABLE, DESC},
1068 {V_LEN, 2, CLUSTER_TABLE, LOCATION},
339a00a3 1069};
1070
5eaef520 1071static struct validate aclu_validate =
d33e787c 1072{
339a00a3 1073 aclu_valobj,
03c05291 1074 4,
d33e787c 1075 NAME,
03c05291 1076 "name = '%s'",
d33e787c 1077 1,
68dd808d 1078 CLU_ID,
d33e787c 1079 0,
45bf7573 1080 prefetch_value,
d33e787c 1081 set_modtime,
1082};
1083
1084static char *uclu_fields[] = {
1085 NAME,
1086 "newname", DESC, LOCATION,
1087};
1088
1089static struct valobj uclu_valobj[] = {
03c05291 1090 {V_LOCK, 0, CLUSTER_TABLE, 0, CLU_ID, MR_DEADLOCK},
1091 {V_ID, 0, CLUSTER_TABLE, NAME, CLU_ID, MR_CLUSTER},
1092 {V_RENAME, 1, CLUSTER_TABLE, NAME, CLU_ID, MR_NOT_UNIQUE},
1093 {V_LEN, 2, CLUSTER_TABLE, DESC},
1094 {V_LEN, 3, CLUSTER_TABLE, LOCATION},
d33e787c 1095};
1096
1097static struct validate uclu_validate = {
1098 uclu_valobj,
03c05291 1099 5,
d33e787c 1100 0,
1101 0,
1102 0,
1103 CLU_ID,
1104 0,
1105 0,
1106 set_modtime_by_id,
1107};
1108
1109static char *dclu_fields[] = {
1110 NAME,
1111};
1112
1113static struct validate dclu_validate = {
0c345c78 1114 VOclu0,
1115 1,
1116 0,
1117 0,
1118 0,
1119 0,
1120 0,
1121 setup_dclu,
1122 0,
d33e787c 1123};
1124
1125static char *gmcm_fields[] = {
1126 MACHINE, CLUSTER,
1127 MACHINE, CLUSTER,
1128};
1129
99e09b48 1130static struct valobj gmcm_valobj[] =
1131{
1132 {V_UPWILD, 0},
1133 {V_WILD, 1},
1134 {V_SORT, 0},
1135 {V_SORT, 1},
1136};
1137
1138static struct validate gmcm_validate = { gmcm_valobj, 4 };
1139
d33e787c 1140static struct valobj amtc_valobj[] = /* ADD_MACHINE_TO_CLUSTER */
1141{ /* DELETE_MACHINE_FROM_CLUSTER */
03c05291 1142 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
1143 {V_ID, 1, CLUSTER_TABLE, NAME, CLU_ID, MR_CLUSTER},
d33e787c 1144};
1145
1146static struct validate amtc_validate = /* for amtc and dmfc */
1147{
1148 amtc_valobj,
1149 2,
1150 MACH_ID,
3e8c655c 1151 "mach_id = %d and clu_id = %d",
d33e787c 1152 2,
1153 0,
1154 0,
1155 0,
1156 set_mach_modtime_by_id,
1157};
1158
1159static char *gcld_fields[] = {
88343c5e 1160 CLUSTER, "serv_label",
1161 CLUSTER, "serv_label", "serv_cluster",
1162};
1163
1164static char *acld_fields[] = {
d33e787c 1165 CLUSTER, "serv_label", "serv_cluster",
1166};
1167
1168static struct valobj acld_valobj[] =
1169{
03c05291 1170 {V_ID, 0, CLUSTER_TABLE, NAME, CLU_ID, MR_CLUSTER},
1171 {V_CHAR, 1, SVC_TABLE, "serv_label"},
1172 {V_CHAR, 2, SVC_TABLE, "serv_cluster"}
d33e787c 1173};
1174
5eaef520 1175static struct validate acld_validate =
1176{
d33e787c 1177 acld_valobj,
99e09b48 1178 3,
1179 CLU_ID,
03c05291 1180 "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
99e09b48 1181 3,
1182 0,
1183 0,
1184 0,
1185 set_cluster_modtime_by_id,
1186};
1187
1188static struct valobj dcld_valobj[] =
1189{
03c05291 1190 {V_ID, 0, CLUSTER_TABLE, NAME, CLU_ID, MR_CLUSTER},
99e09b48 1191};
1192
5eaef520 1193static struct validate dcld_validate =
1194{
99e09b48 1195 dcld_valobj,
03c05291 1196 1,
d33e787c 1197 CLU_ID,
3e8c655c 1198 "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
d33e787c 1199 3,
1200 0,
1201 0,
1202 0,
1203 set_cluster_modtime_by_id,
1204};
1205
03c05291 1206static char *glin_fields[] = {
1207 NAME,
1208 NAME, "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1209 ACE_TYPE, ACE_NAME, DESC, MOD1, MOD2, MOD3,
99e09b48 1210};
1211
03c05291 1212static struct validate glin_validate = {
0c345c78 1213 0,
0c345c78 1214 0,
1215 0,
1216 0,
1217 0,
1218 0,
03c05291 1219 access_vis_list_by_name,
0c345c78 1220 0,
03c05291 1221 get_list_info,
d33e787c 1222};
1223
03c05291 1224static char *alis_fields[] = {
1225 NAME, "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1226 ACE_TYPE, ACE_NAME, DESC,
d33e787c 1227};
1228
03c05291 1229static struct valobj alis_valobj[] = {
1230 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1231 {V_LOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1232 {V_CHAR, 0, LIST_TABLE, NAME},
1233 {V_TYPE, 7, 0, ACE_TYPE, 0, MR_ACE},
1234 {V_TYPEDATA, 8, 0, 0, LIST_ID, MR_ACE},
1235 {V_LEN, 9, LIST_TABLE, DESC},
d33e787c 1236};
1237
03c05291 1238static struct validate alis_validate = {
1239 alis_valobj,
1240 6,
d33e787c 1241 NAME,
03c05291 1242 "name = '%s'",
d33e787c 1243 1,
03c05291 1244 LIST_ID,
d33e787c 1245 0,
03c05291 1246 setup_alis,
1247 set_modtime,
d33e787c 1248};
1249
03c05291 1250static char *ulis_fields[] = {
d33e787c 1251 NAME,
03c05291 1252 "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1253 ACE_TYPE, ACE_NAME, DESC,
d33e787c 1254};
1255
03c05291 1256static struct valobj ulis_valobj[] = {
1257 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1258 {V_LOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1259 {V_ID, 0, LIST_TABLE, NAME, LIST_ID, MR_LIST},
1260 {V_RENAME, 1, LIST_TABLE, NAME, LIST_ID, MR_NOT_UNIQUE},
1261 {V_TYPEDATA, 9, 0, 0, LIST_ID, MR_ACE},
1262 {V_CHAR, 1, LIST_TABLE, NAME},
1263 {V_LEN, 10, LIST_TABLE, DESC},
d33e787c 1264};
1265
03c05291 1266static struct validate ulis_validate = {
1267 ulis_valobj,
1268 7,
d33e787c 1269 NAME,
03c05291 1270 "list_id = %d",
d33e787c 1271 1,
03c05291 1272 LIST_ID,
1273 access_list,
1274 setup_alis,
1275 set_modtime_by_id,
d33e787c 1276};
1277
03c05291 1278static char *dlis_fields[] = {
1279 NAME,
d33e787c 1280};
1281
5eaef520 1282static struct valobj dlis_valobj[] = {
03c05291 1283 {V_RLOCK, 0, CAPACLS_TABLE, 0, LIST_ID, MR_DEADLOCK},
1284 {V_RLOCK, 0, IMEMBERS_TABLE, 0, LIST_ID, MR_DEADLOCK},
1285 {V_RLOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1286 {V_LOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1287 {V_RLOCK, 0, QUOTA_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
5eaef520 1288 {V_RLOCK, 0, ZEPHYR_TABLE, 0, ZEPH_ID, MR_DEADLOCK},
03c05291 1289 {V_RLOCK, 0, HOSTACCESS_TABLE, 0, MACH_ID, MR_DEADLOCK},
1290 {V_ID, 0, LIST_TABLE, NAME, LIST_ID, MR_LIST}
1291};
1292
1293static struct validate dlis_validate = {
1294 dlis_valobj,
1295 8,
d33e787c 1296 NAME,
03c05291 1297 "list_id = %d",
d33e787c 1298 1,
1299 0,
03c05291 1300 access_list,
1301 setup_dlis,
d33e787c 1302 0,
1303};
1304
03c05291 1305static char *amtl_fields[] = {
1306 "list_name", "member_type", "member_name",
d33e787c 1307};
1308
03c05291 1309static struct valobj amtl_valobj[] = {
1310 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1311 {V_LOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1312 {V_ID, 0, LIST_TABLE, NAME, LIST_ID, MR_LIST},
1313 {V_TYPE, 1, 0, "member", 0, MR_TYPE},
1314 {V_TYPEDATA, 2, 0, 0, 0, MR_NO_MATCH},
99e09b48 1315};
1316
03c05291 1317static struct validate amtl_validate =
1318{
1319 amtl_valobj,
1320 5,
d33e787c 1321 0,
1322 0,
1323 0,
1324 0,
03c05291 1325 access_list,
d33e787c 1326 0,
03c05291 1327 add_member_to_list,
d33e787c 1328};
1329
03c05291 1330static struct validate dmfl_validate =
1331{
1332 amtl_valobj,
0c345c78 1333 5,
1334 0,
1335 0,
1336 0,
1337 0,
03c05291 1338 access_list,
0c345c78 1339 0,
03c05291 1340 delete_member_from_list,
d33e787c 1341};
1342
03c05291 1343static char *gaus_fields[] = {
1344 ACE_TYPE, ACE_NAME,
1345 "use_type", "use_name",
d33e787c 1346};
1347
03c05291 1348static struct valobj gaus_valobj[] = {
1349 {V_RLOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1350 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1351 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1352 {V_RLOCK, 0, ZEPHYR_TABLE, 0, ZEPH_ID, MR_DEADLOCK},
1353 {V_RLOCK, 0, HOSTACCESS_TABLE, 0, MACH_ID, MR_DEADLOCK},
1354 {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
1355 {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
d33e787c 1356};
1357
03c05291 1358static struct validate gaus_validate = {
1359 gaus_valobj,
1360 7,
d33e787c 1361 0,
d33e787c 1362 0,
d33e787c 1363 0,
d33e787c 1364 0,
03c05291 1365 access_member,
d33e787c 1366 0,
03c05291 1367 get_ace_use,
d33e787c 1368};
1369
03c05291 1370static char *qgli_fields[] = {
1371 "active", "publicflg", "hidden", "maillist", "grouplist",
1372 "list",
3e8c655c 1373};
d33e787c 1374
03c05291 1375static struct valobj qgli_valobj[] = {
1376 {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
1377 {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1378 {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1379 {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
1380 {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
d33e787c 1381};
1382
03c05291 1383static struct validate qgli_validate = {
1384 qgli_valobj,
1385 5,
647daf33 1386 0,
d33e787c 1387 0,
1388 0,
87167924 1389 0,
03c05291 1390 access_qgli,
d33e787c 1391 0,
03c05291 1392 qualified_get_lists,
d33e787c 1393};
1394
03c05291 1395static char *gmol_fields[] = {
1396 "list_name",
1397 "member_type", "member_name",
d33e787c 1398};
1399
5eaef520 1400static struct valobj gmol_valobj[] = {
03c05291 1401 {V_LOCK, 0, IMEMBERS_TABLE, 0, LIST_ID, MR_DEADLOCK},
1402 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1403 {V_ID, 0, LIST_TABLE, NAME, LIST_ID, MR_LIST},
1404
1405};
1406static struct validate gmol_validate = {
5eaef520 1407 gmol_valobj,
339a00a3 1408 3,
d33e787c 1409 0,
d33e787c 1410 0,
03c05291 1411 0,
1412 0,
1413 access_visible_list,
1414 0,
1415 get_members_of_list,
d33e787c 1416};
1417
03c05291 1418static struct validate geml_validate = {
1419 gmol_valobj,
1420 3,
d33e787c 1421 0,
1422 0,
1423 0,
1424 0,
03c05291 1425 access_visible_list,
d33e787c 1426 0,
03c05291 1427 get_end_members_of_list,
d33e787c 1428};
1429
03c05291 1430static char *glom_fields[] = {
1431 "member_type", "member_name",
1432 "list_name", "active", "publicflg", "hidden", "maillist", "grouplist",
d33e787c 1433};
1434
03c05291 1435static struct valobj glom_valobj[] = {
5eaef520 1436 {V_LOCK, 0, IMEMBERS_TABLE, 0, LIST_ID, MR_DEADLOCK},
1437 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1438 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1439 {V_TYPE, 0, 0, "rmember", 0, MR_TYPE},
1440 {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
1441 {V_SORT, 0},
d33e787c 1442};
1443
03c05291 1444static struct validate glom_validate = {
1445 glom_valobj,
1446 6,
d33e787c 1447 0,
1448 0,
03c05291 1449 0,
1450 0,
1451 access_member,
1452 0,
1453 get_lists_of_member,
d33e787c 1454};
1455
03c05291 1456static char *cmol_fields[] = {
1457 "list_name",
1458 "count",
d33e787c 1459};
1460
03c05291 1461static struct validate cmol_validate = {
1462 VOlist0,
d33e787c 1463 1,
1464 0,
1465 0,
1466 0,
1467 0,
03c05291 1468 access_visible_list,
d33e787c 1469 0,
03c05291 1470 count_members_of_list,
d33e787c 1471};
1472
03c05291 1473static char *gsin_fields[] = {
1474 SERVICE,
1475 SERVICE, "update_int", "target_file", "script", "dfgen", "dfcheck",
1476 TYPE, "enable", "inprogress", "harderror", "errmsg",
1477 ACE_TYPE, ACE_NAME, MOD1, MOD2, MOD3,
88343c5e 1478};
1479
03c05291 1480static struct valobj gsin_valobj[] =
99e09b48 1481{
03c05291 1482 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1483 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1484 {V_UPWILD, 0 },
99e09b48 1485};
1486
5eaef520 1487static struct validate gsin_validate =
03c05291 1488{
1489 gsin_valobj,
1490 3,
99e09b48 1491 0,
1492 0,
1493 0,
1494 0,
03c05291 1495 access_service,
99e09b48 1496 0,
03c05291 1497 followup_glin,
99e09b48 1498};
1499
03c05291 1500static char *qgsv_fields[] = {
1501 "enable", "inprogress", "harderror",
1502 "service",
4ffa124a 1503};
0c345c78 1504
03c05291 1505static struct valobj qgsv_valobj[] = {
1506 {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
1507 {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1508 {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
d33e787c 1509};
1510
03c05291 1511static struct validate qgsv_validate = {
1512 qgsv_valobj,
1513 3,
d33e787c 1514 0,
1515 0,
1516 0,
1517 0,
d33e787c 1518 0,
03c05291 1519 0,
1520 qualified_get_server,
d33e787c 1521};
1522
03c05291 1523static char *asin_fields[] = {
1524 SERVICE, "update_int", "target_file", "script", TYPE, "enable",
1525 ACE_TYPE, ACE_NAME,
d33e787c 1526};
1527
03c05291 1528static struct valobj asin_valobj[] = {
1529 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1530 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1531 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
cf03c11b 1532 {V_CHAR, 0, SERVERS_TABLE, NAME},
03c05291 1533 {V_LEN, 2, SERVERS_TABLE, "target_file"},
1534 {V_LEN, 3, SERVERS_TABLE, "script"},
1535 {V_TYPE, 4, 0, "service", 0, MR_TYPE},
1536 {V_TYPE, 6, 0, ACE_TYPE, 0, MR_ACE},
1537 {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
d33e787c 1538};
1539
03c05291 1540static struct validate asin_validate = /* for asin, usin */
1541{
1542 asin_valobj,
1543 9,
1544 NAME,
1545 "name = UPPER('%s')",
d33e787c 1546 1,
d33e787c 1547 0,
03c05291 1548 0,
1549 0,
1550 set_uppercase_modtime,
d33e787c 1551};
1552
03c05291 1553static struct validate rsve_validate = {
1554 asin_valobj,
1555 3,
1556 NAME,
1557 "name = UPPER('%s')",
d33e787c 1558 1,
d33e787c 1559 0,
03c05291 1560 access_service,
1561 0,
1562 set_uppercase_modtime,
d33e787c 1563};
1564
03c05291 1565static char *ssif_fields[] = {
1566 SERVICE, "dfgen", "dfcheck", "inprogress", "harderror", "errmsg",
d33e787c 1567};
1568
03c05291 1569static struct valobj ssif_valobj[] = {
1570 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1571 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1572 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1573 {V_LEN, 5, SERVERS_TABLE, "errmsg"},
d33e787c 1574};
1575
03c05291 1576static struct validate ssif_validate = {
1577 ssif_valobj,
1578 4,
1579 NAME,
1580 "name = UPPER('%s')",
d33e787c 1581 1,
1582 0,
1583 0,
03c05291 1584 0,
d33e787c 1585 0,
1586};
1587
03c05291 1588static char *dsin_fields[] = {
1589 SERVICE,
95127ba8 1590};
1591
03c05291 1592static struct validate dsin_validate = {
1593 asin_valobj,
0c345c78 1594 3,
03c05291 1595 NAME,
1596 "name = UPPER('%s')",
1597 1,
0c345c78 1598 0,
1599 0,
03c05291 1600 setup_dsin,
0c345c78 1601 0,
95127ba8 1602};
1603
03c05291 1604static char *gshi_fields[] = {
1605 SERVICE, MACHINE,
1606 SERVICE, MACHINE, "enable", "override", "success", "inprogress",
1607 "hosterror", "hosterrormsg", "ltt", "lts", "value1", "value2",
5eaef520 1608 "value3", MOD1, MOD2, MOD3,
95127ba8 1609};
1610
03c05291 1611static struct valobj gshi_valobj[] = {
1612 { V_UPWILD, 0 },
1613 { V_UPWILD, 1 },
1614};
1615
1616static struct validate gshi_validate = {
1617 gshi_valobj,
0c345c78 1618 2,
1619 0,
1620 0,
1621 0,
1622 0,
03c05291 1623 access_service,
1624 0,
1625 followup_fix_modby,
95127ba8 1626};
1627
03c05291 1628static char *qgsh_fields[] = {
1629 "service", "enable", "override", "success", "inprogress", "hosterror",
1630 "service", MACHINE,
d33e787c 1631};
1632
03c05291 1633static struct valobj qgsh_valobj[] = {
1634 {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
1635 {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
1636 {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
1637 {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
1638 {V_TYPE, 5, 0, "boolean", 0, MR_TYPE},
99e09b48 1639};
1640
03c05291 1641static struct validate qgsh_validate = {
1642 qgsh_valobj,
1643 5,
d33e787c 1644 0,
1645 0,
1646 0,
1647 0,
1648 0,
1649 0,
03c05291 1650 qualified_get_serverhost,
d33e787c 1651};
1652
03c05291 1653static char *ashi_fields[] = {
1654 SERVICE, MACHINE, "enable", "value1", "value2", "value3",
d33e787c 1655};
1656
03c05291 1657static struct valobj ashi_valobj[] = {
1658 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1659 {V_NAME, 0, SERVERS_TABLE, NAME, 0, MR_SERVICE},
5eaef520 1660 {V_LOCK, 0, SERVERHOSTS_TABLE, 0, MACH_ID, MR_DEADLOCK},
03c05291 1661 {V_ID, 1, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
85330553 1662 {V_CHAR, 0, SERVERHOSTS_TABLE, SERVICE},
03c05291 1663 {V_LEN, 5, SERVERHOSTS_TABLE, "value3"},
45bf7573 1664};
1665
03c05291 1666static struct validate ashi_validate = /* ashi & ushi */
1667{
1668 ashi_valobj,
1669 6,
1670 SERVICE,
1671 "service = UPPER('%s') AND mach_id = %d",
d33e787c 1672 2,
d33e787c 1673 0,
03c05291 1674 access_service,
d33e787c 1675 0,
03c05291 1676 set_serverhost_modtime,
99e09b48 1677};
1678
5eaef520 1679static struct validate rshe_validate =
03c05291 1680{
1681 ashi_valobj,
1682 4,
1683 SERVICE,
1684 "service = UPPER('%s') AND mach_id = %d",
1685 2,
1686 0,
1687 access_service,
1688 0,
1689 set_serverhost_modtime,
d33e787c 1690};
1691
5eaef520 1692static struct validate ssho_validate =
03c05291 1693{
1694 ashi_valobj,
1695 4,
1696 SERVICE,
1697 "service = UPPER('%s') AND mach_id = %d",
d33e787c 1698 2,
d33e787c 1699 0,
03c05291 1700 access_service,
1701 0,
1702 trigger_dcm,
d33e787c 1703};
1704
03c05291 1705static char *sshi_fields[] = {
1706 "service", MACHINE, "override", "success", "inprogress",
1707 "hosterror", "errmsg", "ltt", "lts",
368be132 1708};
1709
03c05291 1710static struct valobj sshi_valobj[] = {
1711 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1712 {V_NAME, 0, SERVERS_TABLE, NAME, 0, MR_SERVICE},
1713 {V_ID, 1, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE}, /** Was this ok to add? */
1714 {V_LEN, 5, SERVERS_TABLE, "errmsg"},
368be132 1715};
1716
5eaef520 1717static struct validate sshi_validate =
03c05291 1718{
1719 sshi_valobj,
135dcb80 1720 4,
368be132 1721 0,
1722 0,
1723 0,
1724 0,
1725 0,
1726 0,
03c05291 1727 0,
368be132 1728};
1729
03c05291 1730static char *dshi_fields[] = {
1731 SERVICE, MACHINE,
368be132 1732};
1733
5eaef520 1734static struct validate dshi_validate =
03c05291 1735{
1736 ashi_valobj,
1737 4,
1738 SERVICE,
1739 "service = UPPER('%s') AND mach_id = %d",
135dcb80 1740 2,
368be132 1741 0,
03c05291 1742 access_service,
1743 setup_dshi,
368be132 1744 0,
03c05291 1745};
1746
1747static char *gslo_fields[] = {
1748 "server",
1749 "server", MACHINE,
1750};
1751
1752static char *gfsl_fields[] = {
1753 LABEL,
1754 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1755 "create", "lockertype", MOD1, MOD2, MOD3,
1756};
1757
1758static char *gfsm_fields[] = {
1759 MACHINE,
1760 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1761 "create", "lockertype", MOD1, MOD2, MOD3,
1762};
1763
1764static struct valobj gfsm_valobj[] = {
1765 {V_RLOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1766 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
1767};
1768
1769static struct validate gfsm_validate = {
1770 gfsm_valobj,
1771 2,
368be132 1772 0,
1773 0,
368be132 1774 0,
03c05291 1775 0,
1776 0,
1777 0,
1778 followup_fix_modby,
368be132 1779};
1780
03c05291 1781static char *gfsn_fields[] = {
1782 MACHINE, "parition",
1783 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1784 "create", "lockertype", MOD1, MOD2, MOD3,
368be132 1785};
1786
03c05291 1787static struct valobj gfsn_valobj[] =
1788{
1789 {V_RLOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1790 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
1791 {V_WILD, 1},
368be132 1792};
1793
03c05291 1794static struct validate gfsn_validate = {
1795 gfsn_valobj,
368be132 1796 3,
1797 0,
1798 0,
368be132 1799 0,
1800 0,
368be132 1801 0,
1802 0,
03c05291 1803 followup_fix_modby,
368be132 1804};
1805
03c05291 1806static char *gfsp_fields[] = {
1807 "path",
1808 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1809 "create", "lockertype", MOD1, MOD2, MOD3,
d33e787c 1810};
1811
03c05291 1812static char *gfsg_fields[] = {
1813 LIST,
1814 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1815 "create", "lockertype", MOD1, MOD2, MOD3,
1816};
1817
1818static struct valobj gfsg_valobj[] = {
1819 {V_RLOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1820 {V_ID, 0, LIST_TABLE, NAME, LIST_ID, MR_LIST}
1821};
1822
1823static struct validate gfsg_validate = {
1824 gfsg_valobj,
99e09b48 1825 2,
d33e787c 1826 0,
1827 0,
1828 0,
1829 0,
03c05291 1830 access_list,
d33e787c 1831 0,
03c05291 1832 followup_fix_modby,
d33e787c 1833};
1834
03c05291 1835static char *afil_fields[] = {
1836 LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
1837 "create", "lockertype",
d33e787c 1838};
1839
03c05291 1840static struct valobj afil_valobj[] = {
1841 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1842 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1843 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1844 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1845 {V_CHAR, 0, FILESYS_TABLE, LABEL},
1846 {V_TYPE, 1, 0, "filesys", 0, MR_FSTYPE},
1847 {V_ID, 2, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
1848 {V_CHAR, 3, FILESYS_TABLE, NAME},
1849 {V_LEN, 4, FILESYS_TABLE, "mount"},
1850 {V_LEN, 6, FILESYS_TABLE, COMMENTS},
1851 {V_ID, 7, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
1852 {V_ID, 8, LIST_TABLE, NAME, LIST_ID, MR_LIST},
1853 {V_TYPE, 10, 0, "lockertype", 0, MR_TYPE},
99e09b48 1854};
1855
03c05291 1856static struct validate afil_validate = {
1857 afil_valobj,
1858 13,
1859 LABEL,
1860 "label = '%s'",
1861 1,
1862 FILSYS_ID,
1863 0,
1864 setup_afil,
1865 set_filesys_modtime,
1866};
99e09b48 1867
03c05291 1868static char *ufil_fields[] = {
1869 LABEL, "newlabel", TYPE, MACHINE, NAME, "mount", "access", COMMENTS,
1870 "owner", "owners", "create", "lockertype",
d33e787c 1871};
1872
03c05291 1873static struct valobj ufil_valobj[] = {
1874 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1875 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
1876 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1877 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
1878 {V_LOCK, 0, QUOTA_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1879 {V_ID, 0, FILESYS_TABLE, LABEL, FILSYS_ID, MR_FILESYS},
1880 {V_RENAME, 1, FILESYS_TABLE, LABEL, FILSYS_ID, MR_NOT_UNIQUE},
1881 {V_TYPE, 2, 0, "filesys", 0, MR_FSTYPE},
1882 {V_ID, 3, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
1883 {V_CHAR, 4, FILESYS_TABLE, NAME},
1884 {V_LEN, 5, FILESYS_TABLE, "mount"},
1885 {V_LEN, 7, FILESYS_TABLE, COMMENTS},
1886 {V_ID, 8, USERS_TABLE, LOGIN, USERS_ID, MR_USER},
1887 {V_ID, 9, LIST_TABLE, NAME, LIST_ID, MR_LIST},
1888 {V_TYPE, 11, 0, "lockertype", 0, MR_TYPE},
d33e787c 1889};
1890
03c05291 1891static struct validate ufil_validate = {
1892 ufil_valobj,
1893 15,
1894 LABEL,
1895 "filsys_id = %d",
1896 1,
368be132 1897 FILSYS_ID,
d33e787c 1898 0,
03c05291 1899 setup_ufil,
1900 set_filesys_modtime,
d33e787c 1901};
1902
03c05291 1903static char *dfil_fields[] = {
1904 LABEL,
1905};
1906
1907static struct valobj dfil_valobj[] = {
1908 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1909 {V_LOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
1910 {V_LOCK, 0, QUOTA_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1911 {V_LOCK, 0, FSGROUP_TABLE, 0, "filsys_id", MR_DEADLOCK},
1912 {V_ID, 0, FILESYS_TABLE, LABEL, FILSYS_ID, MR_FILESYS},
1913};
1914
1915static struct validate dfil_validate = {
1916 dfil_valobj,
1917 5,
1918 "label",
1919 "filsys_id = %d",
1920 1,
d33e787c 1921 0,
1922 0,
03c05291 1923 setup_dfil,
1924 0,
d33e787c 1925};
1926
03c05291 1927static char *gfgm_fields[] = {
1928 "fsgroup", FILESYS, "sortkey"
5eaef520 1929};
03c05291 1930
1931static struct valobj gfgm_valobj[] = {
1932 {V_ID, 0, FILESYS_TABLE, LABEL, FILSYS_ID, MR_FILESYS},
1933 {V_SORT, 1},
1934 {V_SORT, 0},
d33e787c 1935};
1936
03c05291 1937static struct validate gfgm_validate = {
1938 gfgm_valobj,
1939 3,
d33e787c 1940 0,
1941 0,
1942 0,
1943 0,
1944 0,
1945 0,
d33e787c 1946 0,
d33e787c 1947};
1948
03c05291 1949static struct valobj aftg_valobj[] = {
1950 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
1951 {V_LOCK, 0, FSGROUP_TABLE, 0, "filsys_id", MR_DEADLOCK},
1952 {V_ID, 0, FILESYS_TABLE, LABEL, FILSYS_ID, MR_FILESYS},
1953 {V_ID, 1, FILESYS_TABLE, LABEL, FILSYS_ID, MR_FILESYS},
d33e787c 1954};
1955
03c05291 1956static struct validate aftg_validate = {
1957 aftg_valobj,
339a00a3 1958 4,
03c05291 1959 "group_id",
1960 "group_id = %d and filsys_id = %d",
1961 2,
1962 0,
1963 0,
1964 0,
d33e787c 1965 0,
d33e787c 1966};
1967
03c05291 1968static char *ganf_fields[] = {
1969 MACHINE, DIR, DEVICE, STATUS, "allocated", "size", MOD1, MOD2, MOD3,
d33e787c 1970};
1971
03c05291 1972static char *gnfp_fields[] = {
1973 MACHINE, DIR,
1974 MACHINE, DIR, DEVICE, STATUS, "allocated", "size", MOD1, MOD2, MOD3,
d33e787c 1975};
1976
03c05291 1977static struct valobj gnfp_valobj[] = {
1978 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
1979 {V_RLOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
1980 {V_WILD, 1},
d33e787c 1981};
1982
03c05291 1983static struct validate gnfp_validate = {
1984 gnfp_valobj,
1985 3,
1986 0,
1987 0,
1988 0,
1989 0,
1990 0,
1991 0,
1992 followup_fix_modby,
d33e787c 1993};
1994
03c05291 1995static struct valobj anfp_valobj[] = {
1996 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
1997 {V_LOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
1998 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
1999 {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
2000 {V_LEN, 2, NFSPHYS_TABLE, "device"},
2001};
2002
2003static struct validate anfp_validate = {
2004 anfp_valobj,
2005 5,
2006 DIR,
2007 "mach_id = %d and dir = '%s'",
2008 2,
2009 "nfsphys_id",
d33e787c 2010 0,
03c05291 2011 prefetch_value,
2012 set_nfsphys_modtime,
2013};
2014
2015static struct validate unfp_validate = {
2016 anfp_valobj,
2017 5,
2018 DIR,
2019 "mach_id = %d and dir = '%s'",
2020 2,
2021 "nfsphys_id",
d33e787c 2022 0,
03c05291 2023 0,
2024 set_nfsphys_modtime,
d33e787c 2025};
2026
03c05291 2027static char *ajnf_fields[] = {
2028 MACHINE, DIR, "adjustment",
d33e787c 2029};
2030
03c05291 2031static char *dnfp_fields[] = {
2032 MACHINE, DIR,
d33e787c 2033};
2034
03c05291 2035static struct valobj dnfp_valobj[] = {
2036 {V_RLOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
2037 {V_LOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
2038 {V_LOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
2039 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
2040
2041};
2042
2043static struct validate dnfp_validate = {
2044 dnfp_valobj,
339a00a3 2045 4,
03c05291 2046 DIR,
2047 "mach_id = %d and dir = '%s'",
2048 2,
2049 "nfsphys_id",
66f4a35b 2050 0,
03c05291 2051 setup_dnfp,
2052 set_nfsphys_modtime,
2053};
2054
2055static char *gqot_fields[] = {
2056 FILESYS, TYPE, NAME,
2057 FILESYS, TYPE, NAME, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
66f4a35b 2058};
2059
03c05291 2060static struct valobj gqot_valobj[] = {
2061 {V_RLOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
2062 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
2063 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
2064 {V_RLOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
2065 {V_RLOCK, 0, QUOTA_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
2066 {V_WILD, 0},
2067 {V_TYPE, 1, 0, QUOTA_TYPE, 0, MR_TYPE},
2068 {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2069 {V_SORT, 0, 0, 0, 0, 0},
2070};
2071
2072static struct validate gqot_validate = {
2073 gqot_valobj,
2074 9,
66f4a35b 2075 0,
2076 0,
2077 0,
d33e787c 2078 0,
d33e787c 2079 0,
03c05291 2080 0,
2081 followup_gqot,
d33e787c 2082};
2083
03c05291 2084static char *gqbf_fields[] = {
2085 FILESYS,
2086 FILESYS, TYPE, NAME, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
d33e787c 2087};
2088
03c05291 2089static struct validate gqbf_validate = {
2090 VOwild0sort,
0c345c78 2091 2,
2092 0,
2093 0,
2094 0,
2095 0,
03c05291 2096 access_filesys,
0c345c78 2097 0,
03c05291 2098 followup_gqot,
d33e787c 2099};
2100
03c05291 2101static char *aqot_fields[] = {
2102 FILESYS, TYPE, NAME, QUOTA,
d33e787c 2103};
2104
03c05291 2105static struct valobj aqot_valobj[] = {
2106 {V_LOCK, 0, FILESYS_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
2107 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
2108 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
2109 {V_LOCK, 0, NFSPHYS_TABLE, 0, "nfsphys_id", MR_DEADLOCK},
2110 {V_LOCK, 0, QUOTA_TABLE, 0, FILSYS_ID, MR_DEADLOCK},
2111 {V_ID, 0, FILESYS_TABLE, LABEL, FILSYS_ID, MR_FILESYS},
2112 {V_TYPE, 1, 0, QUOTA_TYPE, 0, MR_TYPE},
2113 {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
d33e787c 2114};
2115
03c05291 2116static struct validate aqot_validate = {
2117 aqot_valobj,
2118 8,
2119 FILSYS_ID,
2120 "filsys_id = %d and type = '%s' and entity_id = %d",
2121 3,
0c345c78 2122 0,
2123 0,
03c05291 2124 prefetch_filesys,
2125 followup_aqot,
2126};
2127
2128static struct validate uqot_validate = {
2129 aqot_valobj,
2130 8,
2131 FILSYS_ID,
2132 "filsys_id = %d AND type = '%s' AND entity_id = %d",
2133 3,
2134 0,
0c345c78 2135 0,
03c05291 2136 setup_dqot,
2137 followup_aqot,
2138};
2139
2140static struct validate dqot_validate = {
2141 aqot_valobj,
2142 8,
2143 FILSYS_ID,
2144 "filsys_id = %d AND type = '%s' AND entity_id = %d",
2145 3,
0c345c78 2146 0,
0c345c78 2147 0,
03c05291 2148 setup_dqot,
2149 followup_dqot,
d33e787c 2150};
2151
03c05291 2152static char *gnfq_fields[] = {
2153 FILESYS, LOGIN,
2154 FILESYS, LOGIN, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
d33e787c 2155};
2156
03c05291 2157static struct validate gnfq_validate = {
2158 VOwild0sort,
2159 2,
d33e787c 2160 0,
2161 0,
2162 0,
2163 0,
03c05291 2164 access_filesys,
d33e787c 2165 0,
03c05291 2166 followup_gqot,
d33e787c 2167};
2168
03c05291 2169static char *gnqp_fields[] = {
2170 MACHINE, DIR,
2171 FILESYS, LOGIN, QUOTA, DIR, MACHINE, MOD1, MOD2, MOD3,
4ffa124a 2172};
0c345c78 2173
03c05291 2174static struct valobj gnqp_valobj[] = {
2175 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
2176 {V_WILD, 1},
d33e787c 2177};
2178
03c05291 2179static struct validate gnqp_validate = { gnqp_valobj, 2, };
2180
2181static char *anfq_fields[] = {
2182 FILESYS, LOGIN, QUOTA,
d33e787c 2183};
2184
03c05291 2185static struct validate anfq_validate = {
2186 VOfilsys0user1,
d33e787c 2187 3,
03c05291 2188 FILSYS_ID,
2189 "filsys_id = %d AND type = 'USER' AND entity_id = %d",
2190 2,
2191 0, /* object ? */
d33e787c 2192 0,
03c05291 2193 prefetch_filesys,
2194 followup_aqot,
d33e787c 2195};
2196
03c05291 2197static struct validate unfq_validate = {
2198 VOfilsys0user1,
2199 3,
2200 FILSYS_ID,
2201 "filsys_id = %d AND type = 'USER' AND entity_id = %d",
2202 2,
d33e787c 2203 0,
2204 0,
03c05291 2205 setup_dqot,
2206 followup_aqot,
2207};
2208
2209static struct validate dnfq_validate = {
2210 VOfilsys0user1,
2211 3,
2212 FILSYS_ID,
2213 "filsys_id = %d AND entity_id = %d",
2214 2,
d33e787c 2215 0,
d33e787c 2216 0,
03c05291 2217 setup_dqot,
2218 followup_dqot,
d33e787c 2219};
2220
d33e787c 2221static char *gzcl_fields[] = {
0c345c78 2222 CLASS,
2223 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
5eaef520 2224 "iws_type", "iws_name", "iui_type", "iui_name", MOD1, MOD2, MOD3,
d33e787c 2225};
2226
03c05291 2227static struct valobj gzcl_valobj[] = {
2228 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
2229 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
2230 {V_RLOCK, 0, ZEPHYR_TABLE, 0, ZEPH_ID, MR_DEADLOCK},
2231 {V_WILD, 0},
2232 {V_SORT, 0},
2233};
d33e787c 2234static struct validate gzcl_validate = {
03c05291 2235 gzcl_valobj,
2236 5,
d33e787c 2237 0,
2238 0,
2239 0,
2240 0,
2241 0,
2242 0,
2243 followup_gzcl,
2244};
2245
2246static char *azcl_fields[] = {
0c345c78 2247 CLASS, "xmt_type", "xmt_name", "sub_type", "sub_name",
2248 "iws_type", "iws_name", "iui_type", "iui_name",
d33e787c 2249};
2250
2251static struct valobj azcl_valobj[] = {
03c05291 2252 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
2253 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
5eaef520 2254 {V_LOCK, 0, ZEPHYR_TABLE, 0, ZEPH_ID, MR_DEADLOCK},
03c05291 2255 {V_CHAR, 0, ZEPHYR_TABLE, CLASS},
2256 {V_TYPE, 1, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2257 {V_TYPEDATA, 2, 0, 0, LIST_ID, MR_ACE},
03c05291 2258 {V_TYPE, 3, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2259 {V_TYPEDATA, 4, 0, 0, LIST_ID, MR_ACE},
03c05291 2260 {V_TYPE, 5, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2261 {V_TYPEDATA, 6, 0, 0, LIST_ID, MR_ACE},
03c05291 2262 {V_TYPE, 7, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2263 {V_TYPEDATA, 8, 0, 0, LIST_ID, MR_ACE},
d33e787c 2264};
2265
2266static struct validate azcl_validate = {
2267 azcl_valobj,
03c05291 2268 12,
d33e787c 2269 CLASS,
03c05291 2270 "class = '%s'",
d33e787c 2271 1,
2272 0,
2273 0,
2274 0,
2275 set_zephyr_modtime,
2276};
2277
2278static char *uzcl_fields[] = {
0c345c78 2279 CLASS, "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
2280 "iws_type", "iws_name", "iui_type", "iui_name",
d33e787c 2281};
2282
2283static struct valobj uzcl_valobj[] = {
03c05291 2284 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
2285 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
2286 {V_LOCK, 0, ZEPHYR_TABLE, 0, ZEPH_ID, MR_DEADLOCK},
2287 {V_RENAME, 1, ZEPHYR_TABLE, CLASS, 0, MR_NOT_UNIQUE},
2288 {V_TYPE, 2, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2289 {V_TYPEDATA, 3, 0, 0, LIST_ID, MR_ACE},
03c05291 2290 {V_TYPE, 4, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2291 {V_TYPEDATA, 5, 0, 0, LIST_ID, MR_ACE},
03c05291 2292 {V_TYPE, 6, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2293 {V_TYPEDATA, 7, 0, 0, LIST_ID, MR_ACE},
03c05291 2294 {V_TYPE, 8, 0, ACE_TYPE, 0, MR_ACE},
d548a4e7 2295 {V_TYPEDATA, 9, 0, 0, LIST_ID, MR_ACE},
d33e787c 2296};
2297
2298static struct validate uzcl_validate = {
2299 uzcl_valobj,
03c05291 2300 12,
d33e787c 2301 CLASS,
3e8c655c 2302 "class = '%s'",
d33e787c 2303 1,
2304 0,
2305 0,
2306 0,
2307 set_zephyr_modtime,
2308};
2309
2310static struct validate dzcl_validate = {
2311 0,
2312 0,
2313 CLASS,
73043086 2314 "class = '%s'",
d33e787c 2315 1,
2316 0,
2317 0,
2318 0,
2319 0,
2320};
2321
03c05291 2322static char *gsha_fields[] = {
2323 MACHINE,
2324 MACHINE, ACE_TYPE, ACE_NAME, MOD1, MOD2, MOD3,
2325};
2326
5eaef520 2327static struct validate gsha_validate =
03c05291 2328{
2329 VOupwild0,
2330 1,
2331 0,
2332 0,
2333 0,
2334 0,
2335 0,
2336 0,
2337 followup_gsha,
2338};
2339
2340static char *asha_fields[] = {
2341 MACHINE, ACE_TYPE, ACE_NAME,
2342};
2343
2344static struct valobj asha_valobj[] = {
2345 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
2346 {V_ID, 0, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
2347 {V_RLOCK, 0, LIST_TABLE, 0, LIST_ID, MR_DEADLOCK},
2348 {V_TYPE, 1, 0, ACE_TYPE, 0, MR_ACE},
2349 {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2350};
2351
5eaef520 2352static struct validate asha_validate =
03c05291 2353{
2354 asha_valobj,
2355 5,
2356 MACH_ID,
2357 "mach_id = %d",
2358 1,
2359 MACH_ID,
2360 0,
2361 0,
2362 set_modtime_by_id,
2363};
2364
fd5b2340 2365static char *gsvc_fields[] = {
2366 SERVICE,
0c345c78 2367 SERVICE, "protocol", "port", DESC, MOD1, MOD2, MOD3,
d33e787c 2368};
2369
fd5b2340 2370static char *asvc_fields[] = {
0c345c78 2371 SERVICE, "protocol", "port", DESC,
fd5b2340 2372};
2373
03c05291 2374static struct valobj asvc_valobj[] = {
2375 {V_CHAR, 0, SERVICES_TABLE, NAME},
2376 {V_CHAR, 1, SERVICES_TABLE, "protocol"},
2377 {V_CHAR, 3, SERVICES_TABLE, DESC},
2378};
2379
fd5b2340 2380static struct validate asvc_validate = {
03c05291 2381 asvc_valobj,
2382 3,
fd5b2340 2383 NAME,
03c05291 2384 "name = '%s'",
fd5b2340 2385 1,
2386 0,
2387 0,
2388 0,
2389 set_modtime,
2390};
2391
2392static char *gpce_fields[] = {
0c345c78 2393 "printer",
2394 "printer", "spooling_host", "spool_directory", "rprinter",
2395 "quotaserver", "authenticate", "price", COMMENTS,
2396 MOD1, MOD2, MOD3,
d33e787c 2397};
2398
5eaef520 2399static struct valobj gpce_valobj[] = {
03c05291 2400 {V_RLOCK, 0, USERS_TABLE, 0, USERS_ID, MR_DEADLOCK},
2401 {V_RLOCK, 0, MACHINE_TABLE, 0, MACH_ID, MR_DEADLOCK},
2402 {V_RLOCK, 0, PRINTCAP_TABLE, 0, MACH_ID, MR_DEADLOCK},
2403 {V_WILD, 0},
2404 {V_SORT, 0},
2405};
2406
d4462d4f 2407static struct validate gpce_validate = {
03c05291 2408 gpce_valobj,
2409 5,
d4462d4f 2410 0,
2411 0,
2412 0,
2413 0,
2414 0,
2415 0,
2416 followup_gpce,
2417};
2418
fd5b2340 2419static char *apce_fields[] = {
0c345c78 2420 "printer", "spooling_host", "spool_directory", "rprinter",
2421 "quotaserver", "authenticate", "price", COMMENTS,
2422 MOD1, MOD2, MOD3,
fad88070 2423};
2424
fd5b2340 2425static struct valobj apce_valobj[] = {
03c05291 2426 {V_CHAR, 0, PRINTCAP_TABLE, NAME},
2427 {V_ID, 1, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
2428 {V_LEN, 2, PRINTCAP_TABLE, "dir"},
2429 {V_LEN, 3, PRINTCAP_TABLE, "rp"},
2430 {V_ID, 4, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
2431 {V_CHAR, 7, PRINTCAP_TABLE, "comments"},
d33e787c 2432};
2433
fd5b2340 2434static struct validate apce_validate = {
2435 apce_valobj,
03c05291 2436 6,
d33e787c 2437 NAME,
03c05291 2438 "name = '%s'",
d33e787c 2439 1,
2440 0,
2441 0,
2442 0,
2443 set_modtime,
2444};
2445
fd5b2340 2446static struct validate dpce_validate = {
fad88070 2447 0,
2448 0,
2449 NAME,
3e8c655c 2450 "name = '%s'",
fad88070 2451 1,
2452 0,
2453 0,
2454 0,
2455 0,
2456};
2457
fd5b2340 2458static char *gpcp_fields[] = {
0c345c78 2459 "printer",
2460 "printer", "spooling_host", "spool_directory", "rprinter", COMMENTS,
2461 MOD1, MOD2, MOD3,
fd5b2340 2462};
2463
012fc215 2464static char *gpdm_fields[] = {
0c345c78 2465 NAME,
2466 NAME, "rpcnum", "host", MOD1, MOD2, MOD3,
012fc215 2467};
2468
2469static char *apdm_fields[] = {
0c345c78 2470 NAME, "rpcnum", "host"
03c05291 2471};
012fc215 2472
2473static struct valobj apdm_valobj[] = {
03c05291 2474 {V_CHAR, 0, PALLADIUM_TABLE, NAME},
2475 {V_ID, 2, MACHINE_TABLE, NAME, MACH_ID, MR_MACHINE},
012fc215 2476};
2477
2478static struct validate apdm_validate = {
2479 apdm_valobj,
2480 2,
2481 NAME,
03c05291 2482 "name = '%s'",
012fc215 2483 1,
2484 0,
2485 0,
2486 0,
2487 set_modtime,
2488};
2489
2490static struct validate dpdm_validate = {
2491 0,
2492 0,
2493 NAME,
3e8c655c 2494 "name = '%s'",
012fc215 2495 1,
2496 0,
2497 0,
2498 0,
2499 0,
2500};
2501
d33e787c 2502static char *gali_fields[] = {
2503 NAME, TYPE, "trans",
2504 NAME, TYPE, "trans",
2505};
2506
2507static char *aali_fields[] = {
2508 NAME, TYPE, "trans",
2509};
2510
2511static struct valobj aali_valobj[] = {
03c05291 2512 {V_CHAR, 0, ALIAS_TABLE, NAME},
2513 {V_TYPE, 1, 0, ALIAS, 0, MR_TYPE},
2514 {V_CHAR, 2, ALIAS_TABLE, "trans"},
d33e787c 2515};
2516
2517static struct validate aali_validate = {
2518 aali_valobj,
2519 3,
2520 "trans",
03c05291 2521 "name = '%s' and type = '%s' and trans = '%s'",
d33e787c 2522 3,
2523 0,
2524 0,
2525 0,
2526 0,
2527};
2528
2529static struct validate dali_validate = /* DELETE_ALIAS */
2530{
2531 0,
2532 0,
2533 "trans",
73043086 2534 "name = '%s' and type = '%s' and trans = '%s'",
d33e787c 2535 3,
2536 0,
2537 0,
2538 0,
2539 0,
2540};
2541
2542static char *gval_fields[] = {
2543 NAME, "value",
2544};
2545
2546static struct valobj gval_valobj[] = {
03c05291 2547 {V_NAME, 0, NUMVALUES_TABLE, NAME, 0, MR_NO_MATCH},
d33e787c 2548};
2549
2550static struct validate gval_validate = {
2551 gval_valobj,
2552 1,
2553 0,
2554 0,
2555 0,
2556 0,
2557 0,
2558 0,
2559 0,
2560};
2561
2562static char *aval_fields[] = {
2563 NAME, "value",
2564};
2565
03c05291 2566static struct valobj aval_valobj[] = {
2567 {V_CHAR, 0, NUMVALUES_TABLE, NAME},
2568};
2569
d33e787c 2570static struct validate aval_validate = /* for aval, uval, and dval */
2571{
03c05291 2572 aval_valobj,
d33e787c 2573 1,
2574 NAME,
03c05291 2575 "name = '%s'",
d33e787c 2576 1,
2577 0,
2578 0,
2579 0,
2580 0,
2581};
2582
2583static char *dval_fields[] = {
2584 NAME,
2585};
2586
2587static char *gats_fields[] = {
45bf7573 2588 "table_name", "appends", "updates", "deletes", MOD1, MOD2, MOD3,
d33e787c 2589};
2590
2962e9ec 2591static char *_sdl_fields[] = {
5eaef520 2592 "level",
2962e9ec 2593};
2594
5eaef520 2595static struct validate _sdl_validate =
2962e9ec 2596{
5eaef520 2597 0,
2598 0,
7ac48069 2599 NULL,
2600 NULL,
5eaef520 2601 0,
2602 0,
2603 0,
2604 0,
2605 _sdl_followup,
2962e9ec 2606};
2607
d33e787c 2608
2609\f
2610/* Generalized Query Definitions */
2611
e41960ac 2612/* Note: For any query which uses prefetch_value, the vcnt should be
2613 * one less than the number of %-format specifiers in the tlist.
2614 */
2615
d33e787c 2616struct query Queries2[] = {
2617 {
2618 /* Q_GALO - GET_ALL_LOGINS */
2619 "get_all_logins",
2620 "galo",
2621 RETRIEVE,
2622 "u",
03c05291 2623 USERS_TABLE,
2624 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
d33e787c 2625 galo_fields,
2626 6,
0c345c78 2627 "u.users_id != 0",
d33e787c 2628 0,
f9f5c199 2629 &VDsort0,
d33e787c 2630 },
5eaef520 2631
d33e787c 2632 {
2633 /* Q_GAAL - GET_ALL_ACTIVE_LOGINS */
2634 "get_all_active_logins",
2635 "gaal",
2636 RETRIEVE,
2637 "u",
03c05291 2638 USERS_TABLE,
2639 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
d33e787c 2640 galo_fields,
2641 6,
0c345c78 2642 "u.status = 1",
d33e787c 2643 0,
f9f5c199 2644 &VDsort0,
d33e787c 2645 },
5eaef520 2646
4ffa124a 2647 {
0c345c78 2648 /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN */
2649 "get_user_account_by_login",
2650 "gual",
2651 RETRIEVE,
2652 "u",
03c05291 2653 USERS_TABLE,
2654 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
0c345c78 2655 gual_fields,
2656 15,
03c05291 2657 "u.login LIKE '%s' ESCAPE '*' AND u.users_id != 0 AND u.comments = str.string_id",
0c345c78 2658 1,
2659 &gubl_validate,
4ffa124a 2660 },
5eaef520 2661
4ffa124a 2662 {
0c345c78 2663 /* Q_GUAU - GET_USER_ACCOUNT_BY_UID */
2664 "get_user_account_by_uid",
2665 "guau",
2666 RETRIEVE,
2667 "u",
03c05291 2668 USERS_TABLE,
2669 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
0c345c78 2670 guau_fields,
2671 15,
03c05291 2672 "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
0c345c78 2673 1,
2674 &gubu_validate,
4ffa124a 2675 },
5eaef520 2676
4ffa124a 2677 {
0c345c78 2678 /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME */
2679 "get_user_account_by_name",
2680 "guan",
2681 RETRIEVE,
2682 "u",
03c05291 2683 USERS_TABLE,
2684 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
0c345c78 2685 guan_fields,
2686 15,
03c05291 2687 "u.first LIKE '%s' ESCAPE '*' AND u.last LIKE '%s' ESCAPE '*' AND u.users_id != 0 and u.comments = str.string_id",
0c345c78 2688 2,
60452f41 2689 &guan_validate,
4ffa124a 2690 },
5eaef520 2691
4ffa124a 2692 {
0c345c78 2693 /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS */
2694 "get_user_account_by_class",
2695 "guac",
2696 RETRIEVE,
2697 "u",
03c05291 2698 USERS_TABLE,
2699 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
0c345c78 2700 guac_fields,
2701 15,
03c05291 2702 "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
0c345c78 2703 1,
2704 &VDsortf,
4ffa124a 2705 },
5eaef520 2706
4ffa124a 2707 {
0c345c78 2708 /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID */
2709 "get_user_account_by_id",
2710 "guai",
2711 RETRIEVE,
2712 "u",
03c05291 2713 USERS_TABLE,
2714 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, u.signature, u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
0c345c78 2715 guam_fields,
2716 15,
03c05291 2717 "u.clearid LIKE '%s' ESCAPE '*' AND u.users_id != 0 AND u.comments = str.string_id",
0c345c78 2718 1,
2719 &VDwildsortf,
4ffa124a 2720 },
5eaef520 2721
d33e787c 2722 {
2723 /* Q_GUBL - GET_USER_BY_LOGIN */
2724 "get_user_by_login",
2725 "gubl",
2726 RETRIEVE,
2727 "u",
5eaef520 2728 USERS_TABLE,
03c05291 2729 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
d33e787c 2730 gubl_fields,
2731 12,
0c345c78 2732 "u.login LIKE '%s' ESCAPE '*' AND u.users_id != 0",
d33e787c 2733 1,
f9f5c199 2734 &gubl_validate,
d33e787c 2735 },
5eaef520 2736
d33e787c 2737 {
2738 /* Q_GUBU - GET_USER_BY_UID */
2739 "get_user_by_uid",
2740 "gubu",
2741 RETRIEVE,
2742 "u",
03c05291 2743 USERS_TABLE,
2744 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
d33e787c 2745 gubu_fields,
2746 12,
03c05291 2747 "u.unix_uid = %s AND u.users_id != 0",
d33e787c 2748 1,
f9f5c199 2749 &gubu_validate,
d33e787c 2750 },
5eaef520 2751
d33e787c 2752 {
2753 /* Q_GUBN - GET_USER_BY_NAME */
2754 "get_user_by_name",
2755 "gubn",
2756 RETRIEVE,
2757 "u",
03c05291 2758 USERS_TABLE,
2759 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
d33e787c 2760 gubn_fields,
2761 12,
0c345c78 2762 "u.first LIKE '%s' ESCAPE '*' AND u.last LIKE '%s' ESCAPE '*' AND u.users_id != 0",
d33e787c 2763 2,
99e09b48 2764 &gubn_validate,
d33e787c 2765 },
5eaef520 2766
d33e787c 2767 {
2768 /* Q_GUBC - GET_USER_BY_CLASS */
2769 "get_user_by_class",
2770 "gubc",
2771 RETRIEVE,
2772 "u",
03c05291 2773 USERS_TABLE,
2774 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
d33e787c 2775 gubc_fields,
2776 12,
03c05291 2777 "u.type = UPPER('%s') AND u.users_id != 0",
d33e787c 2778 1,
2779 &VDsortf,
2780 },
5eaef520 2781
d33e787c 2782 {
2783 /* Q_GUBM - GET_USER_BY_MITID */
2784 "get_user_by_mitid",
2785 "gubm",
2786 RETRIEVE,
2787 "u",
03c05291 2788 USERS_TABLE,
2789 "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u",
d33e787c 2790 gubm_fields,
2791 12,
0c345c78 2792 "u.clearid LIKE '%s' ESCAPE '*' AND u.users_id != 0",
d33e787c 2793 1,
99e09b48 2794 &VDwildsortf,
d33e787c 2795 },
5eaef520 2796
0b401a9a 2797 {
2798 /* Q_GUDF - GET_USER_DIRECTORY_FLAGS */
2799 "get_user_directory_flags",
2800 "gudf",
2801 RETRIEVE,
2802 "u",
2803 USERS_TABLE,
f9a578ec 2804 "u.dirsuppress, u.dirremote FROM users u",
0b401a9a 2805 gudf_fields,
f9a578ec 2806 2,
0b401a9a 2807 "u.users_id = %d",
2808 1,
2809 &gudf_validate,
2810 },
2811
4ffa124a 2812 {
2813 /* Q_AUAC - ADD_USER_ACCOUNT */ /* uses prefetch_value() for users_id */
2814 "add_user_account",
2815 "auac",
2816 APPEND,
2817 "u",
03c05291 2818 USERS_TABLE,
5eaef520 2819 "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, LENGTH(NVL('%s', CHR(0))), %s, %s)", /* followup_ausr fixes signature field */
4ffa124a 2820 auac_fields,
2821 12,
7ac48069 2822 NULL,
4ffa124a 2823 0,
2824 &auac_validate,
2825 },
5eaef520 2826
d33e787c 2827 {
45bf7573 2828 /* Q_AUSR - ADD_USER */ /* uses prefetch_value() for users_id */
d33e787c 2829 "add_user",
2830 "ausr",
2831 APPEND,
2832 "u",
03c05291 2833 USERS_TABLE,
5eaef520 2834 "INTO users (login, unix_uid, shell, last, first, middle, status, clearid, type, comments, signature, secure, users_id) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', 0, CHR(0), 0, %s)",
4ffa124a 2835 auac_fields,
d33e787c 2836 9,
45bf7573 2837 0,
d33e787c 2838 0,
2839 &ausr_validate,
2840 },
5eaef520 2841
d33e787c 2842 {
2843 /* Q_RUSR - REGISTER_USER */
2844 "register_user",
2845 "rusr",
2846 APPEND,
2847 0,
2848 0,
2849 0,
2850 rusr_fields,
2851 3,
2852 0,
2853 0,
2854 &rusr_validate,
2855 },
5eaef520 2856
4ffa124a 2857 {
2858 /* Q_UUAC - UPDATE_USER_ACCOUNT */
2859 "update_user_account",
2860 "uuac",
2861 UPDATE,
2862 "u",
03c05291 2863 USERS_TABLE,
5eaef520 2864 "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s', comments = %d, signature = LENGTH(NVL('%s', CHR(0))), secure = %s", /* followup_uuac fixes signature */
4ffa124a 2865 uuac_fields,
2866 12,
2867 "users_id = %d",
2868 1,
2869 &uuac_validate,
2870 },
5eaef520 2871
d33e787c 2872 {
2873 /* Q_UUSR - UPDATE_USER */
2874 "update_user",
2875 "uusr",
2876 UPDATE,
2877 "u",
03c05291 2878 USERS_TABLE,
5eaef520 2879 "users SET login = '%s', unix_uid = %s, shell = '%s', last = NVL('%s', CHR(0)), first = NVL('%s', CHR(0)), middle = NVL('%s', CHR(0)), status = %s, clearid = NVL('%s', CHR(0)), type = '%s'",
4ffa124a 2880 uuac_fields,
d33e787c 2881 9,
4e5ec77f 2882 "users_id = %d",
d33e787c 2883 1,
2884 &uusr_validate,
2885 },
2886
2887 {
2888 /* Q_UUSH - UPDATE_USER_SHELL */
2889 "update_user_shell",
2890 "uush",
2891 UPDATE,
2892 "u",
03c05291 2893 USERS_TABLE,
5eaef520 2894 "users SET shell = '%s'",
d33e787c 2895 uush_fields,
2896 1,
4e5ec77f 2897 "users_id = %d",
d33e787c 2898 1,
2899 &uush_validate,
2900 },
2901
2902 {
2903 /* Q_UUST - UPDATE_USER_STATUS */
2904 "update_user_status",
2905 "uust",
2906 UPDATE,
2907 "u",
03c05291 2908 USERS_TABLE,
4e5ec77f 2909 "users SET status = %s",
d33e787c 2910 uust_fields,
2911 1,
4e5ec77f 2912 "users_id = %d",
d33e787c 2913 1,
2914 &uust_validate,
2915 },
2916
4ffa124a 2917 {
2918 /* Q_UUSS - UPDATE_USER_SECURITY_STATUS */
2919 "update_user_security_status",
2920 "uuss",
2921 UPDATE,
2922 "u",
03c05291 2923 USERS_TABLE,
135dcb80 2924 "users SET secure = %s",
4ffa124a 2925 uuss_fields,
2926 1,
2927 "users_id = %d",
2928 1,
2929 &uust_validate,
2930 },
5eaef520 2931
0b401a9a 2932 {
2933 /* Q_UUDF - UPDATE_USER_DIRECTORY_FLAGS */
2934 "update_user_directory_flags",
2935 "uudf",
2936 UPDATE,
2937 "u",
2938 USERS_TABLE,
f9a578ec 2939 "users SET dirsuppress = %s, dirremote = %s",
0b401a9a 2940 uudf_fields,
f9a578ec 2941 2,
0b401a9a 2942 "users_id = %d",
2943 1,
2944 &uudf_validate,
2945 },
2946
d33e787c 2947 {
5eaef520 2948 /* Q_DUSR - DELETE_USER */
d33e787c 2949 "delete_user",
2950 "dusr",
2951 DELETE,
2952 "u",
03c05291 2953 USERS_TABLE,
7ac48069 2954 NULL,
d33e787c 2955 dusr_fields,
2956 0,
4e5ec77f 2957 "users_id = %d",
d33e787c 2958 1,
2959 &dusr_validate,
2960 },
2961
2962 {
2963 /* Q_DUBU - DELETE_USER_BY_UID */
2964 "delete_user_by_uid",
2965 "dubu",
2966 DELETE,
2967 "u",
03c05291 2968 USERS_TABLE,
7ac48069 2969 NULL,
d33e787c 2970 dubu_fields,
2971 0,
e41960ac 2972 "users_id = %d",
d33e787c 2973 1,
2974 &dubu_validate,
2975 },
2976
012fc215 2977 {
5eaef520 2978 /* Q_GKUM - GET_KERBEROS_USER_MAP */
012fc215 2979 "get_kerberos_user_map",
2980 "gkum",
2981 RETRIEVE,
2982 "k",
03c05291 2983 KRBMAP_TABLE,
2984 "u.login, str.string FROM krbmap km, users u, strings str",
012fc215 2985 gkum_fields,
2986 2,
0c345c78 2987 "u.login LIKE '%s' ESCAPE '*' AND str.string LIKE '%s' ESCAPE '*' AND km.users_id = u.users_id AND km.string_id = str.string_id",
012fc215 2988 2,
99e09b48 2989 &VDwild2sort2,
012fc215 2990 },
2991
2992 {
2993 /* Q_AKUM - ADD_KERBEROS_USER_MAP */
2994 "add_kerberos_user_map",
2995 "akum",
2996 APPEND,
2997 "k",
03c05291 2998 KRBMAP_TABLE,
99e09b48 2999 "INTO krbmap (users_id, string_id) VALUES (%d, %d)",
012fc215 3000 akum_fields,
3001 2,
3002 0,
3003 0,
3004 &akum_validate,
3005 },
3006
3007 {
3008 /* Q_DKUM - DELETE_KERBEROS_USER_MAP */
3009 "delete_kerberos_user_map",
3010 "dkum",
3011 DELETE,
3012 "k",
03c05291 3013 KRBMAP_TABLE,
012fc215 3014 0,
3015 akum_fields,
3016 0,
99e09b48 3017 "users_id = %d AND string_id = %d",
012fc215 3018 2,
3019 &dkum_validate,
3020 },
3021
d33e787c 3022 {
3023 /* Q_GFBL - GET_FINGER_BY_LOGIN */
3024 "get_finger_by_login",
3025 "gfbl",
3026 RETRIEVE,
3027 "u",
03c05291 3028 USERS_TABLE,
3029 "login, fullname, nickname, home_addr, home_phone, office_addr, office_phone, department, affiliation, TO_CHAR(fmodtime, 'DD-mon-YYYY HH24:MI:SS'), fmodby, fmodwith FROM users",
d33e787c 3030 gfbl_fields,
3031 12,
03c05291 3032 "users_id = %d",
d33e787c 3033 1,
3034 &gfbl_validate,
3035 },
3036
3037 {
3038 /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
3039 "update_finger_by_login",
3040 "ufbl",
3041 UPDATE,
3042 "u",
03c05291 3043 USERS_TABLE,
5eaef520 3044 "users SET fullname= NVL('%s', CHR(0)), nickname= NVL('%s', CHR(0)), home_addr= NVL('%s', CHR(0)), home_phone= NVL('%s', CHR(0)), office_addr= NVL('%s', CHR(0)), office_phone= NVL('%s', CHR(0)), department= NVL('%s', CHR(0)), affiliation= NVL('%s', CHR(0))",
d33e787c 3045 ufbl_fields,
3046 8,
4e5ec77f 3047 "users_id = %d",
d33e787c 3048 1,
3049 &ufbl_validate,
3050 },
3051
3052 {
3053 /* Q_GPOB - GET_POBOX */
3054 "get_pobox",
3055 "gpob",
3056 RETRIEVE,
3057 "u",
03c05291 3058 USERS_TABLE,
3059 "login, potype, pop_id || ':' || box_id, TO_CHAR(pmodtime, 'DD-mon-YYYY HH24:MI:SS'), pmodby, pmodwith FROM users",
d33e787c 3060 gpob_fields,
3061 6,
03c05291 3062 "users_id = %d",
d33e787c 3063 1,
3064 &gpob_validate,
3065 },
3066
3067 {
3068 /* Q_GAPO - GET_ALL_POBOXES */
3069 "get_all_poboxes",
3070 "gapo",
3071 RETRIEVE,
3072 "u",
03c05291 3073 USERS_TABLE,
3074 "login, potype, pop_id || ':' || box_id FROM users",
d33e787c 3075 gpox_fields,
3076 3,
03c05291 3077 "potype != 'NONE'",
d33e787c 3078 0,
3079 &gpox_validate,
3080 },
5eaef520 3081
d33e787c 3082 {
3083 /* Q_GPOP - GET_POBOXES_POP */
3084 "get_poboxes_pop",
3085 "gpop",
3086 RETRIEVE,
3087 "u",
03c05291 3088 USERS_TABLE,
3089 "login, potype, pop_id || ':' || box_id FROM users",
d33e787c 3090 gpox_fields,
3091 3,
03c05291 3092 "potype = 'POP'",
d33e787c 3093 0,
3094 &gpox_validate
3095 },
3096
3097 {
3098 /* Q_GPOF - GET_POBOXES_SMTP */
3099 "get_poboxes_smtp",
3100 "gpos",
3101 RETRIEVE,
3102 "u",
03c05291 3103 USERS_TABLE,
3104 "login, potype, pop_id || ':' || box_id FROM users",
d33e787c 3105 gpox_fields,
3106 3,
03c05291 3107 "potype = 'SMTP'",
d33e787c 3108 0,
3109 &gpox_validate
3110 },
3111
3112 {
3113 /* Q_SPOB - SET_POBOX */
3114 "set_pobox",
3115 "spob",
3116 UPDATE,
3117 0,
03c05291 3118 USERS_TABLE,
d33e787c 3119 0,
3120 spob_fields,
3121 3,
7ac48069 3122 NULL,
d33e787c 3123 0,
3124 &spob_validate,
3125 },
3126
3127 {
3128 /* Q_SPOP - SET_POBOX_POP */
3129 "set_pobox_pop",
3130 "spop",
3131 UPDATE,
3132 "u",
03c05291 3133 USERS_TABLE,
4e5ec77f 3134 "users SET potype = 'POP'",
d33e787c 3135 spob_fields,
3136 0,
4e5ec77f 3137 "users_id = %d",
d33e787c 3138 1,
3139 &spop_validate,
3140 },
3141
3142 {
3143 /* Q_DPOB - DELETE_POBOX */
3144 "delete_pobox",
3145 "dpob",
3146 UPDATE,
3147 "u",
03c05291 3148 USERS_TABLE,
3149 "users SET potype = 'NONE'",
3150 spob_fields,
3151 0,
3152 "users_id = %d",
d33e787c 3153 1,
03c05291 3154 &dpob_validate,
d33e787c 3155 },
3156
3157 {
a66a2204 3158 /* Q_GHST - GET_HOST */
3159 "get_host",
3160 "ghst",
3161 RETRIEVE,
3162 "m",
03c05291 3163 MACHINE_TABLE,
3164 "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.use, m.status, TO_CHAR(m.statuschange, 'DD-mon-YYYY HH24:MI:SS'), s.name, m.address, m.owner_type, m.owner_id, m.acomment, m.ocomment, TO_CHAR(m.created, 'DD-mon-YYYY HH24:MI:SS'), m.creator, TO_CHAR(m.inuse, 'DD-mon-YYYY HH24:MI:SS'), TO_CHAR(m.modtime, 'DD-mon-YYYY HH24:MI:SS'), m.modby, m.modwith FROM machine m, subnet s",
a66a2204 3165 ghst_fields,
3166 21,
5eaef520 3167 "m.name LIKE '%s' ESCAPE '*' AND m.address LIKE '%s' ESCAPE '*' AND m.location LIKE '%s' ESCAPE '*' AND s.name LIKE '%s' ESCAPE '*' AND m.mach_id != 0 AND s.snet_id = m.snet_id",
a66a2204 3168 4,
3169 &ghst_validate,
3170 },
3171
3172 {
3173 /* Q_AHST - ADD_HOST */ /* uses prefetch_value() for mach_id */
3174 "add_host",
3175 "ahst",
d33e787c 3176 APPEND,
3177 "m",
03c05291 3178 MACHINE_TABLE,
5eaef520 3179 "INTO machine (name, vendor, model, os, location, contact, use, status, statuschange, snet_id, address, owner_type, owner_id, acomment, ocomment, created, inuse, mach_id, creator) VALUES (UPPER('%s'), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL(UPPER('%s'), CHR(0)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
a66a2204 3180 ahst_fields,
3181 14,
45bf7573 3182 0,
d33e787c 3183 0,
a66a2204 3184 &ahst_validate,
d33e787c 3185 },
3186
3187 {
a66a2204 3188 /* Q_UHST - UPDATE_HOST */
3189 "update_host",
3190 "uhst",
d33e787c 3191 UPDATE,
3192 "m",
03c05291 3193 MACHINE_TABLE,
5eaef520 3194 "machine SET name = NVL(UPPER('%s'), CHR(0)), vendor = NVL(UPPER('%s'), CHR(0)), model = NVL(UPPER('%s'), CHR(0)), os = NVL(UPPER('%s'), CHR(0)), location = NVL(UPPER('%s'), CHR(0)), contact = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
a66a2204 3195 uhst_fields,
3196 14,
4e5ec77f 3197 "mach_id = %d",
d33e787c 3198 1,
a66a2204 3199 &uhst_validate,
d33e787c 3200 },
3201
3202 {
a66a2204 3203 /* Q_DHST - DELETE_HOST */
3204 "delete_host",
3205 "dhst",
d33e787c 3206 DELETE,
3207 "m",
03c05291 3208 MACHINE_TABLE,
7ac48069 3209 NULL,
a66a2204 3210 dhst_fields,
d33e787c 3211 0,
4e5ec77f 3212 "mach_id = %d",
d33e787c 3213 1,
a66a2204 3214 &dhst_validate,
3215 },
3216
03c05291 3217 {
3218 /* Q_GMAC - GET_MACHINE */
3219 "get_machine",
3220 "gmac",
3221 RETRIEVE,
3222 "m",
3223 MACHINE_TABLE,
3224 "name, vendor, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM machine",
3225 gmac_fields,
3226 5,
5eaef520 3227 "name LIKE '%s' ESCAPE '*' AND mach_id != 0",
03c05291 3228 1,
3229 &VDupwildsortf,
3230 },
3231
a66a2204 3232 {
3233 /* Q_GHAL - GET_HOSTALIAS */
3234 "get_hostalias",
3235 "ghal",
3236 RETRIEVE,
03c05291 3237 "a",
3238 HOSTALIAS_TABLE,
3239 "a.name, m.name FROM hostalias a, machine m",
a66a2204 3240 ghal_fields,
3241 2,
3242 "m.mach_id = a.mach_id and a.name LIKE '%s' ESCAPE '*' AND m.name LIKE '%s' ESCAPE '*'",
3243 2,
3244 &ghal_validate,
3245 },
3246
3247 {
3248 /* Q_AHAL - ADD_HOSTALIAS */
3249 "add_hostalias",
3250 "ahal",
3251 APPEND,
3252 "a",
03c05291 3253 HOSTALIAS_TABLE,
5eaef520 3254 "INTO hostalias (name, mach_id) VALUES (UPPER('%s'), %d)",
a66a2204 3255 ghal_fields,
3256 2,
3257 0,
3258 0,
3259 &ahal_validate,
3260 },
3261
3262 {
3263 /* Q_DHAL - DELETE_HOSTALIAS */
3264 "delete_hostalias",
3265 "dhal",
3266 DELETE,
3267 "a",
03c05291 3268 HOSTALIAS_TABLE,
7ac48069 3269 NULL,
a66a2204 3270 ghal_fields,
3271 0,
03c05291 3272 "name = UPPER('%s') AND mach_id = %d",
a66a2204 3273 2,
3274 &dhal_validate,
d33e787c 3275 },
3276
3c1d412c 3277 {
3278 /* Q_GSNT - GET_SUBNET */
3279 "get_subnet",
3280 "gsnt",
3281 RETRIEVE,
3282 "s",
03c05291 3283 SUBNET_TABLE,
3284 "name, description, saddr, mask, low, high, prefix, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM subnet",
3c1d412c 3285 gsnt_fields,
bd8c26ff 3286 12,
03c05291 3287 "name LIKE '%s' ESCAPE '*' and snet_id != 0",
3c1d412c 3288 1,
3289 &gsnt_validate,
3290 },
3291
3292 {
3293 /* Q_ASNT - ADD_SUBNET */
3294 "add_subnet",
3295 "asnt",
3296 APPEND,
3297 "s",
03c05291 3298 SUBNET_TABLE,
5eaef520 3299 "INTO subnet (name, description, saddr, mask, low, high, prefix, owner_type, owner_id, snet_id) VALUES (UPPER('%s'), NVL('%s', CHR(0)), %s, %s, %s, %s, NVL('%s', CHR(0)), '%s', %d, %s)",
3c1d412c 3300 asnt_fields,
bd8c26ff 3301 9,
3c1d412c 3302 0,
3303 0,
3304 &asnt_validate,
3305 },
3306
3307 {
3308 /* Q_USNT - UPDATE_SUBNET */
3309 "update_subnet",
3310 "usnt",
3311 UPDATE,
3312 "s",
03c05291 3313 SUBNET_TABLE,
5eaef520 3314 "subnet SET name = UPPER('%s'), description = NVL('%s', CHR(0)), saddr = %s, mask = %s, low = %s, high = %s, prefix = NVL('%s', CHR(0)), owner_type = '%s', owner_id = %d",
3c1d412c 3315 usnt_fields,
bd8c26ff 3316 9,
3c1d412c 3317 "snet_id = %d",
3318 1,
3319 &usnt_validate,
3320 },
3321
3322 {
3323 /* Q_DSNT - DELETE_SUBNET */
3324 "delete_subnet",
3325 "dsnt",
3326 DELETE,
3327 "s",
03c05291 3328 SUBNET_TABLE,
7ac48069 3329 NULL,
3c1d412c 3330 dsnt_fields,
3331 0,
3332 "snet_id = %d",
3333 1,
3334 &dsnt_validate,
3335 },
3336
d33e787c 3337 {
3338 /* Q_GCLU - GET_CLUSTER */
3339 "get_cluster",
3340 "gclu",
3341 RETRIEVE,
3342 "c",
03c05291 3343 CLUSTER_TABLE,
3344 "name, description, location, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM clusters",
d33e787c 3345 gclu_fields,
3346 6,
03c05291 3347 "name LIKE '%s' ESCAPE '*' AND clu_id != 0",
d33e787c 3348 1,
99e09b48 3349 &VDwildsortf,
d33e787c 3350 },
3351
3352 {
45bf7573 3353 /* Q_ACLU - ADD_CLUSTER */ /* uses prefetch_value() for clu_id */
d33e787c 3354 "add_cluster",
3355 "aclu",
3356 APPEND,
3357 "c",
03c05291 3358 CLUSTER_TABLE,
5eaef520 3359 "INTO clusters (name, description, location, clu_id) VALUES ('%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s)",
d33e787c 3360 aclu_fields,
3361 3,
45bf7573 3362 0,
d33e787c 3363 0,
3364 &aclu_validate,
3365 },
3366
3367 {
3368 /* Q_UCLU - UPDATE_CLUSTER */
3369 "update_cluster",
3370 "uclu",
3371 UPDATE,
3372 "c",
03c05291 3373 CLUSTER_TABLE,
5eaef520 3374 "clusters SET name = '%s', description = NVL('%s', CHR(0)), location = NVL('%s', CHR(0))",
d33e787c 3375 uclu_fields,
3376 3,
4e5ec77f 3377 "clu_id = %d",
d33e787c 3378 1,
3379 &uclu_validate,
3380 },
3381
3382 {
3383 /* Q_DCLU - DELETE_CLUSTER */
3384 "delete_cluster",
3385 "dclu",
3386 DELETE,
3387 "c",
03c05291 3388 CLUSTER_TABLE,
7ac48069 3389 NULL,
d33e787c 3390 dclu_fields,
3391 0,
4e5ec77f 3392 "clu_id = %d",
d33e787c 3393 1,
3394 &dclu_validate,
3395 },
3396
3397 {
5eaef520 3398 /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
d33e787c 3399 "get_machine_to_cluster_map",
3400 "gmcm",
3401 RETRIEVE,
0c345c78 3402 "mcm",
03c05291 3403 MCMAP_TABLE,
3404 "m.name, c.name FROM machine m, clusters c, mcmap mcm",
d33e787c 3405 gmcm_fields,
3406 2,
0c345c78 3407 "m.name LIKE '%s' ESCAPE '*' AND c.name LIKE '%s' ESCAPE '*' AND mcm.clu_id = c.clu_id AND mcm.mach_id = m.mach_id",
d33e787c 3408 2,
5eaef520 3409 &gmcm_validate,
d33e787c 3410 },
5eaef520 3411
d33e787c 3412 {
3413 /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
3414 "add_machine_to_cluster",
3415 "amtc",
3416 APPEND,
0c345c78 3417 "mcm",
03c05291 3418 MCMAP_TABLE,
4e5ec77f 3419 "INTO mcmap (mach_id, clu_id) VALUES (%d, %d)",
d33e787c 3420 gmcm_fields,
3421 2,
3422 0,
3423 0,
3424 &amtc_validate,
3425 },
3426
3427 {
3428 /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
3429 "delete_machine_from_cluster",
3430 "dmfc",
3431 DELETE,
0c345c78 3432 "mcm",
03c05291 3433 MCMAP_TABLE,
d33e787c 3434 0,
3435 gmcm_fields,
3436 0,
4e5ec77f 3437 "mach_id = %d AND clu_id = %d",
d33e787c 3438 2,
3439 &amtc_validate,
3440 },
3441
3442 {
68dd808d 3443 /* Q_GCLD - GET_CLUSTER_DATA */
d33e787c 3444 "get_cluster_data",
3445 "gcld",
3446 RETRIEVE,
d33e787c 3447 "svc",
03c05291 3448 SVC_TABLE,
3449 "c.name, svc.serv_label, svc.serv_cluster FROM svc svc, clusters c",
d33e787c 3450 gcld_fields,
3451 3,
0c345c78 3452 "c.clu_id = svc.clu_id AND c.name LIKE '%s' ESCAPE '*' AND svc.serv_label LIKE '%s' ESCAPE '*'",
d33e787c 3453 2,
99e09b48 3454 &VDwild2sort2,
d33e787c 3455 },
3456
3457 {
3458 /* Q_ACLD - ADD_CLUSTER_DATA */
3459 "add_cluster_data",
3460 "acld",
3461 APPEND,
0c345c78 3462 "svc",
03c05291 3463 SVC_TABLE,
5eaef520 3464 "INTO svc (clu_id, serv_label, serv_cluster) VALUES (%d, '%s', '%s')",
88343c5e 3465 acld_fields,
d33e787c 3466 3,
7ac48069 3467 NULL,
d33e787c 3468 0,
3469 &acld_validate,
3470 },
3471
3472 {
3473 /* Q_DCLD - DELETE_CLUSTER_DATA */
3474 "delete_cluster_data",
3475 "dcld",
3476 DELETE,
0c345c78 3477 "svc",
03c05291 3478 SVC_TABLE,
7ac48069 3479 NULL,
88343c5e 3480 acld_fields,
d33e787c 3481 0,
5eaef520 3482 "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
d33e787c 3483 3,
99e09b48 3484 &dcld_validate,
d33e787c 3485 },
3486
03c05291 3487 {
3488 /* Q_GLIN - GET_LIST_INFO */
3489 "get_list_info",
3490 "glin",
3491 RETRIEVE,
3492 0,
3493 LIST_TABLE,
3494 0,
3495 glin_fields,
3496 13,
3497 0,
5eaef520 3498 1,
3499 &glin_validate,
03c05291 3500 },
5eaef520 3501
03c05291 3502 {
3503 /* Q_EXLN - EXPAND_LIST_NAMES */
3504 "expand_list_names",
3505 "exln",
3506 RETRIEVE,
3507 "l",
3508 LIST_TABLE,
3509 "name FROM list",
3510 glin_fields,
3511 1,
3512 "name LIKE '%s' ESCAPE '*' AND list_id != 0",
3513 1,
3514 &VDwild0,
3515 },
5eaef520 3516
03c05291 3517 {
3518 /* Q_ALIS - ADD_LIST */ /* uses prefetch_value() for list_id */
3519 "add_list",
3520 "alis",
3521 APPEND,
3522 "l",
5eaef520 3523 LIST_TABLE,
3524 "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, '%s', %d, NVL('%s', CHR(0)), %s)",
03c05291 3525 alis_fields,
3526 10,
3527 0,
3528 0,
3529 &alis_validate,
3530 },
3531
3532 {
3533 /* Q_ULIS - UPDATE_LIST */
3534 "update_list",
3535 "ulis",
3536 UPDATE,
3537 "l",
3538 LIST_TABLE,
5eaef520 3539 "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, acl_type = '%s', acl_id = %d, description = NVL('%s', CHR(0))",
03c05291 3540 ulis_fields,
3541 10,
3542 "list_id = %d",
3543 1,
3544 &ulis_validate,
3545 },
3546
3547 {
3548 /* Q_DLIS - DELETE_LIST */
3549 "delete_list",
3550 "dlis",
3551 DELETE,
3552 "l",
3553 LIST_TABLE,
7ac48069 3554 NULL,
03c05291 3555 dlis_fields,
3556 0,
3557 "list_id = %d",
3558 1,
3559 &dlis_validate,
3560 },
3561
3562 {
3563 /* Q_AMTL - ADD_MEMBER_TO_LIST */
3564 "add_member_to_list",
3565 "amtl",
3566 APPEND,
3567 0,
3568 IMEMBERS_TABLE,
3569 0,
3570 amtl_fields,
3571 3,
7ac48069 3572 NULL,
03c05291 3573 0,
3574 &amtl_validate,
3575 },
3576
3577 {
3578 /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
3579 "delete_member_from_list",
3580 "dmfl",
3581 DELETE,
3582 0,
3583 IMEMBERS_TABLE,
7ac48069 3584 NULL,
03c05291 3585 amtl_fields,
3586 0,
3587 0,
3588 3,
3589 &dmfl_validate,
3590 },
3591
3592 {
3593 /* Q_GAUS - GET_ACE_USE */
3594 "get_ace_use",
3595 "gaus",
3596 RETRIEVE,
3597 0,
3598 0,
3599 0,
3600 gaus_fields,
3601 2,
3602 0,
3603 2,
3604 &gaus_validate,
3605 },
3606
3607 {
3608 /* Q_QGLI - QUALIFIED_GET_LISTS */
3609 "qualified_get_lists",
3610 "qgli",
3611 RETRIEVE,
3612 0,
3613 LIST_TABLE,
3614 0,
3615 qgli_fields,
3616 1,
3617 0,
3618 5,
3619 &qgli_validate,
3620 },
3621
3622 {
3623 /* Q_GMOL - GET_MEMBERS_OF_LIST */
3624 "get_members_of_list",
3625 "gmol",
3626 RETRIEVE,
7ac48069 3627 NULL,
03c05291 3628 IMEMBERS_TABLE,
7ac48069 3629 NULL,
03c05291 3630 gmol_fields,
3631 2,
7ac48069 3632 NULL,
03c05291 3633 1,
3634 &gmol_validate,
3635 },
3636
3637 {
3638 /* Q_GEML - GET_END_MEMBERS_OF_LIST */
3639 "get_end_members_of_list",
3640 "geml",
3641 RETRIEVE,
7ac48069 3642 NULL,
03c05291 3643 IMEMBERS_TABLE,
7ac48069 3644 NULL,
03c05291 3645 gmol_fields,
fd8d2149 3646 2,
7ac48069 3647 NULL,
03c05291 3648 1,
3649 &geml_validate,
3650 },
5eaef520 3651
03c05291 3652 {
3653 /* Q_GLOM - GET_LISTS_OF_MEMBER */
3654 "get_lists_of_member",
3655 "glom",
3656 RETRIEVE,
3657 0,
3658 IMEMBERS_TABLE,
3659 0,
3660 glom_fields,
3661 6,
3662 0,
3663 2,
3664 &glom_validate,
3665 },
3666
3667 {
3668 /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
3669 "count_members_of_list",
3670 "cmol",
3671 RETRIEVE,
3672 0,
3673 IMEMBERS_TABLE,
3674 0,
3675 cmol_fields,
3676 1,
3677 0,
3678 1,
3679 &cmol_validate,
3680 },
3681
d33e787c 3682 {
3683 /* Q_GSIN - GET_SERVER_INFO */
3684 "get_server_info",
3685 "gsin",
3686 RETRIEVE,
3687 "s",
03c05291 3688 SERVERS_TABLE,
3689 "name, update_int, target_file, script, dfgen, dfcheck, type, enable, inprogress, harderror, errmsg, acl_type, acl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM servers",
d33e787c 3690 gsin_fields,
7ac4c1b1 3691 16,
03c05291 3692 "name LIKE '%s' ESCAPE '*'",
d33e787c 3693 1,
3694 &gsin_validate,
3695 },
3696
3697 {
3698 /* Q_QGSV - QUALIFIED_GET_SERVER */
3699 "qualified_get_server",
3700 "qgsv",
3701 RETRIEVE,
3702 0,
03c05291 3703 SERVERS_TABLE,
d33e787c 3704 0,
3705 qgsv_fields,
3706 1,
3707 0,
3708 3,
3709 &qgsv_validate,
3710 },
3711
3712 {
3713 /* Q_ASIN - ADD_SERVER_INFO */
3714 "add_server_info",
3715 "asin",
3716 APPEND,
3717 "s",
03c05291 3718 SERVERS_TABLE,
5eaef520 3719 "INTO servers (name, update_int, target_file, script, type, enable, acl_type, acl_id) VALUES (UPPER('%s'), %s, '%s', '%s', '%s', %s, '%s', %d)",
d33e787c 3720 asin_fields,
3721 8,
7ac48069 3722 NULL,
d33e787c 3723 0,
3724 &asin_validate,
3725 },
3726
3727 {
3728 /* Q_USIN - UPDATE_SERVER_INFO */
3729 "update_server_info",
3730 "usin",
3731 UPDATE,
3732 "s",
03c05291 3733 SERVERS_TABLE,
4e5ec77f 3734 "servers SET update_int = %s, target_file = '%s', script = '%s', type = '%s', enable = %s, acl_type = '%s', acl_id = %d",
d33e787c 3735 asin_fields,
3736 7,
03c05291 3737 "name = UPPER('%s')",
d33e787c 3738 1,
3739 &asin_validate,
3740 },
3741
3742 {
3743 /* Q_RSVE - RESET_SERVER_ERROR */
3744 "reset_server_error",
3745 "rsve",
3746 UPDATE,
3747 "s",
03c05291 3748 SERVERS_TABLE,
4e5ec77f 3749 "servers SET harderror = 0, dfcheck = dfgen",
d33e787c 3750 dsin_fields,
3751 0,
03c05291 3752 "name = UPPER('%s')",
d33e787c 3753 1,
3754 &rsve_validate,
3755 },
3756
3757 {
3758 /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
3759 "set_server_internal_flags",
3760 "ssif",
3761 UPDATE,
3762 "s",
03c05291 3763 SERVERS_TABLE,
5eaef520 3764 "servers SET dfgen = %s, dfcheck = %s, inprogress = %s, harderror = %s, errmsg = NVL('%s', CHR(0))",
d33e787c 3765 ssif_fields,
7ac4c1b1 3766 5,
03c05291 3767 "name = UPPER('%s')",
d33e787c 3768 1,
3769 &ssif_validate,
3770 },
3771
3772 {
3773 /* Q_DSIN - DELETE_SERVER_INFO */
3774 "delete_server_info",
3775 "dsin",
3776 DELETE,
3777 "s",
03c05291 3778 SERVERS_TABLE,
7ac48069 3779 NULL,
d33e787c 3780 dsin_fields,
3781 0,
03c05291 3782 "name = UPPER('%s')",
d33e787c 3783 1,
3784 &dsin_validate,
3785 },
3786
3787 {
5eaef520 3788 /* Q_GSHI - GET_SERVER_HOST_INFO */
d33e787c 3789 "get_server_host_info",
3790 "gshi",
3791 RETRIEVE,
3792 "sh",
03c05291 3793 SERVERHOSTS_TABLE,
3794 "sh.service, m.name, sh.enable, sh.override, sh.success, sh.inprogress, sh.hosterror, sh.hosterrmsg, sh.ltt, sh.lts, sh.value1, sh.value2, sh.value3, TO_CHAR(sh.modtime, 'DD-mon-YYYY HH24:MI:SS'), sh.modby, sh.modwith FROM serverhosts sh, machine m",
d33e787c 3795 gshi_fields,
3796 16,
99e09b48 3797 "sh.service LIKE '%s' ESCAPE '*' AND m.name LIKE '%s' ESCAPE '*' AND m.mach_id = sh.mach_id",
d33e787c 3798 2,
3799 &gshi_validate,
3800 },
3801
3802 {
135dcb80 3803 /* Q_QGSH - QUALIFIED_GET_SERVER_HOST */
d33e787c 3804 "qualified_get_server_host",
3805 "qgsh",
3806 RETRIEVE,
135dcb80 3807 0,
03c05291 3808 SERVERHOSTS_TABLE,
d33e787c 3809 0,
3810 qgsh_fields,
3811 2,
3812 0,
3813 6,
3814 &qgsh_validate,
3815 },
3816
3817 {
3818 /* Q_ASHI - ADD_SERVER_HOST_INFO */
3819 "add_server_host_info",
3820 "ashi",
3821 APPEND,
3822 "sh",
03c05291 3823 SERVERHOSTS_TABLE,
5eaef520 3824 "INTO serverhosts (service, mach_id, enable, value1, value2, value3) VALUES (UPPER('%s'), %d, %s, %s, %s, NVL('%s', CHR(0)))",
d33e787c 3825 ashi_fields,
3826 6,
7ac48069 3827 NULL,
d33e787c 3828 0,
3829 &ashi_validate,
3830 },
3831
3832 {
3833 /* Q_USHI - UPDATE_SERVER_HOST_INFO */
3834 "update_server_host_info",
3835 "ushi",
3836 UPDATE,
3837 "sh",
03c05291 3838 SERVERHOSTS_TABLE,
5eaef520 3839 "serverhosts SET enable = %s, value1 = %s, value2 = %s, value3 = NVL('%s', CHR(0))",
d33e787c 3840 ashi_fields,
3841 4,
03c05291 3842 "service = UPPER('%s') AND mach_id = %d",
d33e787c 3843 2,
3844 &ashi_validate,
3845 },
3846
3847 {
3848 /* Q_RSHE - RESET_SERVER_HOST_ERROR */
3849 "reset_server_host_error",
3850 "rshe",
3851 UPDATE,
3852 "sh",
03c05291 3853 SERVERHOSTS_TABLE,
4e5ec77f 3854 "serverhosts SET hosterror = 0",
d33e787c 3855 dshi_fields,
3856 0,
03c05291 3857 "service = UPPER('%s') AND mach_id = %d",
d33e787c 3858 2,
3859 &rshe_validate,
3860 },
3861
3862 {
3863 /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
3864 "set_server_host_override",
3865 "ssho",
3866 UPDATE,
3867 "sh",
03c05291 3868 SERVERHOSTS_TABLE,
4e5ec77f 3869 "serverhosts SET override = 1",
d33e787c 3870 dshi_fields,
3871 0,
03c05291 3872 "service = UPPER('%s') AND mach_id = %d",
d33e787c 3873 2,
3874 &ssho_validate,
3875 },
3876
3877 {
e41960ac 3878 /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
d33e787c 3879 "set_server_host_internal",
3880 "sshi",
3881 UPDATE,
7ac4c1b1 3882 "s",
03c05291 3883 SERVERHOSTS_TABLE,
5eaef520 3884 "serverhosts SET override = %s, success = %s, inprogress = %s, hosterror = %s, hosterrmsg = NVL('%s', CHR(0)), ltt = %s, lts = %s",
d33e787c 3885 sshi_fields,
3886 7,
5eaef520 3887 "service = UPPER('%s') AND mach_id = %d",
d33e787c 3888 2,
3889 &sshi_validate,
3890 },
3891
3892 {
03c05291 3893 /* Q_DSHI - DELETE_SERVER_HOST_INFO */
3894 "delete_server_host_info",
3895 "dshi",
d33e787c 3896 DELETE,
03c05291 3897 "sh",
3898 SERVERHOSTS_TABLE,
7ac48069 3899 NULL,
03c05291 3900 dshi_fields,
d33e787c 3901 0,
03c05291 3902 "service = UPPER('%s') AND mach_id = %d",
3903 2,
3904 &dshi_validate,
d33e787c 3905 },
3906
3907 {
5eaef520 3908 /* Q_GSLO - GET_SERVER_LOCATIONS */
d33e787c 3909 "get_server_locations",
3910 "gslo",
3911 RETRIEVE,
3912 "sh",
03c05291 3913 SERVERHOSTS_TABLE,
3914 "sh.service, m.name FROM serverhosts sh, machine m",
d33e787c 3915 gslo_fields,
3916 2,
99e09b48 3917 "sh.service LIKE '%s' ESCAPE '*' AND sh.mach_id = m.mach_id",
d33e787c 3918 1,
99e09b48 3919 &VDupwild0,
d33e787c 3920 },
3921
3922 {
5eaef520 3923 /* Q_GFSL - GET_FILESYS_BY_LABEL */
d33e787c 3924 "get_filesys_by_label",
3925 "gfsl",
3926 RETRIEVE,
3927 "fs",
03c05291 3928 FILESYS_TABLE,
3929 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
d33e787c 3930 gfsl_fields,
3931 14,
e41960ac 3932 "fs.label LIKE '%s' ESCAPE '*' AND fs.mach_id = m.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
d33e787c 3933 1,
99e09b48 3934 &VDwildsortf,
d33e787c 3935 },
3936
3937 {
5eaef520 3938 /* Q_GFSM - GET_FILESYS_BY_MACHINE */
d33e787c 3939 "get_filesys_by_machine",
3940 "gfsm",
3941 RETRIEVE,
3942 "fs",
03c05291 3943 FILESYS_TABLE,
3944 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
d33e787c 3945 gfsm_fields,
3946 14,
4e5ec77f 3947 "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
d33e787c 3948 1,
3949 &gfsm_validate,
3950 },
3951
88343c5e 3952 {
5eaef520 3953 /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
88343c5e 3954 "get_filesys_by_nfsphys",
3955 "gfsn",
3956 RETRIEVE,
3957 "fs",
03c05291 3958 FILESYS_TABLE,
3959 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l, nfsphys np",
88343c5e 3960 gfsn_fields,
3961 14,
5eaef520 3962 "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 LIKE '%s' ESCAPE '*' AND fs.type = 'NFS'",
88343c5e 3963 2,
99e09b48 3964 &gfsn_validate,
88343c5e 3965 },
3966
d33e787c 3967 {
5eaef520 3968 /* Q_GFSG - GET_FILESYS_BY_GROUP */
d33e787c 3969 "get_filesys_by_group",
3970 "gfsg",
3971 RETRIEVE,
3972 "fs",
03c05291 3973 FILESYS_TABLE,
3974 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
d33e787c 3975 gfsg_fields,
3976 14,
4e5ec77f 3977 "fs.owners = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
d33e787c 3978 1,
3979 &gfsg_validate,
3980 },
3981
4ffa124a 3982 {
76f86976 3983 /* Q_GFSP - GET_FILESYS_BY_PATH */
4ffa124a 3984 "get_filesys_by_path",
3985 "gfsp",
3986 RETRIEVE,
3987 "fs",
03c05291 3988 FILESYS_TABLE,
3989 "fs.label, fs.type, m.name, fs.name, fs.mount, fs.rwaccess, fs.comments, u.login, l.name, fs.createflg, fs.lockertype, TO_CHAR(fs.modtime, 'DD-mon-YYYY HH24:MI:SS'), fs.modby, fs.modwith FROM filesys fs, machine m, users u, list l",
4ffa124a 3990 gfsp_fields,
3991 14,
76f86976 3992 "fs.name LIKE '%s' ESCAPE '*' AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = list_id",
4ffa124a 3993 1,
76f86976 3994 &VDwildsortf,
4ffa124a 3995 },
5eaef520 3996
d33e787c 3997 {
45bf7573 3998 /* Q_AFIL - ADD_FILESYS */ /* uses prefetch_value() for filsys_id */
d33e787c 3999 "add_filesys",
4000 "afil",
4001 APPEND,
4002 "fs",
03c05291 4003 FILESYS_TABLE,
5eaef520 4004 "INTO filesys (label, type, mach_id, name, mount, rwaccess, comments, owner, owners, createflg, lockertype, filsys_id) VALUES ('%s', '%s', %d, NVL('%s', CHR(0)), '%s', '%s', NVL('%s', CHR(0)), %d, %d, %s, '%s', %s)",
d33e787c 4005 afil_fields,
4006 11,
45bf7573 4007 0,
d33e787c 4008 0,
4009 &afil_validate,
4010 },
4011
4012 {
4013 /* Q_UFIL - UPDATE_FILESYS */
4014 "update_filesys",
4015 "ufil",
4016 UPDATE,
4017 "fs",
03c05291 4018 FILESYS_TABLE,
5eaef520 4019 "filesys SET label = '%s', type = '%s', mach_id = %d, name = NVL('%s', CHR(0)), mount = '%s', rwaccess = '%s', comments = NVL('%s', CHR(0)), owner = %d, owners = %d, createflg = %s, lockertype = '%s'",
d33e787c 4020 ufil_fields,
4021 11,
4e5ec77f 4022 "filsys_id = %d",
d33e787c 4023 1,
5eaef520 4024 &ufil_validate,
d33e787c 4025 },
4026
4027 {
4028 /* Q_DFIL - DELETE_FILESYS */
4029 "delete_filesys",
4030 "dfil",
4031 DELETE,
4032 "fs",
03c05291 4033 FILESYS_TABLE,
7ac48069 4034 NULL,
d33e787c 4035 dfil_fields,
4036 0,
4e5ec77f 4037 "filsys_id = %d",
d33e787c 4038 1,
4039 &dfil_validate,
4040 },
4041
95127ba8 4042 {
5eaef520 4043 /* Q_GFGM - GET_FSGROUP_MEMBERS */
95127ba8 4044 "get_fsgroup_members",
4045 "gfgm",
4046 RETRIEVE,
4047 "fg",
03c05291 4048 FSGROUP_TABLE,
4049 "fs.label, fg.key FROM fsgroup fg, filesys fs",
95127ba8 4050 gfgm_fields,
4051 2,
4e5ec77f 4052 "fg.group_id = %d AND fs.filsys_id = fg.filsys_id",
95127ba8 4053 1,
4054 &gfgm_validate,
4055 },
4056
4057 {
76f86976 4058 /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
95127ba8 4059 "add_filesys_to_fsgroup",
4060 "aftg",
4061 APPEND,
4062 "fg",
03c05291 4063 FSGROUP_TABLE,
5eaef520 4064 "INTO fsgroup (group_id, filsys_id, key) VALUES (%d, %d, '%s')",
95127ba8 4065 gfgm_fields,
76f86976 4066 3,
7ac48069 4067 NULL,
76f86976 4068 0,
95127ba8 4069 &aftg_validate,
4070 },
4071
4072 {
4073 /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
4074 "remove_filesys_from_fsgroup",
4075 "rffg",
4076 DELETE,
4077 "fg",
03c05291 4078 FSGROUP_TABLE,
7ac48069 4079 NULL,
95127ba8 4080 gfgm_fields,
4081 0,
4e5ec77f 4082 "group_id = %d AND filsys_id = %d",
95127ba8 4083 2,
4084 &aftg_validate,
4085 },
4086
d33e787c 4087 {
5eaef520 4088 /* Q_GANF - GET_ALL_NFSPHYS */
d33e787c 4089 "get_all_nfsphys",
4090 "ganf",
4091 RETRIEVE,
4092 "np",
03c05291 4093 NFSPHYS_TABLE,
4094 "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
d33e787c 4095 ganf_fields,
4096 9,
4e5ec77f 4097 "m.mach_id = np.mach_id",
d33e787c 4098 0,
4099 &VDsortf,
4100 },
4101
4102 {
5eaef520 4103 /* Q_GNFP - GET_NFSPHYS */
d33e787c 4104 "get_nfsphys",
4105 "gnfp",
4106 RETRIEVE,
4107 "np",
03c05291 4108 NFSPHYS_TABLE,
4109 "m.name, np.dir, np.device, np.status, np.allocated, np.partsize, TO_CHAR(np.modtime, 'DD-mon-YYYY HH24:MI:SS'), np.modby, np.modwith FROM nfsphys np, machine m",
d33e787c 4110 gnfp_fields,
4111 9,
5eaef520 4112 "np.mach_id = %d AND np.dir LIKE '%s' ESCAPE '*' AND m.mach_id = np.mach_id",
d33e787c 4113 2,
4114 &gnfp_validate,
4115 },
4116
4117 {
45bf7573 4118 /* Q_ANFP - ADD_NFSPHYS */ /* uses prefetch_value() for nfsphys_id */
d33e787c 4119 "add_nfsphys",
4120 "anfp",
4121 APPEND,
4122 "np",
03c05291 4123 NFSPHYS_TABLE,
5eaef520 4124 "INTO nfsphys (mach_id, dir, device, status, allocated, partsize, nfsphys_id) VALUES (%d, '%s', NVL('%s', CHR(0)), %s, %s, %s, %s)",
d33e787c 4125 ganf_fields,
4126 6,
45bf7573 4127 0,
d33e787c 4128 0,
4129 &anfp_validate,
4130 },
4131
4132 {
4133 /* Q_UNFP - UPDATE_NFSPHYS */
4134 "update_nfsphys",
4135 "unfp",
4136 UPDATE,
4137 "np",
03c05291 4138 NFSPHYS_TABLE,
5eaef520 4139 "nfsphys SET device = NVL('%s', CHR(0)), status = %s, allocated = %s, partsize = %s",
135dcb80 4140 ganf_fields,
d33e787c 4141 4,
5eaef520 4142 "mach_id = %d AND dir = '%s'",
d33e787c 4143 2,
45bf7573 4144 &unfp_validate,
d33e787c 4145 },
4146
4147 {
4148 /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
4149 "adjust_nfsphys_allocation",
4150 "ajnf",
4151 UPDATE,
4152 "np",
03c05291 4153 NFSPHYS_TABLE,
4e5ec77f 4154 "nfsphys SET allocated = allocated + %s",
99e09b48 4155 ajnf_fields,
d33e787c 4156 1,
4e5ec77f 4157 "mach_id = %d AND dir = '%s'",
d33e787c 4158 2,
45bf7573 4159 &unfp_validate,
d33e787c 4160 },
4161
4162 {
4163 /* Q_DNFP - DELETE_NFSPHYS */
4164 "delete_nfsphys",
4165 "dnfp",
4166 DELETE,
4167 "np",
03c05291 4168 NFSPHYS_TABLE,
7ac48069 4169 NULL,
d33e787c 4170 dnfp_fields,
4171 0,
4e5ec77f 4172 "mach_id = %d AND dir = '%s'",
d33e787c 4173 2,
4174 &dnfp_validate,
4175 },
4176
368be132 4177 {
5eaef520 4178 /* Q_GQOT - GET_QUOTA */
368be132 4179 "get_quota",
4180 "gqot",
4181 RETRIEVE,
4182 "q",
03c05291 4183 QUOTA_TABLE,
4184 "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
368be132 4185 gqot_fields,
4186 9,
e41960ac 4187 "fs.label LIKE '%s' ESCAPE '*' AND q.type = '%s' AND q.entity_id = %d AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
368be132 4188 3,
4189 &gqot_validate,
4190 },
4191
4192 {
5eaef520 4193 /* Q_GQBF - GET_QUOTA_BY_FILESYS */
368be132 4194 "get_quota_by_filesys",
4195 "gqbf",
4196 RETRIEVE,
4197 "q",
03c05291 4198 QUOTA_TABLE,
4199 "fs.label, q.type, q.entity_id, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, machine m",
368be132 4200 gqbf_fields,
4201 9,
e41960ac 4202 "fs.label LIKE '%s' ESCAPE '*' AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
368be132 4203 1,
4204 &gqbf_validate,
4205 },
4206
4207 {
135dcb80 4208 /* Q_AQOT - ADD_QUOTA */ /* prefetch_filsys() gets last 1 value */
368be132 4209 "add_quota",
4210 "aqot",
4211 APPEND,
135dcb80 4212 0,
03c05291 4213 QUOTA_TABLE,
135dcb80 4214 "INTO quota (filsys_id, type, entity_id, quota, phys_id) VALUES ('%s', %d, %d, %s, %s)",
368be132 4215 aqot_fields,
135dcb80 4216 4,
7ac48069 4217 NULL,
76f86976 4218 0,
368be132 4219 &aqot_validate,
4220 },
4221
4222 {
4223 /* Q_UQOT - UPDATE_QUOTA */
4224 "update_quota",
4225 "uqot",
4226 UPDATE,
135dcb80 4227 0,
03c05291 4228 QUOTA_TABLE,
4e5ec77f 4229 "quota SET quota = %s",
368be132 4230 aqot_fields,
4231 1,
135dcb80 4232 0,
368be132 4233 3,
4234 &uqot_validate,
4235 },
4236
4237 {
4238 /* Q_DQOT - DELETE_QUOTA */
4239 "delete_quota",
4240 "dqot",
4241 DELETE,
135dcb80 4242 0,
03c05291 4243 QUOTA_TABLE,
7ac48069 4244 NULL,
368be132 4245 aqot_fields,
4246 0,
135dcb80 4247 0,
368be132 4248 3,
4249 &dqot_validate,
4250 },
4251
d33e787c 4252 {
5eaef520 4253 /* Q_GNFQ - GET_NFS_QUOTAS */
88343c5e 4254 "get_nfs_quota",
d33e787c 4255 "gnfq",
4256 RETRIEVE,
368be132 4257 "q",
03c05291 4258 QUOTA_TABLE,
4259 "fs.label, u.login, q.quota, q.phys_id, m.name, TO_CHAR(q.modtime, 'DD-mon-YYYY HH24:MI:SS'), q.modby, q.modwith FROM quota q, filesys fs, users u, machine m",
d33e787c 4260 gnfq_fields,
4261 8,
99e09b48 4262 "fs.label LIKE '%s' ESCAPE '*' 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 4263 2,
d33e787c 4264 &gnfq_validate,
4265 },
4266
4267 {
5eaef520 4268 /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
d33e787c 4269 "get_nfs_quotas_by_partition",
4270 "gnqp",
4271 RETRIEVE,
368be132 4272 "q",
03c05291 4273 QUOTA_TABLE,
4274 "fs.label, u.login, q.quota, np.dir, m.name FROM quota q, filesys fs, users u, nfsphys np, machine m",
d33e787c 4275 gnqp_fields,
4276 5,
99e09b48 4277 "np.mach_id = %d AND np.dir LIKE '%s' ESCAPE '*' 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 4278 2,
99e09b48 4279 &gnqp_validate,
d33e787c 4280 },
4281
d33e787c 4282 {
135dcb80 4283 /* Q_ANFQ - ADD_NFS_QUOTA */ /* prefetch_filsys() gets last 1 value */
d33e787c 4284 "add_nfs_quota",
4285 "anfq",
4286 APPEND,
135dcb80 4287 0,
03c05291 4288 QUOTA_TABLE,
135dcb80 4289 "INTO quota (type, filsys_id, entity_id, quota, phys_id ) VALUES ('USER', %d, %d, %s, %s)",
d33e787c 4290 anfq_fields,
135dcb80 4291 3,
7ac48069 4292 NULL,
76f86976 4293 0,
d33e787c 4294 &anfq_validate,
4295 },
4296
4297 {
5eaef520 4298 /* Q_UNFQ - UPDATE_NFS_QUOTA */
d33e787c 4299 "update_nfs_quota",
4300 "unfq",
4301 UPDATE,
135dcb80 4302 0,
03c05291 4303 QUOTA_TABLE,
4e5ec77f 4304 "quota SET quota = %s",
d33e787c 4305 anfq_fields,
4306 1,
135dcb80 4307 0,
d33e787c 4308 2,
4309 &unfq_validate,
4310 },
4311
4312 {
4313 /* Q_DNFQ - DELETE_NFS_QUOTA */
4314 "delete_nfs_quota",
4315 "dnfq",
4316 DELETE,
135dcb80 4317 0,
03c05291 4318 QUOTA_TABLE,
7ac48069 4319 NULL,
d33e787c 4320 anfq_fields,
4321 0,
135dcb80 4322 0,
d33e787c 4323 2,
4324 &dnfq_validate,
4325 },
4326
d33e787c 4327 {
4328 /* Q_GZCL - GET_ZEPHYR_CLASS */
4329 "get_zephyr_class",
4330 "gzcl",
4331 RETRIEVE,
4332 "z",
03c05291 4333 ZEPHYR_TABLE,
4334 "class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM zephyr",
d33e787c 4335 gzcl_fields,
4336 12,
03c05291 4337 "class LIKE '%s' ESCAPE '*'",
d33e787c 4338 1,
4339 &gzcl_validate,
03c05291 4340 },
d33e787c 4341
4342 {
4343 /* Q_AZCL - ADD_ZEPHYR_CLASS */
4344 "add_zephyr_class",
4345 "azcl",
4346 APPEND,
4347 "z",
03c05291 4348 ZEPHYR_TABLE,
5eaef520 4349 "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 4350 azcl_fields,
4351 9,
4352 0,
4353 0,
4354 &azcl_validate,
5eaef520 4355 },
d33e787c 4356
4357 {
4358 /* Q_UZCL - UPDATE_ZEPHYR_CLASS */
4359 "update_zephyr_class",
4360 "uzcl",
4361 UPDATE,
4362 "z",
03c05291 4363 ZEPHYR_TABLE,
135dcb80 4364 "zephyr SET class = '%s', xmt_type = '%s', xmt_id = %d, sub_type = '%s', sub_id = %d, iws_type = '%s', iws_id = %d, iui_type = '%s', iui_id = %d",
d33e787c 4365 uzcl_fields,
4366 9,
99e09b48 4367 "class = '%s'",
d33e787c 4368 1,
4369 &uzcl_validate,
5eaef520 4370 },
d33e787c 4371
4372 {
4373 /* Q_DZCL - DELETE_ZEPHYR_CLASS */
4374 "delete_zephyr_class",
4375 "dzcl",
4376 DELETE,
4377 "z",
03c05291 4378 ZEPHYR_TABLE,
d33e787c 4379 0,
4380 uzcl_fields,
4381 0,
99e09b48 4382 "class = '%s'",
d33e787c 4383 1,
4384 &dzcl_validate,
5eaef520 4385 },
fd5b2340 4386
03c05291 4387 {
5eaef520 4388 /* Q_GSHA - GET_SERVER_HOST_ACCESS */
03c05291 4389 "get_server_host_access",
4390 "gsha",
4391 RETRIEVE,
4392 "ha",
4393 HOSTACCESS_TABLE,
4394 "m.name, ha.acl_type, ha.acl_id, TO_CHAR(ha.modtime, 'DD-mon-YYYY HH24:MI:SS'), ha.modby, ha.modwith FROM hostaccess ha, machine m",
4395 gsha_fields,
4396 6,
4397 "m.name LIKE '%s' ESCAPE '*' AND ha.mach_id = m.mach_id",
4398 1,
4399 &gsha_validate,
4400 },
4401
4402 {
4403 /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
4404 "add_server_host_access",
4405 "asha",
4406 APPEND,
4407 "ha",
4408 HOSTACCESS_TABLE,
5eaef520 4409 "INTO hostaccess (mach_id, acl_type, acl_id) VALUES (%d, '%s', %d)",
03c05291 4410 asha_fields,
4411 3,
4412 0,
4413 0,
4414 &asha_validate,
4415 },
4416
4417 {
4418 /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
4419 "update_server_host_access",
4420 "usha",
4421 UPDATE,
4422 "ha",
4423 HOSTACCESS_TABLE,
4424 "hostaccess SET acl_type = '%s', acl_id = %d",
4425 asha_fields,
4426 2,
4427 "mach_id = %d",
4428 1,
4429 &asha_validate,
4430 },
4431
4432 {
4433 /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
4434 "delete_server_host_access",
4435 "dsha",
4436 DELETE,
4437 "ha",
4438 HOSTACCESS_TABLE,
4439 0,
4440 asha_fields,
4441 0,
4442 "mach_id = %d",
4443 1,
4444 &VDmach,
4445 },
4446
d33e787c 4447 {
4448 /* Q_GSVC - GET_SERVICE */
4449 "get_service",
4450 "gsvc",
4451 RETRIEVE,
0c345c78 4452 "ss",
03c05291 4453 SERVICES_TABLE,
4454 "name, protocol, port, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM services",
fd5b2340 4455 gsvc_fields,
d33e787c 4456 7,
03c05291 4457 "name LIKE '%s' ESCAPE '*'",
fd5b2340 4458 1,
99e09b48 4459 &VDwildsortf,
d33e787c 4460 },
4461
4462 {
4463 /* Q_ASVC - ADD_SERVICE */
4464 "add_service",
4465 "asvc",
4466 APPEND,
0c345c78 4467 "ss",
03c05291 4468 SERVICES_TABLE,
5eaef520 4469 "INTO services (name, protocol, port, description) VALUES ('%s', '%s', %s, NVL('%s', CHR(0)))",
fd5b2340 4470 asvc_fields,
d33e787c 4471 4,
7ac48069 4472 NULL,
d33e787c 4473 0,
4474 &asvc_validate,
4475 },
4476
4477 {
4478 /* Q_DSVC - DELETE_SERVICE */
4479 "delete_service",
4480 "dsvc",
4481 DELETE,
0c345c78 4482 "ss",
03c05291 4483 SERVICES_TABLE,
d33e787c 4484 0,
fd5b2340 4485 asvc_fields,
d33e787c 4486 0,
99e09b48 4487 "name = '%s'",
d33e787c 4488 1,
fd5b2340 4489 &asvc_validate,
d33e787c 4490 },
fd5b2340 4491
d33e787c 4492 {
5eaef520 4493 /* Q_GPCE - GET_PRINTCAP_ENTRY */
fd5b2340 4494 "get_printcap_entry",
4495 "gpce",
d33e787c 4496 RETRIEVE,
0c345c78 4497 "pc",
03c05291 4498 PRINTCAP_TABLE,
4499 "pc.name, m.name, pc.dir, pc.rp, pc.quotaserver, pc.auth, pc.price, pc.comments, TO_CHAR(pc.modtime, 'DD-mon-YYYY HH24:MI:SS'), pc.modby, pc.modwith FROM printcap pc, machine m",
fd5b2340 4500 gpce_fields,
4501 11,
0c345c78 4502 "pc.name LIKE '%s' ESCAPE '*' AND m.mach_id = pc.mach_id",
d33e787c 4503 1,
d4462d4f 4504 &gpce_validate,
d33e787c 4505 },
4506
4507 {
fd5b2340 4508 /* Q_APCE - ADD_PRINTCAP_ENTRY */
4509 "add_printcap_entry",
4510 "apce",
d33e787c 4511 APPEND,
0c345c78 4512 "pc",
03c05291 4513 PRINTCAP_TABLE,
5eaef520 4514 "INTO printcap (name, mach_id, dir, rp, quotaserver, auth, price, comments) VALUES ('%s', %d, '%s', '%s', %d, %s, %s, NVL('%s', CHR(0)))",
fd5b2340 4515 apce_fields,
4516 8,
d33e787c 4517 0,
4518 0,
fd5b2340 4519 &apce_validate,
4520 },
4521
4522 {
4523 /* Q_DPCE - DELETE_PRINTCAP_ENTRY */
4524 "delete_printcap_entry",
4525 "dpce",
4526 DELETE,
0c345c78 4527 "pc",
03c05291 4528 PRINTCAP_TABLE,
fd5b2340 4529 0,
4530 apce_fields,
4531 0,
99e09b48 4532 "name = '%s'",
fd5b2340 4533 1,
4534 &dpce_validate,
4535 },
4536
4537 {
4538 /* Q_GPCP - GET_PRINTCAP */
4539 "get_printcap",
4540 "gpcp",
4541 RETRIEVE,
0c345c78 4542 "pc",
03c05291 4543 PRINTCAP_TABLE,
4544 "pc.name, m.name, pc.dir, pc.rp, pc.comments, TO_CHAR(pc.modtime, 'DD-mon-YYYY HH24:MI:SS'), pc.modby, pc.modwith FROM printcap pc, machine m",
fd5b2340 4545 gpcp_fields,
4546 8,
0c345c78 4547 "pc.name LIKE '%s' ESCAPE '*' AND m.mach_id = pc.mach_id",
fd5b2340 4548 1,
99e09b48 4549 &VDwildsortf,
d33e787c 4550 },
4551
4552 {
4553 /* Q_DPCP - DELETE_PRINTCAP */
4554 "delete_printcap",
4555 "dpcp",
4556 DELETE,
0c345c78 4557 "pc",
03c05291 4558 PRINTCAP_TABLE,
d33e787c 4559 0,
fd5b2340 4560 apce_fields,
d33e787c 4561 0,
99e09b48 4562 "name = '%s'",
d33e787c 4563 1,
fd5b2340 4564 &dpce_validate,
d33e787c 4565 },
4566
012fc215 4567 {
4568 /* Q_GPDM - GET_PALLADIUM */
4569 "get_palladium",
4570 "gpdm",
4571 RETRIEVE,
0c345c78 4572 "pal",
03c05291 4573 PALLADIUM_TABLE,
4574 "pal.name, pal.identifier, m.name, TO_CHAR(pal.modtime, 'DD-mon-YYYY HH24:MI:SS'), pal.modby, pal.modwith FROM palladium pal, machine m",
012fc215 4575 gpdm_fields,
4576 6,
0c345c78 4577 "pal.name LIKE '%s' ESCAPE '*' AND m.mach_id = pal.mach_id",
012fc215 4578 1,
99e09b48 4579 &VDwildsortf,
012fc215 4580 },
4581
4582 {
4583 /* Q_APDM - ADD_PALLADIUM */
4584 "add_palladium",
4585 "apdm",
4586 APPEND,
0c345c78 4587 "pal",
03c05291 4588 PALLADIUM_TABLE,
5eaef520 4589 "INTO palladium (name, identifier, mach_id) VALUES ('%s', %s, %d)",
012fc215 4590 apdm_fields,
4591 3,
4592 0,
4593 0,
4594 &apdm_validate,
4595 },
4596
4597 {
4598 /* Q_DPDM - DELETE_PALLADIUM */
4599 "delete_palladium",
4600 "dpdm",
4601 DELETE,
0c345c78 4602 "pal",
03c05291 4603 PALLADIUM_TABLE,
012fc215 4604 0,
4605 apdm_fields,
4606 0,
99e09b48 4607 "name = '%s'",
012fc215 4608 1,
4609 &dpdm_validate,
4610 },
4611
d33e787c 4612 {
4613 /* Q_GALI - GET_ALIAS */
4614 "get_alias",
4615 "gali",
4616 RETRIEVE,
4617 "a",
03c05291 4618 ALIAS_TABLE,
4619 "name, type, trans FROM alias",
d33e787c 4620 gali_fields,
4621 3,
03c05291 4622 "name LIKE '%s' ESCAPE '*' AND type LIKE '%s' ESCAPE '*' AND trans LIKE '%s' ESCAPE '*'",
d33e787c 4623 3,
99e09b48 4624 &VDwild3sort1,
d33e787c 4625 },
4626
4627 {
4628 /* Q_AALI - ADD_ALIAS */
4629 "add_alias",
4630 "aali",
4631 APPEND,
4632 "a",
03c05291 4633 ALIAS_TABLE,
4e5ec77f 4634 "INTO alias (name, type, trans) VALUES ('%s', '%s', '%s')",
d33e787c 4635 aali_fields,
4636 3,
7ac48069 4637 NULL,
d33e787c 4638 0,
4639 &aali_validate,
4640 },
4641
4642 {
4643 /* Q_DALI - DELETE_ALIAS */
4644 "delete_alias",
4645 "dali",
4646 DELETE,
4647 "a",
03c05291 4648 ALIAS_TABLE,
7ac48069 4649 NULL,
d33e787c 4650 aali_fields,
4651 0,
5eaef520 4652 "name = '%s' AND type = '%s' AND trans = '%s'",
d33e787c 4653 3,
4654 &dali_validate,
4655 },
4656
4657 {
4658 /* Q_GVAL - GET_VALUE */
4659 "get_value",
4660 "gval",
4661 RETRIEVE,
0c345c78 4662 "val",
03c05291 4663 NUMVALUES_TABLE,
4664 "value FROM numvalues",
d33e787c 4665 gval_fields,
4666 1,
03c05291 4667 "name = '%s'",
d33e787c 4668 1,
4669 &gval_validate,
4670 },
4671
4672 {
4673 /* Q_AVAL - ADD_VALUE */
4674 "add_value",
4675 "aval",
4676 APPEND,
0c345c78 4677 "val",
03c05291 4678 NUMVALUES_TABLE,
4e5ec77f 4679 "INTO numvalues (name, value) VALUES ('%s', %s)",
d33e787c 4680 aval_fields,
4681 2,
7ac48069 4682 NULL,
d33e787c 4683 0,
4684 &aval_validate,
4685 },
4686
4687 {
4688 /* Q_UVAL - UPDATE_VALUE */
4689 "update_value",
4690 "uval",
4691 UPDATE,
0c345c78 4692 "val",
03c05291 4693 NUMVALUES_TABLE,
4e5ec77f 4694 "numvalues SET value = %s",
d33e787c 4695 aval_fields,
4696 1,
99e09b48 4697 "name = '%s'",
d33e787c 4698 1,
4699 &aval_validate,
4700 },
4701
4702 {
4703 /* Q_DVAL - DELETE_VALUE */
4704 "delete_value",
4705 "dval",
4706 DELETE,
0c345c78 4707 "val",
03c05291 4708 NUMVALUES_TABLE,
7ac48069 4709 NULL,
d33e787c 4710 dval_fields,
4711 0,
99e09b48 4712 "name = '%s'",
d33e787c 4713 1,
4714 &aval_validate,
4715 },
4716
4717 {
4718 /* Q_GATS - GET_ALL_TABLE_STATS */
4719 "get_all_table_stats",
4720 "gats",
4721 RETRIEVE,
4722 "tbs",
03c05291 4723 TBLSTATS_TABLE,
4724 "table_name, appends, updates, deletes, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS') FROM tblstats",
d33e787c 4725 gats_fields,
45bf7573 4726 5,
7ac48069 4727 NULL,
d33e787c 4728 0,
4729 0,
4730 },
4731
2962e9ec 4732 {
4733 /* Q__SDL - _SET_DEBUG_LEVEL */
4734 "_set_debug_level",
4735 "_sdl",
4736 UPDATE,
7ac48069 4737 NULL,
03c05291 4738 0,
7ac48069 4739 NULL,
2962e9ec 4740 _sdl_fields,
4741 1,
7ac48069 4742 NULL,
2962e9ec 4743 0,
4744 &_sdl_validate,
4745 },
4746
d33e787c 4747};
4748
5eaef520 4749int QueryCount2 = (sizeof(Queries2) / sizeof(struct query));
This page took 1.029713 seconds and 5 git commands to generate.