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