source: trunk/third/moira/server/queries2.c @ 24191

Revision 24191, 170.7 KB checked in by broder, 15 years ago (diff)
In moira: * New CVS snapshot. * Drop patch fix-update-ticket, which was incorporated upstream.
Line 
1/* $Id: queries2.c,v 2.109 2009-11-05 22:12:02 zacheiss Exp $
2 *
3 * This file defines the query dispatch table
4 *
5 * Copyright (C) 1987-1998 by the Massachusetts Institute of Technology.
6 * For copying and distribution information, please see the file
7 * <mit-copyright.h>.
8 */
9
10#include <mit-copyright.h>
11#include "mr_server.h"
12#include "query.h"
13
14#include "mr_et.h"
15
16/* VALOBJS
17 * These are commonly used validation objects, defined here so that they
18 * can be shared.
19 */
20
21static struct valobj VOuser0[] = {
22  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
23};
24
25static struct valobj VOmach0[] = {
26  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
27};
28
29static struct valobj VOclu0[] = {
30  {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
31};
32
33static struct valobj VOsnet0[] = {
34  {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
35};
36
37static struct valobj VOlist0[] = {
38  {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
39};
40
41static struct valobj VOfilesys0[] = {
42  {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
43};
44
45static struct valobj VOcon0[] = {
46  {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
47};
48
49static struct valobj VOnum0[] = {
50  {V_NUM, 0},
51};
52
53/* Validations
54 * Commonly used validation records defined here so that they may
55 * be shared.
56 */
57
58static struct validate VDmach = { VOmach0, 1 };
59
60static struct validate VDfix_modby = {
61  0,
62  0,
63  0,
64  0,
65  0,
66  0,
67  0,
68  0,
69  followup_fix_modby,
70};
71
72/* Query data */
73
74static char *galo2_fields[] = {
75  "login", "unix_uid", "shell", "last", "first", "middle",
76};
77
78static char *galo_fields[] = {
79  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
80};
81
82static char *gual2_fields[] = {
83  "login",
84  "login", "unix_uid", "shell", "last", "first", "middle", "status",
85  "clearid", "class", "comments", "signature", "secure",
86  "modtime", "modby", "modwith",
87};
88
89static char *gual3_fields[] = {
90  "login",
91  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
92  "status", "clearid", "class", "comments", "signature", "secure", "modtime",
93  "modby", "modwith", "created", "creator",
94};
95
96static char *gual11_fields[] = {
97  "login",
98  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
99  "status", "clearid", "class", "comments", "signature", "secure",
100  "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
101  "creator",
102};
103
104static char *gual_fields[] = {
105  "login",
106  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
107  "status", "clearid", "class", "comments", "signature", "secure",
108  "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
109  "modtime", "modby", "modwith", "created", "creator",
110};
111
112static char *gubl2_fields[] = {
113  "login",
114  "login", "unix_uid", "shell", "last", "first", "middle", "status",
115  "clearid", "class", "modtime", "modby", "modwith",
116};
117
118static char *gubl_fields[] = {
119  "login",
120  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
121  "status", "clearid", "class", "modtime", "modby", "modwith", "created",
122  "creator",
123};
124
125static struct validate gubl2_validate =
126{
127  0,
128  0,
129  0,
130  0,
131  0,
132  0,
133  access_login,
134  0,
135  followup_fix_modby,
136};
137
138static struct validate gubl_validate =
139{
140  0,
141  0,
142  0,
143  0,
144  0,
145  0,
146  access_login,
147  0,
148  followup_get_user,
149};
150
151static char *guau2_fields[] = {
152  "unix_uid",
153  "login", "unix_uid", "shell", "last", "first", "middle", "status",
154  "clearid", "class", "comments", "signature", "secure",
155  "modtime", "modby", "modwith",
156};
157
158static char *guau3_fields[] = {
159  "unix_uid",
160  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
161  "status", "clearid", "class", "comments", "signature", "secure",
162  "modtime", "modby", "modwith", "created", "creator",
163};
164
165static char *guau11_fields[] = {
166  "unix_uid",
167  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
168  "status", "clearid", "class", "comments", "signature", "secure",
169  "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
170  "creator",
171};
172
173static char *guau_fields[] = {
174  "unix_uid",
175  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
176  "status", "clearid", "class", "comments", "signature", "secure",
177  "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
178  "modtime", "modby", "modwith", "created", "creator",
179};
180
181static char *guan2_fields[] = {
182  "first", "last",
183  "login", "unix_uid", "shell", "last", "first", "middle", "status",
184  "clearid", "class", "comments", "signature", "secure",
185  "modtime", "modby", "modwith",
186};
187
188static char *guan3_fields[] = {
189  "first", "last",
190  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
191  "status", "clearid", "class", "comments", "signature", "secure",
192  "modtime", "modby", "modwith", "created", "creator",
193};
194
195static char *guan11_fields[] = {
196  "first", "last",
197  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
198  "status", "clearid", "class", "comments", "signature", "secure",
199  "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
200  "creator",
201};
202
203static char *guan_fields[] = {
204  "first", "last",
205  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
206  "status", "clearid", "class", "comments", "signature", "secure",
207  "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
208  "modtime", "modby", "modwith", "created", "creator",
209};
210
211static struct validate guan2_validate =
212{
213  0,
214  0,
215  0,
216  0,
217  0,
218  0,
219  0,
220  0,
221  followup_fix_modby,
222};
223
224static struct validate guan_validate =
225{
226  0,
227  0,
228  0,
229  0,
230  0,
231  0,
232  0,
233  0,
234  followup_get_user,
235};
236
237static char *guac2_fields[] = {
238  "class",
239  "login", "unix_uid", "shell", "last", "first", "middle", "status",
240  "clearid", "class", "comments", "signature", "secure",
241  "modtime", "modby", "modwith",
242};
243
244static char *guac3_fields[] = {
245  "class",
246  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
247  "status", "clearid", "class", "comments", "signature", "secure",
248  "modtime", "modby", "modwith", "created", "creator",
249};
250
251static char *guac11_fields[] = {
252  "class",
253  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
254  "status", "clearid", "class", "comments", "signature", "secure",
255  "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
256  "creator",
257};
258
259static char *guac_fields[] = {
260  "class",
261  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
262  "status", "clearid", "class", "comments", "signature", "secure",
263  "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
264  "modtime", "modby", "modwith", "created", "creator",
265};
266
267static char *guam2_fields[] = {
268  "clearid",
269  "login", "unix_uid", "shell", "last", "first", "middle", "status",
270  "clearid", "class", "comments", "signature", "secure",
271  "modtime", "modby", "modwith",
272};
273
274static char *guam3_fields[] = {
275  "clearid",
276  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
277  "status", "clearid", "class", "comments", "signature", "secure",
278  "modtime", "modby", "modwith", "created", "creator",
279};
280
281static char *guam11_fields[] = {
282  "clearid",
283  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
284  "status", "clearid", "class", "comments", "signature", "secure",
285  "winhomedir", "winprofiledir", "modtime", "modby", "modwith", "created",
286  "creator",
287};
288
289static char *guam_fields[] = {
290  "clearid",
291  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
292  "status", "clearid", "class", "comments", "signature", "secure",
293  "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
294  "modtime", "modby", "modwith", "created", "creator",
295};
296
297static char *guas_fields[] = {
298  "sponsor_type", "sponsor_name",
299  "login",
300};
301
302static struct valobj guas_valobj[] = {
303  {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
304  {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
305};
306
307static struct validate guas_validate = {
308  guas_valobj,
309  2,
310  0,
311  0,
312  0,
313  0,
314  access_member,
315  0,
316  get_user_account_by_sponsor,
317};
318
319static char *gubu2_fields[] = {
320  "unix_uid",
321  "login", "unix_uid", "shell", "last", "first", "middle", "status",
322  "clearid", "class", "modtime", "modby", "modwith",
323};
324
325static char *gubu_fields[] = {
326  "unix_uid",
327  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
328  "status", "clearid", "class", "modtime", "modby", "modwith", "created",
329  "creator",
330};
331
332static struct validate gubu2_validate =
333{
334  VOnum0,
335  1,
336  0,
337  0,
338  0,
339  0,
340  access_login,
341  0,
342  followup_fix_modby,
343};
344
345static struct validate gubu_validate =
346{
347  VOnum0,
348  1,
349  0,
350  0,
351  0,
352  0,
353  access_login,
354  0,
355  followup_get_user,
356};
357
358static char *gubn2_fields[] = {
359  "first", "last",
360  "login", "unix_uid", "shell", "last", "first", "middle", "status",
361  "clearid", "class", "modtime", "modby", "modwith",
362};
363
364static char *gubn_fields[] = {
365  "first", "last",
366  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
367  "status", "clearid", "class", "modtime", "modby", "modwith", "created",
368  "creator",
369};
370
371static struct validate gubn2_validate =
372{
373  0,
374  0,
375  0,
376  0,
377  0,
378  0,
379  0,
380  0,
381  followup_fix_modby,
382};
383
384static struct validate gubn_validate =
385{
386  0,
387  0,
388  0,
389  0,
390  0,
391  0,
392  0,
393  0,
394  followup_get_user,
395};
396
397static char *gubc2_fields[] = {
398  "class",
399  "login", "unix_uid", "shell", "last", "first", "middle", "status",
400  "clearid", "class", "modtime", "modby", "modwith",
401};
402
403static char *gubc_fields[] = {
404  "class",
405  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
406  "status", "clearid", "class", "modtime", "modby", "modwith",
407  "created", "creator",
408};
409
410static char *gubm2_fields[] = {
411  "clearid",
412  "login", "unix_uid", "shell", "last", "first", "middle", "status",
413  "clearid", "class", "modtime", "modby", "modwith",
414};
415
416static char *gubm_fields[] = {
417  "clearid",
418  "login", "unix_uid", "shell", "winconsoleshell", "last", "first",
419  "middle", "status", "clearid", "class", "modtime", "modby", "modwith",
420  "created", "creator",
421};
422
423static char *auac2_fields[] = {
424  "login", "unix_uid", "shell", "last", "first", "middle", "status",
425  "clearid", "class", "comments", "signature", "secure",
426};
427
428static char *auac3_fields[] = {
429  "login", "unix_uid", "shell", "winconsoleshell", "last", "first",
430  "middle", "status", "clearid", "class", "comments", "signature", "secure",
431};
432
433static char *auac11_fields[] = {
434  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
435  "status", "clearid", "class", "comments", "signature", "secure",
436  "winhomedir", "winprofiledir",
437};
438
439static char *auac_fields[] = {
440  "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
441  "status", "clearid", "class", "comments", "signature", "secure",
442  "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
443};
444
445static struct valobj auac2_valobj[] = {
446  {V_CHAR, 0, USERS_TABLE, "login"},
447  {V_NUM, 1},
448  {V_CHAR, 2, USERS_TABLE, "shell"},
449  {V_CHAR, 3, USERS_TABLE, "last"},
450  {V_CHAR, 4, USERS_TABLE, "first"},
451  {V_CHAR, 5, USERS_TABLE, "middle"},
452  {V_NUM, 6},
453  {V_CHAR, 7, USERS_TABLE, "clearid"},
454  {V_TYPE, 8, 0, "class", 0, MR_BAD_CLASS},
455  {V_ID, 9, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
456  {V_NUM, 11},
457};
458
459static struct valobj auac3_valobj[] = {
460  {V_CHAR, 0, USERS_TABLE, "login"},
461  {V_NUM, 1},
462  {V_CHAR, 2, USERS_TABLE, "shell"},
463  {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
464  {V_CHAR, 4, USERS_TABLE, "last"},
465  {V_CHAR, 5, USERS_TABLE, "first"},
466  {V_CHAR, 6, USERS_TABLE, "middle"},
467  {V_NUM, 7},
468  {V_CHAR, 8, USERS_TABLE, "clearid"},
469  {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
470  {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
471  {V_NUM, 12},
472};
473
474static struct valobj auac11_valobj[] = {
475  {V_CHAR, 0, USERS_TABLE, "login"},
476  {V_NUM, 1},
477  {V_CHAR, 2, USERS_TABLE, "shell"},
478  {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
479  {V_CHAR, 4, USERS_TABLE, "last"},
480  {V_CHAR, 5, USERS_TABLE, "first"},
481  {V_CHAR, 6, USERS_TABLE, "middle"},
482  {V_NUM, 7},
483  {V_CHAR, 8, USERS_TABLE, "clearid"},
484  {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
485  {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
486  {V_NUM, 12},
487  {V_LEN, 13, USERS_TABLE, "winhomedir"},
488  {V_LEN, 14, USERS_TABLE, "winprofiledir"},
489};
490
491static struct valobj auac_valobj[] = {
492  {V_CHAR, 0, USERS_TABLE, "login"},
493  {V_NUM, 1},
494  {V_CHAR, 2, USERS_TABLE, "shell"},
495  {V_CHAR, 3, USERS_TABLE, "winconsoleshell"},
496  {V_CHAR, 4, USERS_TABLE, "last"},
497  {V_CHAR, 5, USERS_TABLE, "first"},
498  {V_CHAR, 6, USERS_TABLE, "middle"},
499  {V_NUM, 7},
500  {V_CHAR, 8, USERS_TABLE, "clearid"},
501  {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
502  {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
503  {V_NUM, 12},
504  {V_LEN, 13, USERS_TABLE, "winhomedir"},
505  {V_LEN, 14, USERS_TABLE, "winprofiledir"},
506  {V_TYPE, 15, 0, "ace_type", 0, MR_ACE},
507  {V_TYPEDATA, 16, 0, 0, "list_id", MR_ACE},
508  {V_CHAR, 17, USERS_TABLE, "expiration"},
509};
510
511static struct validate auac2_validate = {
512  auac2_valobj,
513  11,
514  "login",
515  "login = '%s'",
516  1,
517  "users_id",
518  0,
519  setup_ausr,
520  followup_ausr,
521};
522
523static struct validate auac3_validate = {
524  auac3_valobj,
525  12,
526  "login",
527  "login = '%s'",
528  1,
529  "users_id",
530  0,
531  setup_ausr,
532  followup_ausr,
533};
534
535static struct validate auac11_validate = {
536  auac11_valobj,
537  14,
538  "login",
539  "login = '%s'",
540  1,
541  "users_id",
542  0,
543  setup_ausr,
544  followup_ausr,
545};
546
547static struct validate auac_validate = {
548  auac_valobj,
549  17,
550  "login",
551  "login = '%s'",
552  1,
553  "users_id",
554  0,
555  setup_ausr,
556  followup_ausr,
557};
558
559static struct validate ausr2_validate = {
560  auac2_valobj,
561  9,
562  "login",
563  "login = '%s'",
564  1,
565  "users_id",
566  0,
567  setup_ausr,
568  followup_ausr,
569};
570
571static struct validate ausr3_validate = {
572  auac3_valobj,
573  10,
574  "login",
575  "login = '%s'",
576  1,
577  "users_id",
578  0,
579  setup_ausr,
580  followup_ausr,
581};
582
583static struct validate ausr11_validate = {
584  auac11_valobj,
585  12,
586  "login",
587  "login = '%s'",
588  1,
589  "users_id",
590  0,
591  setup_ausr,
592  followup_ausr,
593};
594
595static struct validate ausr_validate = {
596  auac_valobj,
597  15,
598  "login",
599  "login = '%s'",
600  1,
601  "users_id",
602  0,
603  setup_ausr,
604  followup_ausr,
605};
606
607static char *rusr_fields[] = {
608  "unix_uid", "login", "pobox_type"
609};
610
611static struct valobj rusr_valobj[] = {
612  {V_NUM, 0},
613  {V_CHAR, 1, USERS_TABLE, "login"},
614};
615
616static struct validate rusr_validate = {
617  rusr_valobj,
618  2,
619  0,
620  0,
621  0,
622  0,
623  0,
624  register_user,
625  0,
626};
627
628static char *uuac2_fields[] = {
629  "login",
630  "newlogin", "unix_uid", "shell", "last", "first", "middle", "status",
631  "clearid", "class", "comments", "signature", "secure",
632};
633
634static char *uuac3_fields[] = {
635  "login",
636  "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
637  "middle", "status", "clearid", "class", "comments", "signature", "secure",
638};
639
640static char *uuac11_fields[] = {
641  "login",
642  "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
643  "middle", "status", "clearid", "class", "comments", "signature", "secure",
644  "winhomedir", "winprofiledir",
645};
646
647static char *uuac_fields[] = {
648  "login",
649  "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first",
650  "middle", "status", "clearid", "class", "comments", "signature", "secure",
651  "winhomedir", "winprofiledir", "sponsor_type", "sponsor_name", "expiration",
652};
653
654static struct valobj uuac2_valobj[] = {
655  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
656  {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
657  {V_NUM, 2},
658  {V_CHAR, 3, USERS_TABLE, "shell"},
659  {V_CHAR, 4, USERS_TABLE, "first"},
660  {V_CHAR, 5, USERS_TABLE, "last"},
661  {V_CHAR, 6, USERS_TABLE, "middle"},
662  {V_NUM, 7},
663  {V_CHAR, 8, USERS_TABLE, "clearid"},
664  {V_TYPE, 9, 0, "class", 0, MR_BAD_CLASS},
665  {V_ID, 10, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
666  {V_NUM, 12},
667};
668 
669static struct valobj uuac3_valobj[] = {
670  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
671  {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
672  {V_NUM, 2},
673  {V_CHAR, 3, USERS_TABLE, "shell"},
674  {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
675  {V_CHAR, 5, USERS_TABLE, "first"},
676  {V_CHAR, 6, USERS_TABLE, "last"},
677  {V_CHAR, 7, USERS_TABLE, "middle"},
678  {V_NUM, 8},
679  {V_CHAR, 9, USERS_TABLE, "clearid"},
680  {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
681  {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
682  {V_NUM, 13},
683};
684
685static struct valobj uuac11_valobj[] = {
686  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
687  {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
688  {V_NUM, 2},
689  {V_CHAR, 3, USERS_TABLE, "shell"},
690  {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
691  {V_CHAR, 5, USERS_TABLE, "first"},
692  {V_CHAR, 6, USERS_TABLE, "last"},
693  {V_CHAR, 7, USERS_TABLE, "middle"},
694  {V_NUM, 8},
695  {V_CHAR, 9, USERS_TABLE, "clearid"},
696  {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
697  {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
698  {V_NUM, 13},
699  {V_LEN, 14, USERS_TABLE, "winhomedir"},
700  {V_LEN, 15, USERS_TABLE, "winprofiledir"},
701};
702
703static struct valobj uuac_valobj[] = {
704  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
705  {V_RENAME, 1, USERS_TABLE, "login", "users_id", MR_NOT_UNIQUE},
706  {V_NUM, 2},
707  {V_CHAR, 3, USERS_TABLE, "shell"},
708  {V_CHAR, 4, USERS_TABLE, "winconsoleshell"},
709  {V_CHAR, 5, USERS_TABLE, "first"},
710  {V_CHAR, 6, USERS_TABLE, "last"},
711  {V_CHAR, 7, USERS_TABLE, "middle"},
712  {V_NUM, 8},
713  {V_CHAR, 9, USERS_TABLE, "clearid"},
714  {V_TYPE, 10, 0, "class", 0, MR_BAD_CLASS},
715  {V_ID, 11, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
716  {V_NUM, 13},
717  {V_LEN, 14, USERS_TABLE, "winhomedir"},
718  {V_LEN, 15, USERS_TABLE, "winprofiledir"},
719  {V_TYPE, 16, 0, "ace_type", 0, MR_ACE},
720  {V_TYPEDATA, 17, 0, 0, "list_id", MR_ACE},
721  {V_CHAR, 18, USERS_TABLE, "expiration"},
722};
723
724static struct validate uuac2_validate = {
725  uuac2_valobj,
726  12,
727  0,
728  0,
729  0,
730  "users_id",
731  0,
732  setup_ausr,
733  set_modtime_by_id,
734};
735
736static struct validate uuac3_validate = {
737  uuac3_valobj,
738  13,
739  0,
740  0,
741  0,
742  "users_id",
743  0,
744  setup_ausr,
745  set_modtime_by_id,
746};
747
748static struct validate uuac11_validate = {
749  uuac11_valobj,
750  15,
751  0,
752  0,
753  0,
754  "users_id",
755  access_update_user,
756  setup_ausr,
757  set_modtime_by_id,
758};
759
760static struct validate uuac_validate = {
761  uuac_valobj,
762  18,
763  0,
764  0,
765  0,
766  "users_id",
767  access_update_user,
768  setup_ausr,
769  set_modtime_by_id,
770};
771
772static struct validate uusr2_validate = {
773  uuac2_valobj,
774  10,
775  0,
776  0,
777  0,
778  "users_id",
779  0,
780  setup_ausr,
781  set_modtime_by_id,
782};
783
784static struct validate uusr3_validate = {
785  uuac3_valobj,
786  11,
787  0,
788  0,
789  0,
790  "users_id",
791  0,
792  setup_ausr,
793  set_modtime_by_id,
794};
795
796static struct validate uusr11_validate = {
797  uuac11_valobj,
798  13,
799  0,
800  0,
801  0,
802  "users_id",
803  0,
804  setup_ausr,
805  set_modtime_by_id,
806};
807
808static struct validate uusr_validate = {
809  uuac_valobj,
810  16,
811  0,
812  0,
813  0,
814  "users_id",
815  0,
816  setup_ausr,
817  set_modtime_by_id,
818};
819
820static char *uush_fields[] = {
821  "login",
822  "shell",
823};
824
825static struct valobj uush_valobj[] = {
826  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
827  {V_CHAR, 1, USERS_TABLE, "shell"},
828};
829
830static struct validate uush_validate = {
831  uush_valobj,
832  2,
833  0,
834  0,
835  0,
836  "users_id",
837  access_user,
838  0,
839  set_finger_modtime,
840};
841
842static char *uuws_fields[] = {
843  "login",
844  "winconsoleshell",
845};
846
847static struct valobj uuws_valobj[] = {
848  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
849  {V_CHAR, 1, USERS_TABLE, "winconsoleshell"},
850};
851
852static struct validate uuws_validate = {
853  uuws_valobj,
854  2,
855  0,
856  0,
857  0,
858  "users_id",
859  access_user,
860  0,
861  set_finger_modtime,
862};
863
864static char *uust_fields[] = {
865  "login",
866  "status",
867};
868
869static char *uuss_fields[] = {
870  "login",
871  "secure",
872};
873
874static struct valobj uust_valobj[] = {
875  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
876  {V_NUM, 1},
877  {V_NUM, 2},
878};
879
880static struct validate uust_validate = {
881  uust_valobj,
882  2,
883  0,
884  0,
885  0,
886  "users_id",
887  0,
888  0,
889  set_modtime_by_id,
890};
891
892static char *dusr_fields[] = {
893  "login",
894};
895
896static struct validate dusr_validate = {
897  VOuser0,
898  1,
899  0,
900  0,
901  0,
902  0,
903  0,
904  setup_dusr,
905  0,
906};
907
908static char *aurv_fields[] = {
909  "login", "reservation",
910};
911
912static struct validate aurv_validate = {
913  VOuser0,
914  1,
915  0,
916  0,
917  0,
918  "users_id",
919  0,
920  0,
921  do_user_reservation,
922};
923
924static char *gurv_fields[] = {
925  "login",
926  "reservation",
927};
928
929static struct validate gurv_validate = {
930  VOuser0,
931  1,
932  0,
933  0,
934  0,
935  0,
936  0,
937  0,
938  get_user_reservations,
939};
940
941static char *gubr_fields[] = {
942  "reservation",
943  "login",
944};
945
946static struct validate gubr_validate = {
947  0,
948  0,
949  0,
950  0,
951  0,
952  0,
953  0,
954  0,
955  get_user_by_reservation,
956};
957
958static char *gkum_fields[] = { "login", "kerberos",
959                                   "login", "kerberos" };
960
961static char *akum_fields[] = { "login", "kerberos" };
962
963static struct valobj akum_valobj[] =
964{
965  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
966  {V_ID, 1, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
967};
968
969static struct validate akum_validate =
970{
971  akum_valobj,
972  2,
973  "users_id",
974  "users_id = %d or string_id = %d",
975  2,
976  "users_id",
977  access_user,
978  0,
979  0,
980};
981
982static struct validate dkum_validate =
983{
984  akum_valobj,
985  2,
986  "users_id",
987  "users_id = %d and string_id = %d",
988  2,
989  "users_id",
990  access_user,
991  0,
992  0,
993};
994
995static char *gfbl_fields[] = {
996  "login",
997  "login", "fullname", "nickname", "home_addr",
998  "home_phone", "office_addr", "office_phone", "department",
999  "affiliation", "modtime", "modby", "modwith",
1000};
1001
1002static struct validate gfbl_validate = {
1003  VOuser0,
1004  1,
1005  0,
1006  0,
1007  0,
1008  0,
1009  access_user,
1010  0,
1011  followup_fix_modby,
1012};
1013
1014static char *ufbl_fields[] = {
1015  "login",
1016  "fullname", "nickname", "home_addr",
1017  "home_phone", "office_addr", "office_phone", "department",
1018  "affiliation",
1019};
1020
1021static struct valobj ufbl_valobj[] = {
1022  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
1023  {V_LEN, 1, USERS_TABLE, "fullname"},
1024  {V_LEN, 2, USERS_TABLE, "nickname"},
1025  {V_LEN, 3, USERS_TABLE, "home_addr"},
1026  {V_LEN, 4, USERS_TABLE, "home_phone"},
1027  {V_LEN, 5, USERS_TABLE, "office_addr"},
1028  {V_LEN, 6, USERS_TABLE, "office_phone"},
1029  {V_LEN, 7, USERS_TABLE, "department"},
1030  {V_LEN, 8, USERS_TABLE, "affiliation"},
1031};
1032
1033static struct validate ufbl_validate = {
1034  ufbl_valobj,
1035  9,
1036  0,
1037  0,
1038  0,
1039  0,
1040  access_user,
1041  0,
1042  set_finger_modtime,
1043};
1044
1045static char *gpob_fields[] = {
1046  "login",
1047  "login", "type", "box", "address", "modtime", "modby", "modwith",
1048};
1049
1050static struct validate gpob_validate = {
1051  VOuser0,
1052  1,
1053  "potype",
1054  "potype != 'NONE' and users_id = %d",
1055  1,
1056  0,
1057  access_user,
1058  0,
1059  followup_gpob,
1060};
1061
1062static char *gpox_fields[] = {
1063  "login", "type", "box",
1064};
1065
1066static struct validate gpox_validate = {
1067  0,
1068  0,
1069  0,
1070  0,
1071  0,
1072  0,
1073  0,
1074  0,
1075  followup_gpob,
1076};
1077
1078static char *spob_fields[] = {
1079  "login", "type", "box",
1080};
1081
1082static struct valobj spob_valobj[] = {
1083  {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
1084  {V_TYPE, 1, 0, "pobox", 0, MR_TYPE},
1085};
1086
1087static struct validate spob_validate =  /* SET_POBOX */
1088{
1089  spob_valobj,
1090  2,
1091  0,
1092  0,
1093  0,
1094  0,
1095  access_spob,
1096  0,
1097  set_pobox,
1098};
1099
1100static struct validate spop_validate =  /* SET_POBOX_POP */
1101{
1102  VOuser0,
1103  1,
1104  0,
1105  0,
1106  0,
1107  0,
1108  access_user,
1109  0,
1110  set_pobox_pop,
1111};
1112
1113static struct validate dpob_validate =  /* DELETE_POBOX */
1114{
1115  VOuser0,
1116  1,
1117  0,
1118  0,
1119  0,
1120  0,
1121  access_user,
1122  setup_dpob,
1123  set_pobox_modtime,
1124};
1125
1126static char *gmac_fields[] = {
1127  "name",
1128  "name", "type", "modtime", "modby", "modwith",
1129};
1130
1131static char *ghst2_fields[] = {
1132  "name", "address", "location", "network",
1133  "name", "vendor", "model", "os", "location", "contact", "use",
1134  "status", "status_change", "network", "address", "ace_type",
1135  "ace_name", "admin_comment", "ops_comment", "created", "creator",
1136  "inuse", "modtime", "modby", "modwith",
1137};
1138
1139static char *ghbh2_fields[] = {
1140  "hwaddr",
1141  "name", "vendor", "model", "os", "location", "contact", "use",
1142  "status", "status_change", "network", "address", "ace_type",
1143  "ace_name", "admin_comment", "ops_comment", "created", "creator",
1144  "inuse", "modtime", "modby", "modwith",
1145};
1146
1147static char *ghst6_fields[] = {
1148  "name", "address", "location", "network",
1149  "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1150  "use", "status", "status_change", "network", "address", "ace_type",
1151  "ace_name", "admin_comment", "ops_comment", "created", "creator",
1152  "inuse", "modtime", "modby", "modwith",
1153};
1154
1155static char *ghbh6_fields[] = {
1156  "hwaddr",
1157  "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1158  "use", "status", "status_change", "network", "address", "ace_type",
1159  "ace_name", "admin_comment", "ops_comment", "created", "creator",
1160  "inuse", "modtime", "modby", "modwith",
1161};
1162
1163static char *ghst_fields[] = {
1164  "name", "address", "location", "network",
1165  "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1166  "account_number", "use", "status", "status_change", "network", "address",
1167  "ace_type", "ace_name", "admin_comment", "ops_comment", "created", "creator",
1168  "inuse", "modtime", "modby", "modwith",
1169};
1170
1171static char *ghbh_fields[] = {
1172  "hwaddr",
1173  "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1174  "account_number", "use", "status", "status_change", "network", "address",
1175  "ace_type", "ace_name", "admin_comment", "ops_comment", "created", "creator",
1176  "inuse", "modtime", "modby", "modwith",
1177};
1178
1179static char *ghba_fields[] = {
1180  "account_number",
1181  "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1182  "account_number", "use", "status", "status_change", "network", "address",
1183  "ace_type", "ace_name", "admin_comment", "ops_comment", "created", "creator",
1184  "inuse", "modtime", "modby", "modwith",
1185};
1186
1187static struct validate ghst_validate = {
1188  0,
1189  0,
1190  0,
1191  0,
1192  0,
1193  0,
1194  0,
1195  setup_ghst,
1196  followup_ghst,
1197};
1198
1199static char *ghha_fields[] = {
1200  "name",
1201  "hwaddr",
1202};
1203
1204static char *ahst2_fields[] = {
1205  "name", "vendor", "model", "os", "location", "contact", "use",
1206  "status", "subnet", "address", "ace_type", "ace_name",
1207  "admin_comment", "ops_comment",
1208};
1209
1210static struct valobj ahst2_valobj[] = {
1211  {V_CHAR, 0, MACHINE_TABLE, "name"},
1212  {V_CHAR, 1, MACHINE_TABLE, "vendor"},
1213  {V_CHAR, 2, MACHINE_TABLE, "model"},
1214  {V_CHAR, 3, MACHINE_TABLE, "os"},
1215  {V_CHAR, 4, MACHINE_TABLE, "location"},
1216  {V_CHAR, 5, MACHINE_TABLE, "contact"},
1217  {V_NUM, 6},
1218  {V_NUM, 7},
1219  {V_ID, 8, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1220  {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1221  {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
1222  {V_ID, 12, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1223  {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1224};
1225
1226static struct validate ahst2_validate = {
1227  ahst2_valobj,
1228  13,
1229  "name",
1230  "name = UPPER('%s')",
1231  1,
1232  "mach_id",
1233  access_host,
1234  setup_ahst,
1235  set_uppercase_modtime,
1236};
1237
1238static char *ahst6_fields[] = {
1239  "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1240  "use", "status", "subnet", "address", "ace_type", "ace_name",
1241  "admin_comment", "ops_comment",
1242};
1243
1244static struct valobj ahst6_valobj[] = {
1245  {V_CHAR, 0, MACHINE_TABLE, "name"},
1246  {V_CHAR, 1, MACHINE_TABLE, "vendor"},
1247  {V_CHAR, 2, MACHINE_TABLE, "model"},
1248  {V_CHAR, 3, MACHINE_TABLE, "os"},
1249  {V_CHAR, 4, MACHINE_TABLE, "location"},
1250  {V_CHAR, 5, MACHINE_TABLE, "contact"},
1251  {V_CHAR, 6, MACHINE_TABLE, "billing_contact"},
1252  {V_NUM, 7},
1253  {V_NUM, 8},
1254  {V_ID, 9, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1255  {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
1256  {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
1257  {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1258  {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1259};
1260
1261static struct validate ahst6_validate = {
1262  ahst6_valobj,
1263  14,
1264  "name",
1265  "name = UPPER('%s')",
1266  1,
1267  "mach_id",
1268  access_host,
1269  setup_ahst,
1270  set_uppercase_modtime,
1271};
1272
1273static char *ahst_fields[] = {
1274  "name", "vendor", "model", "os", "location", "contact", "billing_contact",
1275  "account_number", "use", "status", "subnet", "address", "ace_type",
1276  "ace_name", "admin_comment", "ops_comment",
1277};
1278
1279static struct valobj ahst_valobj[] = {
1280  {V_CHAR, 0, MACHINE_TABLE, "name"},
1281  {V_CHAR, 1, MACHINE_TABLE, "vendor"},
1282  {V_CHAR, 2, MACHINE_TABLE, "model"},
1283  {V_CHAR, 3, MACHINE_TABLE, "os"},
1284  {V_CHAR, 4, MACHINE_TABLE, "location"},
1285  {V_CHAR, 5, MACHINE_TABLE, "contact"},
1286  {V_CHAR, 6, MACHINE_TABLE, "billing_contact"},
1287  {V_CHAR, 7, MACHINE_TABLE, "account_number"},
1288  {V_NUM, 8},
1289  {V_NUM, 9},
1290  {V_ID, 10, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1291  {V_TYPE, 12, 0, "ace_type", 0, MR_ACE},
1292  {V_TYPEDATA, 13, 0, 0, 0, MR_ACE},
1293  {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1294  {V_ID, 15, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1295};
1296
1297static struct validate ahst_validate = {
1298  ahst_valobj,
1299  15,
1300  "name",
1301  "name = UPPER('%s')",
1302  1,
1303  "mach_id",
1304  access_host,
1305  setup_ahst,
1306  set_uppercase_modtime,
1307};
1308
1309static char *uhst2_fields[] = {
1310  "name",
1311  "newname", "vendor", "model", "os", "location", "contact", "use",
1312  "status", "subnet", "address", "ace_type", "ace_name",
1313  "admin_comment", "ops_comment",
1314};
1315
1316static struct valobj uhst2_valobj[] = {
1317  {V_CHAR, 0, MACHINE_TABLE, "name"},
1318  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1319  {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
1320  {V_CHAR, 2, MACHINE_TABLE, "vendor"},
1321  {V_CHAR, 3, MACHINE_TABLE, "model"},
1322  {V_CHAR, 4, MACHINE_TABLE, "os"},
1323  {V_CHAR, 5, MACHINE_TABLE, "location"},
1324  {V_CHAR, 6, MACHINE_TABLE, "contact"},
1325  {V_NUM, 7},
1326  {V_NUM, 8},
1327  {V_ID, 9, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1328  {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
1329  {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
1330  {V_ID, 13, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1331  {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1332};
1333
1334static struct validate uhst2_validate = {
1335  uhst2_valobj,
1336  15,
1337  0,
1338  0,
1339  0,
1340  "mach_id",
1341  access_host,
1342  setup_ahst,
1343  set_modtime_by_id,
1344};
1345
1346static char *uhst6_fields[] = {
1347  "name",
1348  "newname", "vendor", "model", "os", "location", "contact", "billing_contact",
1349  "use", "status", "subnet", "address", "ace_type", "ace_name",
1350  "admin_comment", "ops_comment",
1351};
1352
1353static struct valobj uhst6_valobj[] = {
1354  {V_CHAR, 0, MACHINE_TABLE, "name"},
1355  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1356  {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
1357  {V_CHAR, 2, MACHINE_TABLE, "vendor"},
1358  {V_CHAR, 3, MACHINE_TABLE, "model"},
1359  {V_CHAR, 4, MACHINE_TABLE, "os"},
1360  {V_CHAR, 5, MACHINE_TABLE, "location"},
1361  {V_CHAR, 6, MACHINE_TABLE, "contact"},
1362  {V_CHAR, 7, MACHINE_TABLE, "billing_contact"},
1363  {V_NUM, 8},
1364  {V_NUM, 9},
1365  {V_ID, 10, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1366  {V_TYPE, 12, 0, "ace_type", 0, MR_ACE},
1367  {V_TYPEDATA, 13, 0, 0, 0, MR_ACE},
1368  {V_ID, 14, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1369  {V_ID, 15, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1370};
1371
1372static struct validate uhst6_validate = {
1373  uhst6_valobj,
1374  16,
1375  0,
1376  0,
1377  0,
1378  "mach_id",
1379  access_host,
1380  setup_ahst,
1381  set_modtime_by_id,
1382};
1383
1384static char *uhst_fields[] = {
1385  "name",
1386  "newname", "vendor", "model", "os", "location", "contact", "billing_contact",
1387  "account_number", "use", "status", "subnet", "address", "ace_type",
1388  "ace_name", "admin_comment", "ops_comment",
1389};
1390
1391static struct valobj uhst_valobj[] = {
1392  {V_CHAR, 0, MACHINE_TABLE, "name"},
1393  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1394  {V_RENAME, 1, MACHINE_TABLE, "name", "mach_id", MR_NOT_UNIQUE},
1395  {V_CHAR, 2, MACHINE_TABLE, "vendor"},
1396  {V_CHAR, 3, MACHINE_TABLE, "model"},
1397  {V_CHAR, 4, MACHINE_TABLE, "os"},
1398  {V_CHAR, 5, MACHINE_TABLE, "location"},
1399  {V_CHAR, 6, MACHINE_TABLE, "contact"},
1400  {V_CHAR, 7, MACHINE_TABLE, "billing_contact"},
1401  {V_CHAR, 8, MACHINE_TABLE, "account_number"},
1402  {V_NUM, 9},
1403  {V_NUM, 10},
1404  {V_ID, 11, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
1405  {V_TYPE, 13, 0, "ace_type", 0, MR_ACE},
1406  {V_TYPEDATA, 14, 0, 0, 0, MR_ACE},
1407  {V_ID, 15, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1408  {V_ID, 16, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
1409};
1410
1411static struct validate uhst_validate = {
1412  uhst_valobj,
1413  17,
1414  0,
1415  0,
1416  0,
1417  "mach_id",
1418  access_host,
1419  setup_ahst,
1420  set_modtime_by_id,
1421};
1422
1423static char *uhha_fields[] = {
1424  "name",
1425  "hwaddr"
1426};
1427
1428static struct valobj uhha_valobj[] = {
1429  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1430  {V_CHAR, 1, MACHINE_TABLE, "hwaddr"},
1431};
1432
1433static struct validate uhha_validate = {
1434  uhha_valobj,
1435  2,
1436  0,
1437  0,
1438  0,
1439  "mach_id",
1440  0,
1441  setup_uhha,
1442  set_modtime_by_id,
1443};
1444
1445static char *dhst_fields[] = {
1446  "name",
1447};
1448
1449static struct validate dhst_validate = {
1450  VOmach0,
1451  1,
1452  0,
1453  0,
1454  0,
1455  0,
1456  0,
1457  setup_dmac,
1458  0,
1459};
1460
1461static char *ghal_fields[] = {
1462  "alias", "canonical_hostname",
1463  "alias", "canonical_hostname"
1464};
1465
1466static struct validate ghal_validate = {
1467  0,
1468  0,
1469  0,
1470  0,
1471  0,
1472  0,
1473  access_ahal,
1474  0,
1475  0,
1476};
1477
1478static struct valobj ahal_valobj[] = {
1479  {V_CHAR, 0, HOSTALIAS_TABLE, "name"},
1480  {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1481};
1482
1483static struct validate ahal_validate = {
1484  ahal_valobj,
1485  2,
1486  "name",
1487  "name = UPPER('%s')",
1488  1,
1489  "mach_id",
1490  access_ahal,
1491  setup_ahal,
1492  0,
1493};
1494
1495static struct valobj dhal_valobj[] = {
1496  {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1497};
1498
1499static struct validate dhal_validate = {
1500  dhal_valobj,
1501  1,
1502  "name",
1503  "name = UPPER('%s') AND mach_id = %d",
1504  2,
1505  "mach_id",
1506  access_ahal,
1507  0,
1508  0,
1509};
1510
1511static char *gsnt2_fields[] = {
1512  "name",
1513  "name", "description", "address", "mask", "low", "high", "prefix",
1514  "ace_type", "ace_name", "modtime", "modby", "modwith"
1515};
1516
1517static char *gsnt_fields[] = {
1518  "name",
1519  "name", "description", "status", "contact", "account_number", "address",
1520  "mask", "low", "high", "prefix", "ace_type", "ace_name", "modtime",
1521  "modby", "modwith"
1522};
1523
1524static struct validate gsnt_validate = {
1525  0,
1526  0,
1527  0,
1528  0,
1529  0,
1530  0,
1531  access_snt,
1532  0,
1533  followup_gsnt,
1534};
1535
1536static char *asnt2_fields[] = {
1537  "name", "description", "address", "mask", "low", "high", "prefix",
1538  "ace_type", "ace_name",
1539};
1540
1541static struct valobj asnt2_valobj[] = {
1542  {V_CHAR, 0, SUBNET_TABLE, "name"},
1543  {V_LEN, 1, SUBNET_TABLE, "description"},
1544  {V_NUM, 2},
1545  {V_NUM, 3},
1546  {V_NUM, 4},
1547  {V_NUM, 5},
1548  {V_LEN, 6, SUBNET_TABLE, "prefix"},
1549  {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
1550  {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
1551};
1552
1553static struct validate asnt2_validate =
1554{
1555  asnt2_valobj,
1556  9,
1557  "name",
1558  "name = UPPER('%s')",
1559  1,
1560  "snet_id",
1561  0,
1562  prefetch_value,
1563  set_uppercase_modtime,
1564};
1565
1566static char *asnt_fields[] = {
1567  "name", "description", "status", "contact", "account_number", "address",
1568  "mask", "low", "high", "prefix", "ace_type", "ace_name",
1569};
1570
1571static struct valobj asnt_valobj[] = {
1572  {V_CHAR, 0, SUBNET_TABLE, "name"},
1573  {V_LEN, 1, SUBNET_TABLE, "description"},
1574  {V_NUM, 2},
1575  {V_CHAR, 3, SUBNET_TABLE, "contact"},
1576  {V_CHAR, 4, SUBNET_TABLE, "account_number"},
1577  {V_NUM, 5},
1578  {V_NUM, 6},
1579  {V_NUM, 7},
1580  {V_NUM, 8},
1581  {V_LEN, 9, SUBNET_TABLE, "prefix"},
1582  {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1583  {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
1584};
1585
1586static struct validate asnt_validate =
1587{
1588  asnt_valobj,
1589  12,
1590  "name",
1591  "name = UPPER('%s')",
1592  1,
1593  "snet_id",
1594  0,
1595  setup_asnt,
1596  set_uppercase_modtime,
1597};
1598
1599static char *usnt2_fields[] = {
1600  "name",
1601  "newname", "description", "address", "mask", "low", "high", "prefix",
1602  "ace_type", "ace_name",
1603};
1604
1605static struct valobj usnt2_valobj[] = {
1606  {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_NO_MATCH},
1607  {V_RENAME, 1, SUBNET_TABLE, "name", "snet_id", MR_NOT_UNIQUE},
1608  {V_LEN, 2, SUBNET_TABLE, "description"},
1609  {V_NUM, 3},
1610  {V_NUM, 4},
1611  {V_NUM, 5},
1612  {V_NUM, 6},
1613  {V_LEN, 7, SUBNET_TABLE, "prefix"},
1614  {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1615  {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
1616};
1617
1618static struct validate usnt2_validate =
1619{
1620  usnt2_valobj,
1621  10,
1622  "name",
1623  "snet_id = %d",
1624  1,
1625  "snet_id",
1626  0,
1627  0,
1628  set_modtime_by_id,
1629};
1630
1631static char *usnt_fields[] = {
1632  "name",
1633  "newname", "description", "status", "contact", "account_number", "address",
1634  "mask", "low", "high", "prefix", "ace_type", "ace_name",
1635};
1636
1637static struct valobj usnt_valobj[] = {
1638  {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_NO_MATCH},
1639  {V_RENAME, 1, SUBNET_TABLE, "name", "snet_id", MR_NOT_UNIQUE},
1640  {V_LEN, 2, SUBNET_TABLE, "description"},
1641  {V_NUM, 3},
1642  {V_CHAR, 4, SUBNET_TABLE, "contact"},
1643  {V_CHAR, 5, SUBNET_TABLE, "account_number"},
1644  {V_NUM, 6},
1645  {V_NUM, 7},
1646  {V_NUM, 8},
1647  {V_NUM, 9},
1648  {V_LEN, 10, SUBNET_TABLE, "prefix"},
1649  {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
1650  {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
1651};
1652
1653static struct validate usnt_validate =
1654{
1655  usnt_valobj,
1656  13,
1657  "name",
1658  "snet_id = %d",
1659  1,
1660  "snet_id",
1661  0,
1662  setup_asnt,
1663  set_modtime_by_id,
1664};
1665
1666static char *dsnt_fields[] = {
1667  "name",
1668};
1669
1670static struct validate dsnt_validate = {
1671  VOsnet0,
1672  1,
1673  0,
1674  0,
1675  0,
1676  0,
1677  0,
1678  setup_dsnt,
1679  0,
1680};
1681
1682static char *gclu_fields[] = {
1683  "name",
1684  "name", "description", "location", "modtime", "modby", "modwith",
1685};
1686
1687static char *aclu_fields[] = {
1688  "name", "description", "location",
1689};
1690
1691static struct valobj aclu_valobj[] = {
1692  {V_CHAR, 0, CLUSTERS_TABLE, "name"},
1693  {V_LEN, 1, CLUSTERS_TABLE, "description"},
1694  {V_LEN, 2, CLUSTERS_TABLE, "location"},
1695};
1696
1697static struct validate aclu_validate =
1698{
1699  aclu_valobj,
1700  3,
1701  "name",
1702  "name = '%s'",
1703  1,
1704  "clu_id",
1705  0,
1706  prefetch_value,
1707  set_modtime,
1708};
1709
1710static char *uclu_fields[] = {
1711  "name",
1712  "newname", "description", "location",
1713};
1714
1715static struct valobj uclu_valobj[] = {
1716  {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1717  {V_RENAME, 1, CLUSTERS_TABLE, "name", "clu_id", MR_NOT_UNIQUE},
1718  {V_LEN, 2, CLUSTERS_TABLE, "description"},
1719  {V_LEN, 3, CLUSTERS_TABLE, "location"},
1720};
1721
1722static struct validate uclu_validate = {
1723  uclu_valobj,
1724  4,
1725  0,
1726  0,
1727  0,
1728  "clu_id",
1729  0,
1730  0,
1731  set_modtime_by_id,
1732};
1733
1734static char *dclu_fields[] = {
1735  "name",
1736};
1737
1738static struct validate dclu_validate = {
1739  VOclu0,
1740  1,
1741  0,
1742  0,
1743  0,
1744  0,
1745  0,
1746  setup_dclu,
1747  0,
1748};
1749
1750static char *gmcm_fields[] = {
1751  "machine", "cluster",
1752  "machine", "cluster",
1753};
1754
1755static struct valobj amtc_valobj[] =    /* ADD_MACHINE_TO_CLUSTER */
1756{                                       /* DELETE_MACHINE_FROM_CLUSTER */
1757  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1758  {V_ID, 1, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1759};
1760
1761static struct validate amtc_validate = /* for amtc and dmfc */
1762{
1763  amtc_valobj,
1764  2,
1765  "mach_id",
1766  "mach_id = %d and clu_id = %d",
1767  2,
1768  0,
1769  0,
1770  0,
1771  set_mach_modtime_by_id,
1772};
1773
1774static char *gcld_fields[] = {
1775  "cluster", "serv_label",
1776  "cluster", "serv_label", "serv_cluster",
1777};
1778
1779static char *acld_fields[] = {
1780  "cluster", "serv_label", "serv_cluster",
1781};
1782
1783static struct valobj acld_valobj[] =
1784{
1785  {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
1786  {V_CHAR, 1, SVC_TABLE, "serv_label"},
1787  {V_CHAR, 2, SVC_TABLE, "serv_cluster"}
1788};
1789
1790static struct validate acld_validate =
1791{
1792  acld_valobj,
1793  3,
1794  "clu_id",
1795  "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
1796  3,
1797  0,
1798  0,
1799  0,
1800  set_cluster_modtime_by_id,
1801};
1802
1803static struct validate dcld_validate =
1804{
1805  VOclu0,
1806  1,
1807  "clu_id",
1808  "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
1809  3,
1810  0,
1811  0,
1812  0,
1813  set_cluster_modtime_by_id,
1814};
1815
1816static char *glin2_fields[] = {
1817  "name",
1818  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1819  "ace_type", "ace_name", "description", "modtime", "modby", "modwith",
1820};
1821
1822static char *glin3_fields[] = {
1823  "name",
1824  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1825  "nfsgroup", "ace_type", "ace_name", "description", "modtime", "modby",
1826  "modwith",
1827};
1828
1829static char *glin4_fields[] = {
1830  "name",
1831  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1832  "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name",
1833  "description", "modtime", "modby", "modwith",
1834};
1835
1836static char *glin_fields[] = {
1837  "name",
1838  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1839  "nfsgroup", "mailman", "mailman_server", "ace_type", "ace_name",
1840  "memace_type", "memace_name", "description", "modtime", "modby", "modwith",
1841};
1842
1843static struct validate glin_validate = {
1844  0,
1845  0,
1846  0,
1847  0,
1848  0,
1849  0,
1850  access_vis_list_by_name,
1851  0,
1852  followup_glin,
1853};
1854
1855static char *alis2_fields[] = {
1856  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1857  "ace_type", "ace_name", "description",
1858};
1859
1860static struct valobj alis2_valobj[] = {
1861  {V_CHAR, 0, LIST_TABLE, "name"},
1862  {V_NUM, 1},
1863  {V_NUM, 2},
1864  {V_NUM, 3},
1865  {V_NUM, 4},
1866  {V_NUM, 5},
1867  {V_NUM, 6},
1868  {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
1869  {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
1870  {V_LEN, 9, LIST_TABLE, "description"},
1871};
1872
1873static struct validate alis2_validate = {
1874  alis2_valobj,
1875  10,
1876  "name",
1877  "name = '%s'",
1878  1,
1879  "list_id",
1880  0,
1881  setup_alis,
1882  set_modtime,
1883};
1884
1885static char *alis3_fields[] = {
1886  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1887  "nfsgroup", "ace_type", "ace_name", "description",
1888};
1889
1890static struct valobj alis3_valobj[] = {
1891  {V_CHAR, 0, LIST_TABLE, "name"},
1892  {V_NUM, 1},
1893  {V_NUM, 2},
1894  {V_NUM, 3},
1895  {V_NUM, 4},
1896  {V_NUM, 5},
1897  {V_NUM, 6},
1898  {V_NUM, 7},
1899  {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1900  {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1901  {V_LEN, 10, LIST_TABLE, "description"},
1902};
1903
1904static struct validate alis3_validate = {
1905  alis3_valobj,
1906  11,
1907  "name",
1908  "name = '%s'",
1909  1,
1910  "list_id",
1911  0,
1912  setup_alis,
1913  set_modtime,
1914};
1915
1916static char *alis4_fields[] = {
1917  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1918  "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name",
1919  "description",
1920};
1921
1922static struct valobj alis4_valobj[] = {
1923  {V_CHAR, 0, LIST_TABLE, "name"},
1924  {V_NUM, 1},
1925  {V_NUM, 2},
1926  {V_NUM, 3},
1927  {V_NUM, 4},
1928  {V_NUM, 5},
1929  {V_NUM, 6},
1930  {V_NUM, 7},
1931  {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
1932  {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
1933  {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1934  {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
1935  {V_LEN, 12, LIST_TABLE, "description"},
1936};
1937
1938static struct validate alis4_validate = {
1939  alis4_valobj,
1940  13,
1941  "name",
1942  "name = '%s'",
1943  1,
1944  "list_id",
1945  0,
1946  setup_alis,
1947  set_modtime,
1948};
1949
1950static char *alis_fields[] = {
1951  "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1952  "nfsgroup", "mailman", "mailman_server", "ace_type", "ace_name",
1953  "memace_type", "memace_name", "description",
1954};
1955
1956static struct valobj alis_valobj[] = {
1957  {V_CHAR, 0, LIST_TABLE, "name"},
1958  {V_NUM, 1},
1959  {V_NUM, 2},
1960  {V_NUM, 3},
1961  {V_NUM, 4},
1962  {V_NUM, 5},
1963  {V_NUM, 6},
1964  {V_NUM, 7},
1965  {V_NUM, 8},
1966  {V_ID, 9, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1967  {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
1968  {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
1969  {V_TYPE, 12, 0, "ace_type", 0, MR_ACE},
1970  {V_TYPEDATA, 13, 0, 0, "list_id", MR_ACE},
1971  {V_LEN, 14, LIST_TABLE, "description"},
1972};
1973
1974static struct validate alis_validate = {
1975  alis_valobj,
1976  15,
1977  "name",
1978  "name = '%s'",
1979  1,
1980  "list_id",
1981  0,
1982  setup_alis,
1983  set_modtime,
1984};
1985
1986static char *ulis2_fields[] = {
1987  "name",
1988  "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1989  "ace_type", "ace_name", "description",
1990};
1991
1992static struct valobj ulis2_valobj[] = {
1993  {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
1994  {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
1995  {V_NUM, 2},
1996  {V_NUM, 3},
1997  {V_NUM, 4},
1998  {V_NUM, 5},
1999  {V_NUM, 6},
2000  {V_NUM, 7},
2001  {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
2002  {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
2003  {V_LEN, 10, LIST_TABLE, "description"},
2004};
2005
2006static struct validate ulis2_validate = {
2007  ulis2_valobj,
2008  11,
2009  "name",
2010  "list_id = %d",
2011  1,
2012  "list_id",
2013  access_list,
2014  setup_alis,
2015  set_modtime_by_id,
2016};
2017
2018static char *ulis3_fields[] = {
2019  "name",
2020  "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
2021  "nfsgroup", "ace_type", "ace_name", "description",
2022};
2023
2024static struct valobj ulis3_valobj[] = {
2025  {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2026  {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
2027  {V_NUM, 2},
2028  {V_NUM, 3},
2029  {V_NUM, 4},
2030  {V_NUM, 5},
2031  {V_NUM, 6},
2032  {V_NUM, 7},
2033  {V_NUM, 8},
2034  {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
2035  {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
2036  {V_LEN, 11, LIST_TABLE, "description"},
2037};
2038
2039static struct validate ulis3_validate = {
2040  ulis3_valobj,
2041  12,
2042  "name",
2043  "list_id = %d",
2044  1,
2045  "list_id",
2046  access_list,
2047  setup_alis,
2048  set_modtime_by_id,
2049};
2050
2051static char *ulis4_fields[] = {
2052  "name",
2053  "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
2054  "nfsgroup", "ace_type", "ace_name", "memace_type", "memace_name",
2055  "description",
2056};
2057
2058static struct valobj ulis4_valobj[] = {
2059  {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2060  {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
2061  {V_NUM, 2},
2062  {V_NUM, 3},
2063  {V_NUM, 4},
2064  {V_NUM, 5},
2065  {V_NUM, 6},
2066  {V_NUM, 7},
2067  {V_NUM, 8},
2068  {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
2069  {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
2070  {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
2071  {V_TYPEDATA, 12, 0, 0, "list_id", MR_ACE},
2072  {V_LEN, 13, LIST_TABLE, "description"},
2073};
2074
2075static struct validate ulis4_validate = {
2076  ulis4_valobj,
2077  14,
2078  "name",
2079  "list_id = %d",
2080  1,
2081  "list_id",
2082  access_list,
2083  setup_alis,
2084  set_modtime_by_id,
2085};
2086
2087static char *ulis_fields[] = {
2088  "name",
2089  "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
2090  "nfsgroup", "mailman", "mailman_server", "ace_type", "ace_name",
2091  "memace_type", "memace_name", "description",
2092};
2093
2094static struct valobj ulis_valobj[] = {
2095  {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2096  {V_RENAME, 1, LIST_TABLE, "name", "list_id", MR_NOT_UNIQUE},
2097  {V_NUM, 2},
2098  {V_NUM, 3},
2099  {V_NUM, 4},
2100  {V_NUM, 5},
2101  {V_NUM, 6},
2102  {V_NUM, 7},
2103  {V_NUM, 8},
2104  {V_NUM, 9},
2105  {V_ID, 10, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2106  {V_TYPE, 11, 0, "ace_type", 0, MR_ACE},
2107  {V_TYPEDATA, 12, 0, 0, "list_id", MR_ACE},
2108  {V_TYPE, 13, 0, "ace_type", 0, MR_ACE},
2109  {V_TYPEDATA, 14, 0, 0, "list_id", MR_ACE},
2110  {V_LEN, 15, LIST_TABLE, "description"},
2111};
2112
2113static struct validate ulis_validate = {
2114  ulis_valobj,
2115  16,
2116  "name",
2117  "list_id = %d",
2118  1,
2119  "list_id",
2120  access_list,
2121  setup_alis,
2122  set_modtime_by_id,
2123};
2124
2125static char *dlis_fields[] = {
2126  "name",
2127};
2128
2129static struct validate dlis_validate = {
2130  VOlist0,
2131  1,
2132  "name",
2133  "list_id = %d",
2134  1,
2135  0,
2136  access_list,
2137  setup_dlis,
2138  0,
2139};
2140
2141static char *amtl_fields[] = {
2142  "list_name", "member_type", "member_name",
2143};
2144
2145static char *atml_fields[] = {
2146  "list_name", "member_type", "member_name", "tag",
2147};
2148
2149static struct valobj amtl_valobj[] = {
2150  {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
2151  {V_TYPE, 1, 0, "member", 0, MR_TYPE},
2152  {V_TYPEDATA, 2, 0, 0, 0, MR_NO_MATCH},
2153  {V_ID, 3, STRINGS_TABLE, "string", "string_id", MR_NO_MATCH},
2154};
2155
2156static struct validate amtl_validate =
2157{
2158  amtl_valobj,
2159  3,
2160  0,
2161  0,
2162  0,
2163  0,
2164  access_list,
2165  0,
2166  add_member_to_list,
2167};
2168
2169static struct validate atml_validate =
2170{
2171  amtl_valobj,
2172  4,
2173  0,
2174  0,
2175  0,
2176  0,
2177  access_list,
2178  0,
2179  add_member_to_list,
2180};
2181
2182static struct validate tmol_validate =
2183{
2184  amtl_valobj,
2185  4,
2186  0,
2187  0,
2188  0,
2189  0,
2190  access_list,
2191  0,
2192  tag_member_of_list,
2193};
2194
2195static struct validate dmfl_validate =
2196{
2197  amtl_valobj,
2198  3,
2199  0,
2200  0,
2201  0,
2202  0,
2203  access_list,
2204  0,
2205  delete_member_from_list,
2206};
2207
2208static char *gaus_fields[] = {
2209  "ace_type", "ace_name",
2210  "use_type", "use_name",
2211};
2212
2213static struct valobj gaus_valobj[] = {
2214  {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
2215  {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
2216};
2217
2218static struct validate gaus_validate = {
2219  gaus_valobj,
2220  2,
2221  0,
2222  0,
2223  0,
2224  0,
2225  access_member,
2226  0,
2227  get_ace_use,
2228};
2229
2230static char *ghbo_fields[] = {
2231  "ace_type", "ace_name",
2232  "name",
2233};
2234
2235static struct valobj ghbo_valobj[] = {
2236  {V_TYPE, 0, 0, "gaus", 0, MR_TYPE},
2237  {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
2238};
2239
2240static struct validate ghbo_validate = {
2241  ghbo_valobj,
2242  2,
2243  0,
2244  0,
2245  0,
2246  0,
2247  access_member,
2248  0,
2249  get_host_by_owner,
2250};
2251
2252static char *qgli_fields[] = {
2253  "active", "publicflg", "hidden", "maillist", "grouplist",
2254  "list",
2255};
2256
2257static struct valobj qgli_valobj[] = {
2258  {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
2259  {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
2260  {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
2261  {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
2262  {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
2263};
2264
2265static struct validate qgli_validate = {
2266  qgli_valobj,
2267  5,
2268  0,
2269  0,
2270  0,
2271  0,
2272  access_qgli,
2273  0,
2274  qualified_get_lists,
2275};
2276
2277static char *gmol_fields[] = {
2278  "list_name",
2279  "member_type", "member_name",
2280};
2281
2282static char *gtml_fields[] = {
2283  "list_name",
2284  "member_type", "member_name", "tag",
2285};
2286
2287static struct validate gmol_validate = {
2288  VOlist0,
2289  1,
2290  0,
2291  0,
2292  0,
2293  0,
2294  access_visible_list,
2295  0,
2296  get_members_of_list,
2297};
2298
2299static char *glom_fields[] = {
2300  "member_type", "member_name",
2301  "list_name", "active", "publicflg", "hidden", "maillist", "grouplist",
2302};
2303
2304static struct valobj glom_valobj[] = {
2305  {V_TYPE, 0, 0, "rmember", 0, MR_TYPE},
2306  {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
2307};
2308
2309static struct validate glom_validate = {
2310  glom_valobj,
2311  2,
2312  0,
2313  0,
2314  0,
2315  0,
2316  access_member,
2317  0,
2318  get_lists_of_member,
2319};
2320
2321static char *cmol_fields[] = {
2322  "list_name",
2323  "count",
2324};
2325
2326static struct validate cmol_validate = {
2327  VOlist0,
2328  1,
2329  0,
2330  0,
2331  0,
2332  0,
2333  access_visible_list,
2334  0,
2335  count_members_of_list,
2336};
2337
2338static char *gsin_fields[] = {
2339  "service",
2340  "service", "update_int", "target_file", "script", "dfgen", "dfcheck",
2341  "type", "enable", "inprogress", "harderror", "errmsg",
2342  "ace_type", "ace_name", "modtime", "modby", "modwith",
2343};
2344
2345static struct validate gsin_validate =
2346{
2347  0,
2348  0,
2349  0,
2350  0,
2351  0,
2352  0,
2353  access_service,
2354  0,
2355  followup_gsin,
2356};
2357
2358static char *qgsv_fields[] = {
2359  "enable", "inprogress", "harderror",
2360  "service",
2361};
2362
2363static struct valobj qgsv_valobj[] = {
2364  {V_TYPE, 0, 0, "boolean", 0, MR_TYPE},
2365  {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
2366  {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
2367};
2368
2369static struct validate qgsv_validate = {
2370  qgsv_valobj,
2371  3,
2372  0,
2373  0,
2374  0,
2375  0,
2376  0,
2377  0,
2378  qualified_get_server,
2379};
2380
2381static char *asin_fields[] = {
2382  "service", "update_int", "target_file", "script", "type", "enable",
2383  "ace_type", "ace_name",
2384};
2385
2386static struct valobj asin_valobj[] = {
2387  {V_CHAR, 0, SERVERS_TABLE, "name"},
2388  {V_NUM, 1},
2389  {V_LEN, 2, SERVERS_TABLE, "target_file"},
2390  {V_LEN, 3, SERVERS_TABLE, "script"},
2391  {V_TYPE, 4, 0, "service", 0, MR_TYPE},
2392  {V_NUM, 5},
2393  {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
2394  {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
2395};
2396
2397static struct validate asin_validate =  /* for asin, usin */
2398{
2399  asin_valobj,
2400  8,
2401  "name",
2402  "name = UPPER('%s')",
2403  1,
2404  0,
2405  0,
2406  0,
2407  set_uppercase_modtime,
2408};
2409
2410static struct validate rsve_validate = {
2411  asin_valobj,
2412  1,
2413  "name",
2414  "name = UPPER('%s')",
2415  1,
2416  0,
2417  access_service,
2418  0,
2419  set_uppercase_modtime,
2420};
2421
2422static char *ssif_fields[] = {
2423  "service", "dfgen", "dfcheck", "inprogress", "harderror", "errmsg",
2424};
2425
2426static struct valobj ssif_valobj[] = {
2427  {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
2428  {V_NUM, 1},
2429  {V_NUM, 2},
2430  {V_NUM, 3},
2431  {V_NUM, 4},
2432  {V_LEN, 5, SERVERS_TABLE, "errmsg"},
2433};
2434
2435static struct validate ssif_validate = {
2436  ssif_valobj,
2437  6,
2438  "name",
2439  "name = UPPER('%s')",
2440  1,
2441  0,
2442  0,
2443  0,
2444  0,
2445};
2446
2447static char *dsin_fields[] = {
2448  "service",
2449};
2450
2451static struct validate dsin_validate = {
2452  asin_valobj,
2453  1,
2454  "name",
2455  "name = UPPER('%s')",
2456  1,
2457  0,
2458  0,
2459  setup_dsin,
2460  0,
2461};
2462
2463static char *gshi_fields[] = {
2464  "service", "machine",
2465  "service", "machine", "enable", "override", "success", "inprogress",
2466  "hosterror", "hosterrormsg", "ltt", "lts", "value1", "value2",
2467  "value3", "modtime", "modby", "modwith",
2468};
2469
2470static struct validate gshi_validate = {
2471  0,
2472  0,
2473  0,
2474  0,
2475  0,
2476  0,
2477  access_service,
2478  0,
2479  followup_fix_modby,
2480};
2481
2482static char *qgsh_fields[] = {
2483  "service", "enable", "override", "success", "inprogress", "hosterror",
2484  "service", "machine",
2485};
2486
2487static struct valobj qgsh_valobj[] = {
2488  {V_TYPE, 1, 0, "boolean", 0, MR_TYPE},
2489  {V_TYPE, 2, 0, "boolean", 0, MR_TYPE},
2490  {V_TYPE, 3, 0, "boolean", 0, MR_TYPE},
2491  {V_TYPE, 4, 0, "boolean", 0, MR_TYPE},
2492  {V_TYPE, 5, 0, "boolean", 0, MR_TYPE},
2493};
2494
2495static struct validate qgsh_validate = {
2496  qgsh_valobj,
2497  5,
2498  0,
2499  0,
2500  0,
2501  0,
2502  0,
2503  0,
2504  qualified_get_serverhost,
2505};
2506
2507static char *ashi_fields[] = {
2508  "service", "machine", "enable", "value1", "value2", "value3",
2509};
2510
2511static struct valobj ashi_valobj[] = {
2512  {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
2513  {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2514  {V_NUM, 2},
2515  {V_NUM, 3},
2516  {V_NUM, 4},
2517  {V_LEN, 5, SERVERHOSTS_TABLE, "value3"},
2518};
2519
2520static struct validate ashi_validate = /* ashi & ushi */
2521{
2522  ashi_valobj,
2523  6,
2524  "service",
2525  "service = UPPER('%s') AND mach_id = %d",
2526  2,
2527  0,
2528  access_service,
2529  0,
2530  set_serverhost_modtime,
2531};
2532
2533static struct validate rshe_validate =
2534{
2535  ashi_valobj,
2536  2,
2537  "service",
2538  "service = UPPER('%s') AND mach_id = %d",
2539  2,
2540  0,
2541  access_service,
2542  0,
2543  set_serverhost_modtime,
2544};
2545
2546static struct validate ssho_validate =
2547{
2548  ashi_valobj,
2549  2,
2550  "service",
2551  "service = UPPER('%s') AND mach_id = %d",
2552  2,
2553  0,
2554  access_service,
2555  0,
2556  trigger_dcm,
2557};
2558
2559static char *sshi_fields[] = {
2560  "service", "machine", "override", "success", "inprogress",
2561  "hosterror", "errmsg", "ltt", "lts",
2562};
2563
2564static struct valobj sshi_valobj[] = {
2565  {V_NAME, 0, SERVERS_TABLE, "name", 0, MR_SERVICE},
2566  {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2567  {V_NUM, 2},
2568  {V_NUM, 3},
2569  {V_NUM, 4},
2570  {V_NUM, 5},
2571  {V_LEN, 6, SERVERHOSTS_TABLE, "hosterrmsg"},
2572  {V_NUM, 7},
2573  {V_NUM, 8},
2574};
2575
2576static struct validate sshi_validate =
2577{
2578  sshi_valobj,
2579  9,
2580  0,
2581  0,
2582  0,
2583  0,
2584  0,
2585  0,
2586  0,
2587};
2588
2589static char *dshi_fields[] = {
2590  "service", "machine",
2591};
2592
2593static struct validate dshi_validate =
2594{
2595  ashi_valobj,
2596  2,
2597  "service",
2598  "service = UPPER('%s') AND mach_id = %d",
2599  2,
2600  0,
2601  access_service,
2602  setup_dshi,
2603  0,
2604};
2605
2606static char *gslo_fields[] = {
2607  "server",
2608  "server", "machine",
2609};
2610
2611static char *gfsl_fields[] = {
2612  "label",
2613  "label", "type", "machine", "name", "mount", "access", "comments",
2614  "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2615};
2616
2617static struct validate gfsl_validate = {
2618  0,
2619  0,
2620  0,
2621  0,
2622  0,
2623  0,
2624  0,
2625  0,
2626  followup_fix_modby,
2627};
2628
2629static char *gfsm_fields[] = {
2630  "machine",
2631  "label", "type", "machine", "name", "mount", "access", "comments",
2632  "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2633};
2634
2635static struct validate gfsm_validate = {
2636  VOmach0,
2637  1,
2638  0,
2639  0,
2640  0,
2641  0,
2642  0,
2643  0,
2644  followup_fix_modby,
2645};
2646
2647static char *gfsn_fields[] = {
2648  "machine", "partition",
2649  "label", "type", "machine", "name", "mount", "access", "comments",
2650  "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2651};
2652
2653static struct validate gfsn_validate = {
2654  VOmach0,
2655  1,
2656  0,
2657  0,
2658  0,
2659  0,
2660  0,
2661  0,
2662  followup_fix_modby,
2663};
2664
2665static char *gfsp_fields[] = {
2666  "path",
2667  "label", "type", "machine", "name", "mount", "access", "comments",
2668  "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2669};
2670
2671static char *gfsg_fields[] = {
2672  "list",
2673  "label", "type", "machine", "name", "mount", "access", "comments",
2674  "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2675};
2676
2677static struct validate gfsg_validate = {
2678  VOlist0,
2679  1,
2680  0,
2681  0,
2682  0,
2683  0,
2684  access_list,
2685  0,
2686  followup_fix_modby,
2687};
2688
2689static char *afil_fields[] = {
2690  "label", "type", "machine", "name", "mount", "access", "comments",
2691  "owner", "owners", "create", "lockertype",
2692};
2693
2694static struct valobj afil_valobj[] = {
2695  {V_CHAR, 0, FILESYS_TABLE, "label"},
2696  {V_TYPE, 1, 0, "filesys", 0, MR_FSTYPE},
2697  {V_ID, 2, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2698  {V_CHAR, 3, FILESYS_TABLE, "name"},
2699  {V_LEN, 4, FILESYS_TABLE, "mount"},
2700  {V_LEN, 5, FILESYS_TABLE, "rwaccess"},
2701  {V_LEN, 6, FILESYS_TABLE, "comments"},
2702  {V_ID, 7, USERS_TABLE, "login", "users_id", MR_USER},
2703  {V_ID, 8, LIST_TABLE, "name", "list_id", MR_LIST},
2704  {V_NUM, 9},
2705  {V_TYPE, 10, 0, "lockertype", 0, MR_TYPE},
2706};
2707
2708static struct validate afil_validate = {
2709  afil_valobj,
2710  11,
2711  "label",
2712  "label = '%s'",
2713  1,
2714  "filsys_id",
2715  0,
2716  setup_afil,
2717  set_filesys_modtime,
2718};
2719
2720static char *ufil_fields[] = {
2721  "label", "newlabel", "type", "machine", "name", "mount", "access",
2722  "comments", "owner", "owners", "create", "lockertype",
2723};
2724
2725static struct valobj ufil_valobj[] = {
2726  {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2727  {V_RENAME, 1, FILESYS_TABLE, "label", "filsys_id", MR_NOT_UNIQUE},
2728  {V_TYPE, 2, 0, "filesys", 0, MR_FSTYPE},
2729  {V_ID, 3, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2730  {V_CHAR, 4, FILESYS_TABLE, "name"},
2731  {V_LEN, 5, FILESYS_TABLE, "mount"},
2732  {V_LEN, 6, FILESYS_TABLE, "rwaccess"},
2733  {V_LEN, 7, FILESYS_TABLE, "comments"},
2734  {V_ID, 8, USERS_TABLE, "login", "users_id", MR_USER},
2735  {V_ID, 9, LIST_TABLE, "name", "list_id", MR_LIST},
2736  {V_NUM, 10},
2737  {V_TYPE, 11, 0, "lockertype", 0, MR_TYPE},
2738};
2739
2740static struct validate ufil_validate = {
2741  ufil_valobj,
2742  12,
2743  "label",
2744  "filsys_id = %d",
2745  1,
2746  "filsys_id",
2747  0,
2748  setup_ufil,
2749  set_filesys_modtime,
2750};
2751
2752static char *dfil_fields[] = {
2753  "label",
2754};
2755
2756static struct validate dfil_validate = {
2757  VOfilesys0,
2758  1,
2759  "label",
2760  "filsys_id = %d",
2761  1,
2762  0,
2763  0,
2764  setup_dfil,
2765  0,
2766};
2767
2768static char *gfgm_fields[] = {
2769  "fsgroup", "filesys", "sortkey"
2770};
2771
2772static struct validate gfgm_validate = {
2773  VOfilesys0,
2774  1,
2775  0,
2776  0,
2777  0,
2778  0,
2779  0,
2780  0,
2781  0,
2782};
2783
2784static struct valobj aftg_valobj[] = {
2785  {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2786  {V_ID, 1, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2787};
2788
2789static struct validate aftg_validate = {
2790  aftg_valobj,
2791  2,
2792  "group_id",
2793  "group_id = %d and filsys_id = %d",
2794  2,
2795  0,
2796  0,
2797  0,
2798  0,
2799};
2800
2801static char *ganf_fields[] = {
2802  "machine", "dir", "device", "status", "allocated", "size",
2803  "modtime", "modby", "modwith",
2804};
2805
2806static char *gnfp_fields[] = {
2807  "machine", "dir",
2808  "machine", "dir", "device", "status", "allocated", "size",
2809  "modtime", "modby", "modwith",
2810};
2811
2812static struct validate gnfp_validate = {
2813  VOmach0,
2814  1,
2815  0,
2816  0,
2817  0,
2818  0,
2819  0,
2820  0,
2821  followup_fix_modby,
2822};
2823
2824static struct valobj anfp_valobj[] = {
2825  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
2826  {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
2827  {V_LEN, 2, NFSPHYS_TABLE, "device"},
2828  {V_NUM, 3},
2829  {V_NUM, 4},
2830  {V_NUM, 5},
2831};
2832
2833static struct validate anfp_validate = {
2834  anfp_valobj,
2835  6,
2836  "dir",
2837  "mach_id = %d and dir = '%s'",
2838  2,
2839  "nfsphys_id",
2840  0,
2841  prefetch_value,
2842  set_nfsphys_modtime,
2843};
2844
2845static struct validate unfp_validate = {
2846  anfp_valobj,
2847  6,
2848  "dir",
2849  "mach_id = %d and dir = '%s'",
2850  2,
2851  "nfsphys_id",
2852  0,
2853  0,
2854  set_nfsphys_modtime,
2855};
2856
2857static char *ajnf_fields[] = {
2858  "machine", "dir", "adjustment",
2859};
2860
2861static struct valobj ajnf_valobj[] = {
2862  {V_ID, 0, MACHINE_TABLE, NAME, "mach_id", MR_MACHINE},
2863  {V_CHAR, 1, NFSPHYS_TABLE, "dir"},
2864  {V_NUM, 2},
2865};
2866
2867static struct validate ajnf_validate = {
2868  ajnf_valobj,
2869  3,
2870  "dir",
2871  "mach_id = %d and dir = '%s'",
2872  2,
2873  "nfsphys_id",
2874  0,
2875  0,
2876  set_nfsphys_modtime,
2877};
2878
2879static char *dnfp_fields[] = {
2880  "machine", "dir",
2881};
2882
2883static struct validate dnfp_validate = {
2884  anfp_valobj,
2885  2,
2886  "dir",
2887  "mach_id = %d and dir = '%s'",
2888  2,
2889  "nfsphys_id",
2890  0,
2891  setup_dnfp,
2892  set_nfsphys_modtime,
2893};
2894
2895static char *gqot_fields[] = {
2896  "filesys", "type", "name",
2897  "filesys", "type", "name", "quota", "dir", "machine",
2898  "modtime", "modby", "modwith",
2899};
2900
2901static struct valobj gqot_valobj[] = {
2902  {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
2903  {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2904};
2905
2906static struct validate gqot_validate = {
2907  gqot_valobj,
2908  2,
2909  0,
2910  0,
2911  0,
2912  0,
2913  0,
2914  0,
2915  followup_gqot,
2916};
2917
2918static char *gqbf_fields[] = {
2919  "filesys",
2920  "filesys", "type", "name", "quota", "dir", "machine",
2921  "modtime", "modby", "modwith",
2922};
2923
2924static struct validate gqbf_validate = {
2925  0,
2926  0,
2927  0,
2928  0,
2929  0,
2930  0,
2931  0,
2932  0,
2933  followup_gqot,
2934};
2935
2936static char *aqot_fields[] = {
2937  "filesys", "type", "name", "quota",
2938};
2939
2940static struct valobj aqot_valobj[] = {
2941  {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
2942  {V_TYPE, 1, 0, "quota_type", 0, MR_TYPE},
2943  {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
2944  {V_NUM, 3},
2945};
2946
2947static struct validate aqot_validate = {
2948  aqot_valobj,
2949  4,
2950  "filsys_id",
2951  "filsys_id = %d and type = '%s' and entity_id = %d",
2952  3,
2953  0,
2954  0,
2955  prefetch_filesys,
2956  followup_aqot,
2957};
2958
2959static struct validate uqot_validate = {
2960  aqot_valobj,
2961  4,
2962  "filsys_id",
2963  "filsys_id = %d AND type = '%s' AND entity_id = %d",
2964  3,
2965  0,
2966  0,
2967  setup_dqot,
2968  followup_aqot,
2969};
2970
2971static struct validate dqot_validate = {
2972  aqot_valobj,
2973  3,
2974  "filsys_id",
2975  "filsys_id = %d AND type = '%s' AND entity_id = %d",
2976  3,
2977  0,
2978  0,
2979  setup_dqot,
2980  followup_dqot,
2981};
2982
2983static char *gnfq_fields[] = {
2984  "filesys", "login",
2985  "filesys", "login", "quota", "dir", "machine",
2986  "modtime", "modby", "modwith",
2987};
2988
2989static struct validate gnfq_validate = {
2990  0,
2991  0,
2992  0,
2993  0,
2994  0,
2995  0,
2996  0,
2997  0,
2998  followup_gqot,
2999};
3000
3001static char *gnqp_fields[] = {
3002  "machine", "dir",
3003  "filesys", "login", "quota", "dir", "machine",
3004  "modtime", "modby", "modwith",
3005};
3006
3007static char *anfq_fields[] = {
3008  "filesys", "login", "quota",
3009};
3010
3011static struct valobj anfq_valobj[] = {
3012  {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
3013  {V_ID, 1, USERS_TABLE, "login", "users_id", MR_USER},
3014  {V_NUM, 2},
3015};
3016
3017static struct validate anfq_validate = {
3018  anfq_valobj,
3019  3,
3020  "filsys_id",
3021  "filsys_id = %d AND type = 'USER' AND entity_id = %d",
3022  2,
3023  0, /* object ? */
3024  0,
3025  prefetch_filesys,
3026  followup_aqot,
3027};
3028
3029static struct validate unfq_validate = {
3030  anfq_valobj,
3031  3,
3032  "filsys_id",
3033  "filsys_id = %d AND type = 'USER' AND entity_id = %d",
3034  2,
3035  0,
3036  0,
3037  setup_dqot,
3038  followup_aqot,
3039};
3040
3041static struct validate dnfq_validate = {
3042  anfq_valobj,
3043  3,
3044  "filsys_id",
3045  "filsys_id = %d AND entity_id = %d",
3046  2,
3047  0,
3048  0,
3049  setup_dqot,
3050  followup_dqot,
3051};
3052
3053static char *gzcl2_fields[] = {
3054  "class",
3055  "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3056  "iws_type", "iws_name", "iui_type", "iui_name",
3057  "modtime", "modby", "modwith",
3058};
3059
3060static char *gzcl_fields[] = {
3061  "class",
3062  "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3063  "iws_type", "iws_name", "iui_type", "iui_name", "owner_type",
3064  "owner_id", "modtime", "modby", "modwith",
3065};
3066
3067static struct validate gzcl_validate = {
3068  0,
3069  0,
3070  0,
3071  0,
3072  0,
3073  0,
3074  access_zephyr,
3075  0,
3076  followup_gzcl,
3077};
3078
3079static char *azcl2_fields[] = {
3080  "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3081  "iws_type", "iws_name", "iui_type", "iui_name",
3082}; 
3083
3084static struct valobj azcl2_valobj[] = {
3085  {V_CHAR, 0, ZEPHYR_TABLE, "class"},
3086  {V_TYPE, 1, 0, "zace_type", 0, MR_ACE},
3087  {V_TYPEDATA, 2, 0, 0, "list_id", MR_ACE},
3088  {V_TYPE, 3, 0, "zace_type", 0, MR_ACE},
3089  {V_TYPEDATA, 4, 0, 0, "list_id", MR_ACE},
3090  {V_TYPE, 5, 0, "zace_type", 0, MR_ACE},
3091  {V_TYPEDATA, 6, 0, 0, "list_id", MR_ACE},
3092  {V_TYPE, 7, 0, "zace_type", 0, MR_ACE},
3093  {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
3094};
3095
3096static struct validate azcl2_validate = {
3097  azcl2_valobj,
3098  9,
3099  "class",
3100  "class = '%s'",
3101  1,
3102  0,
3103  0,
3104  0,
3105  set_zephyr_modtime,
3106};
3107
3108static char *azcl_fields[] = {
3109  "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3110  "iws_type", "iws_name", "iui_type", "iui_name", "owner_type",
3111  "owner_id",
3112};
3113
3114static struct valobj azcl_valobj[] = {
3115  {V_CHAR, 0, ZEPHYR_TABLE, "class"},
3116  {V_TYPE, 1, 0, "zace_type", 0, MR_ACE},
3117  {V_TYPEDATA, 2, 0, 0, "list_id", MR_ACE},
3118  {V_TYPE, 3, 0, "zace_type", 0, MR_ACE},
3119  {V_TYPEDATA, 4, 0, 0, "list_id", MR_ACE},
3120  {V_TYPE, 5, 0, "zace_type", 0, MR_ACE},
3121  {V_TYPEDATA, 6, 0, 0, "list_id", MR_ACE},
3122  {V_TYPE, 7, 0, "zace_type", 0, MR_ACE},
3123  {V_TYPEDATA, 8, 0, 0, "list_id", MR_ACE},
3124  {V_TYPE, 9, 0, "ace_type", 0, MR_ACE},
3125  {V_TYPEDATA, 10, 0, 0, "list_id", MR_ACE},
3126};
3127
3128static struct validate azcl_validate = {
3129  azcl_valobj,
3130  11,
3131  "class",
3132  "class = '%s'",
3133  1,
3134  0,
3135  0,
3136  0,
3137  set_zephyr_modtime,
3138};
3139
3140static char *uzcl2_fields[] = {
3141  "class", "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
3142  "iws_type", "iws_name", "iui_type", "iui_name",
3143};
3144
3145static struct valobj uzcl2_valobj[] = {
3146  {V_NAME, 0, ZEPHYR_TABLE, "class", 0, MR_BAD_CLASS},
3147  {V_RENAME, 1, ZEPHYR_TABLE, "class", 0, MR_NOT_UNIQUE},
3148  {V_TYPE, 2, 0, "zace_type", 0, MR_ACE},
3149  {V_TYPEDATA, 3, 0, 0, "list_id", MR_ACE},
3150  {V_TYPE, 4, 0, "zace_type", 0, MR_ACE},
3151  {V_TYPEDATA, 5, 0, 0, "list_id", MR_ACE},
3152  {V_TYPE, 6, 0, "zace_type", 0, MR_ACE},
3153  {V_TYPEDATA, 7, 0, 0, "list_id", MR_ACE},
3154  {V_TYPE, 8, 0, "zace_type", 0, MR_ACE},
3155  {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
3156};
3157
3158static struct validate uzcl2_validate = {
3159  uzcl2_valobj,
3160  10,
3161  "class",
3162  "class = '%s'",
3163  1,
3164  0,
3165  access_zephyr,
3166  0,
3167  set_zephyr_modtime,
3168};
3169
3170static char *uzcl_fields[] = {
3171  "class", "newclass", "xmt_type", "xmt_name", "sub_type", "sub_name",
3172  "iws_type", "iws_name", "iui_type", "iui_name", "owner_type", "owner_id",
3173};
3174
3175static struct valobj uzcl_valobj[] = {
3176  {V_NAME, 0, ZEPHYR_TABLE, "class", 0, MR_BAD_CLASS},
3177  {V_RENAME, 1, ZEPHYR_TABLE, "class", 0, MR_NOT_UNIQUE},
3178  {V_TYPE, 2, 0, "zace_type", 0, MR_ACE},
3179  {V_TYPEDATA, 3, 0, 0, "list_id", MR_ACE},
3180  {V_TYPE, 4, 0, "zace_type", 0, MR_ACE},
3181  {V_TYPEDATA, 5, 0, 0, "list_id", MR_ACE},
3182  {V_TYPE, 6, 0, "zace_type", 0, MR_ACE},
3183  {V_TYPEDATA, 7, 0, 0, "list_id", MR_ACE},
3184  {V_TYPE, 8, 0, "zace_type", 0, MR_ACE},
3185  {V_TYPEDATA, 9, 0, 0, "list_id", MR_ACE},
3186  {V_TYPE, 10, 0, "ace_type", 0, MR_ACE},
3187  {V_TYPEDATA, 11, 0, 0, "list_id", MR_ACE},
3188};
3189
3190static struct validate uzcl_validate = {
3191  uzcl_valobj,
3192  12,
3193  "class",
3194  "class = '%s'",
3195  1,
3196  0,
3197  access_zephyr,
3198  0,
3199  set_zephyr_modtime,
3200};
3201
3202static struct validate dzcl_validate = {
3203  0,
3204  0,
3205  "class",
3206  "class = '%s'",
3207  1,
3208  0,
3209  0,
3210  0,
3211  0,
3212};
3213
3214static char *gsha_fields[] = {
3215  "machine",
3216  "machine", "ace_type", "ace_name", "modtime", "modby", "modwith",
3217};
3218
3219static struct validate gsha_validate =
3220{
3221  0,
3222  0,
3223  0,
3224  0,
3225  0,
3226  0,
3227  0,
3228  0,
3229  followup_gsha,
3230};
3231
3232static char *asha_fields[] = {
3233  "machine", "ace_type", "ace_name",
3234};
3235
3236static struct valobj asha_valobj[] = {
3237  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3238  {V_TYPE, 1, 0, "ace_type", 0, MR_ACE},
3239  {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
3240};
3241
3242static struct validate asha_validate =
3243{
3244  asha_valobj,
3245  3,
3246  "mach_id",
3247  "mach_id = %d",
3248  1,
3249  "mach_id",
3250  0,
3251  0,
3252  set_modtime_by_id,
3253};
3254
3255static char *gacl_fields[] = {
3256  "machine", "target",
3257  "machine", "target", "kind", "list",
3258};
3259
3260static char *aacl_fields[] = {
3261  "machine", "target", "kind", "list",
3262};
3263
3264static char *dacl_fields[] = {
3265  "machine", "target",
3266};
3267
3268static struct valobj aacl_valobj[] = {
3269  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3270  {V_CHAR, 1, ACL_TABLE, "target"},
3271  {V_TYPE, 2, 0, "acl_kind", 0, MR_TYPE},
3272  {V_ID, 3, LIST_TABLE, "name", "list_id", MR_LIST},
3273};
3274
3275static struct validate gacl_validate =
3276{
3277  aacl_valobj,
3278  1,
3279  NULL,
3280  NULL,
3281  0,
3282  "mach_id",
3283  /* access_acl */ 0,
3284  0,
3285  0,
3286};
3287
3288static struct validate aacl_validate =
3289{
3290  aacl_valobj,
3291  4,
3292  "mach_id",
3293  "mach_id = %d AND target = '%s'",
3294  2,
3295  "mach_id",
3296  /* access_acl */ 0,
3297  0,
3298  0,
3299};
3300
3301static char *gsvc_fields[] = {
3302  "service", "protocol",
3303  "service", "protocol", "port", "description", "modtime", "modby", "modwith",
3304};
3305
3306static char *asvc_fields[] = {
3307  "service", "protocol", "port", "description",
3308};
3309
3310static char *dsvc_fields[] = {
3311  "service", "protocol",
3312};
3313
3314static struct valobj asvc_valobj[] = {
3315  {V_CHAR, 0, SERVICES_TABLE, "name"},
3316  {V_CHAR, 1, SERVICES_TABLE, "protocol"},
3317  {V_NUM, 2},
3318  {V_CHAR, 3, SERVICES_TABLE, "description"},
3319};
3320
3321static struct validate asvc_validate = {
3322  asvc_valobj,
3323  4,
3324  "name",
3325  "name = '%s' AND protocol = '%s'",
3326  2,
3327  0,
3328  0,
3329  0,
3330  set_service_modtime,
3331};
3332
3333static struct validate dsvc_validate = {
3334  asvc_valobj,
3335  2,
3336  "name",
3337  "name = '%s' AND protocol = '%s'",
3338  2,
3339  0,
3340  0,
3341  0,
3342  0,
3343};
3344
3345static char *gprn_fields[] = {
3346  "name",
3347  "name", "type", "hwtype", "duplexname", "hostname",
3348  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3349  "banner", "location", "contact", "modtime", "modby", "modwith"
3350};
3351
3352static char *gpbd_fields[] = {
3353  "duplexname",
3354  "name", "type", "hwtype", "duplexname", "hostname",
3355  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3356  "banner", "location", "contact", "modtime", "modby", "modwith"
3357};
3358
3359static char *gpbe_fields[] = {
3360  "hwaddr",
3361  "name", "type", "hwtype", "duplexname", "hostname",
3362  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3363  "banner", "location", "contact", "modtime", "modby", "modwith"
3364};
3365
3366static char *gpbh_fields[] = {
3367  "hostname",
3368  "name", "type", "hwtype", "duplexname", "hostname",
3369  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3370  "banner", "location", "contact", "modtime", "modby", "modwith"
3371};
3372
3373static char *gpbr_fields[] = {
3374  "rm",
3375  "name", "type", "hwtype", "duplexname", "hostname",
3376  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3377  "banner", "location", "contact", "modtime", "modby", "modwith"
3378};
3379
3380static char *gpbl_fields[] = {
3381  "location",
3382  "name", "type", "hwtype", "duplexname", "hostname",
3383  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3384  "banner", "location", "contact", "modtime", "modby", "modwith"
3385};
3386
3387static char *gpbc_fields[] = {
3388  "contact",
3389  "name", "type", "hwtype", "duplexname", "hostname",
3390  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3391  "banner", "location", "contact", "modtime", "modby", "modwith"
3392};
3393
3394static char *aprn_fields[] = {
3395  "printer", "type", "hwtype", "duplexname", "hostname",
3396  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3397  "banner", "location", "contact",
3398};
3399
3400static struct valobj aprn_valobj[] = {
3401  {V_CHAR, 0, PRINTERS_TABLE, "name"},
3402  {V_TYPE, 1, 0, "printertype", 0, MR_TYPE},
3403  {V_TYPE, 2, 0, "printerhwtype", 0, MR_TYPE},
3404  {V_CHAR, 3, PRINTERS_TABLE, "duplexname"},
3405  {V_ID, 4, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3406  {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3407  {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3408  {V_CHAR, 7, PRINTERS_TABLE, "rp"},
3409  {V_ID, 8, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3410  {V_NUM, 9},
3411  {V_NUM, 10},
3412  {V_ID, 11, LIST_TABLE, "name", "list_id", MR_LIST},
3413  {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
3414  {V_NUM, 13},
3415  {V_CHAR, 14, PRINTERS_TABLE, "location"},
3416  {V_CHAR, 15, PRINTERS_TABLE, "contact"},
3417};
3418
3419static struct validate aprn_validate = {
3420  aprn_valobj,
3421  16,
3422  "name",
3423  "name = '%s'",
3424  1,
3425  0,
3426  access_printer,
3427  setup_aprn,
3428  set_modtime,
3429};
3430
3431static char *uprn_fields[] = {
3432  "printer",
3433  "printer", "type", "hwtype", "duplexname", "hostname",
3434  "loghost", "rm", "rp", "rq", "ka", "pc", "ac", "lpc_acl",
3435  "banner", "location", "contact",
3436};
3437
3438static struct valobj uprn_valobj[] = {
3439  {V_CHAR, 0, PRINTERS_TABLE, "name"},
3440  {V_CHAR, 1, PRINTERS_TABLE, "name"},
3441  {V_TYPE, 2, 0, "printertype", 0, MR_TYPE},
3442  {V_TYPE, 3, 0, "printerhwtype", 0, MR_TYPE},
3443  {V_CHAR, 4, PRINTERS_TABLE, "duplexname"},
3444  {V_ID, 5, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3445  {V_ID, 6, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3446  {V_ID, 7, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3447  {V_CHAR, 8, PRINTERS_TABLE, "rp"},
3448  {V_ID, 9, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3449  {V_NUM, 10},
3450  {V_NUM, 11},
3451  {V_ID, 12, LIST_TABLE, "name", "list_id", MR_LIST},
3452  {V_ID, 13, LIST_TABLE, "name", "list_id", MR_LIST},
3453  {V_NUM, 14},
3454  {V_CHAR, 15, PRINTERS_TABLE, "location"},
3455  {V_CHAR, 16, PRINTERS_TABLE, "contact"},
3456};
3457
3458static struct validate uprn_validate = {
3459  uprn_valobj,
3460  16,
3461  "name",
3462  "name = '%s'",
3463  1,
3464  0,
3465  access_printer,
3466  setup_aprn,
3467  set_modtime,
3468};
3469
3470static struct validate dprn_validate = {
3471  0,
3472  0,
3473  "name",
3474  "name = '%s'",
3475  1,
3476  0,
3477  access_printer,
3478  0,
3479  0,
3480};
3481
3482static char *gpsv_fields[] = {
3483  "host",
3484  "host", "kind", "printer_types", "owner_type", "owner_name",
3485  "lpc_acl", "modtime", "modby", "modwith"
3486};
3487
3488static struct valobj gpsv_valobj[] = {
3489  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3490};
3491
3492static struct validate gpsv_validate = {
3493  gpsv_valobj,
3494  1,
3495  0,
3496  0,
3497  0,
3498  0,
3499  0,
3500  0,
3501  followup_gpsv,
3502};
3503
3504static char *apsv_fields[] = {
3505  "host", "kind", "printer_types", "owner_type", "owner_name", "lpc_acl"
3506};
3507
3508static struct valobj apsv_valobj[] = {
3509  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3510  {V_TYPE, 1, 0, "lpd_kind", 0, MR_TYPE},
3511  {V_ID, 2, STRINGS_TABLE, "string", "string_id", MR_STRING},
3512  {V_TYPE, 3, 0, "ace_type", 0, MR_ACE},
3513  {V_TYPEDATA, 4, 0, 0, 0, MR_ACE},
3514  {V_ID, 5, LIST_TABLE, "name", "list_id", MR_LIST},
3515};
3516
3517static struct validate apsv_validate = {
3518  apsv_valobj,
3519  6,
3520  "mach_id",
3521  "mach_id = %d",
3522  1,
3523  "mach_id",
3524  0,
3525  0,
3526  set_modtime_by_id,
3527};
3528
3529static char *dpsv_fields[] = {
3530  "host",
3531};
3532
3533static struct validate dpsv_validate = {
3534  gpsv_valobj,
3535  1,
3536  "mach_id",
3537  "mach_id = %d",
3538  1,
3539  0,
3540  0,
3541  setup_dpsv,
3542  0,
3543}; 
3544
3545static char *gali_fields[] = {
3546  "name", "type", "trans",
3547  "name", "type", "trans",
3548};
3549
3550static char *aali_fields[] = {
3551  "name", "type", "trans",
3552};
3553
3554static struct valobj aali_valobj[] = {
3555  {V_CHAR, 0, ALIAS_TABLE, "name"},
3556  {V_TYPE, 1, 0, "alias", 0, MR_TYPE},
3557  {V_CHAR, 2, ALIAS_TABLE, "trans"},
3558};
3559
3560static struct validate aali_validate = {
3561  aali_valobj,
3562  3,
3563  "trans",
3564  "name = '%s' and type = '%s' and trans = '%s'",
3565  3,
3566  0,
3567  0,
3568  setup_aali,
3569  0,
3570};
3571
3572static struct validate dali_validate =  /* DELETE_ALIAS */
3573{
3574  0,
3575  0,
3576  "trans",
3577  "name = '%s' and type = '%s' and trans = '%s'",
3578  3,
3579  0,
3580  0,
3581  0,
3582  0,
3583};
3584
3585static char *gval_fields[] = {
3586  "name", "value",
3587};
3588
3589static struct valobj gval_valobj[] = {
3590  {V_NAME, 0, NUMVALUES_TABLE, "name", 0, MR_NO_MATCH},
3591};
3592
3593static struct validate gval_validate = {
3594  gval_valobj,
3595  1,
3596  0,
3597  0,
3598  0,
3599  0,
3600  0,
3601  0,
3602  0,
3603};
3604
3605static char *aval_fields[] = {
3606  "name", "value",
3607};
3608
3609static struct valobj aval_valobj[] = {
3610  {V_CHAR, 0, NUMVALUES_TABLE, "name"},
3611  {V_NUM, 1},
3612};
3613
3614static struct validate aval_validate =  /* for aval, uval, and dval */
3615{
3616  aval_valobj,
3617  2,
3618  "name",
3619  "name = '%s'",
3620  1,
3621  0,
3622  0,
3623  0,
3624  0,
3625};
3626
3627static char *dval_fields[] = {
3628  "name",
3629};
3630
3631static char *gats_fields[] = {
3632  "table_name", "appends", "updates", "deletes",
3633  "modtime", "modby", "modwith",
3634};
3635
3636static char *_sdl_fields[] = {
3637  "level",
3638};
3639
3640static struct validate _sdl_validate =
3641{
3642  VOnum0,
3643  1,
3644  NULL,
3645  NULL,
3646  0,
3647  0,
3648  0,
3649  0,
3650  _sdl_followup,
3651};
3652
3653static char *gcon7_fields[] = {
3654  "name",
3655  "name", "description", "location", "contact",
3656  "ace_type", "ace_name", "memace_type", "memace_name", "modtime", "modby", "modwith",
3657};
3658
3659static struct validate gcon_validate = {
3660  0,
3661  0,
3662  0,
3663  0,
3664  0,
3665  0,
3666  0,
3667  0,
3668  followup_gcon,
3669};
3670
3671static char *gcon_fields[] = {
3672  "name",
3673  "name", "publicflg", "description", "location", "contact",
3674  "ace_type", "ace_name", "memace_type", "memace_name", "modtime", "modby", "modwith",
3675};
3676
3677static char *acon7_fields[] = {
3678  "name", "description", "location", "contact",
3679  "ace_type", "ace_name", "memace_type", "memace_name",
3680};
3681
3682static struct valobj acon7_valobj[] = {
3683  {V_CHAR, 0, CONTAINERS_TABLE, "name"},
3684  {V_LEN, 1, CONTAINERS_TABLE, "description"},
3685  {V_CHAR, 2, CONTAINERS_TABLE, "location"},
3686  {V_CHAR, 3, CONTAINERS_TABLE, "contact"},
3687  {V_TYPE, 4, 0, "ace_type", 0, MR_ACE},
3688  {V_TYPEDATA, 5, 0, 0, 0, MR_ACE},
3689  {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
3690  {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
3691};
3692
3693static struct validate acon7_validate =
3694{
3695  acon7_valobj,
3696  8,
3697  "name",
3698  "name = '%s'",
3699  1,
3700  "cnt_id",
3701  0,
3702  setup_acon,
3703  set_modtime,
3704};
3705
3706static char *acon_fields[] = {
3707  "name", "publicflg", "description", "location", "contact",
3708  "ace_type", "ace_name", "memace_type", "memace_name",
3709};
3710
3711static struct valobj acon_valobj[] = {
3712  {V_CHAR, 0, CONTAINERS_TABLE, "name"},
3713  {V_NUM, 1},
3714  {V_LEN, 2, CONTAINERS_TABLE, "description"},
3715  {V_CHAR, 3, CONTAINERS_TABLE, "location"},
3716  {V_CHAR, 4, CONTAINERS_TABLE, "contact"},
3717  {V_TYPE, 5, 0, "ace_type", 0, MR_ACE},
3718  {V_TYPEDATA, 6, 0, 0, 0, MR_ACE},
3719  {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
3720  {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
3721};
3722
3723static struct validate acon_validate =
3724{
3725  acon_valobj,
3726  9,
3727  "name",
3728  "name = '%s'",
3729  1,
3730  "cnt_id",
3731  0,
3732  setup_acon,
3733  set_modtime,
3734};
3735
3736static char *ucon7_fields[] = {
3737  "name",
3738  "newname", "description", "location", "contact",
3739  "ace_type", "ace_name", "memace_type", "memace_name",
3740};
3741
3742static struct valobj ucon7_valobj[] = {
3743  {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3744  {V_RENAME, 1, CONTAINERS_TABLE, "name", "cnt_id", MR_NOT_UNIQUE},
3745  {V_LEN, 2, CONTAINERS_TABLE, "description"},
3746  {V_CHAR, 3, CONTAINERS_TABLE, "location"},
3747  {V_CHAR, 4, CONTAINERS_TABLE, "contact"},
3748  {V_TYPE, 5, 0, "ace_type", 0, MR_ACE},
3749  {V_TYPEDATA, 6, 0, 0, 0, MR_ACE},
3750  {V_TYPE, 7, 0, "ace_type", 0, MR_ACE},
3751  {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
3752};
3753
3754static struct validate ucon7_validate =
3755{
3756  ucon7_valobj,
3757  9,
3758  0,
3759  0,
3760  0,
3761  0,
3762  access_container,
3763  0,
3764  update_container,
3765};
3766
3767static char *ucon_fields[] = {
3768  "name",
3769  "newname", "publicflg", "description", "location", "contact",
3770  "ace_type", "ace_name", "memace_type", "memace_name",
3771};
3772
3773static struct valobj ucon_valobj[] = {
3774  {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3775  {V_RENAME, 1, CONTAINERS_TABLE, "name", "cnt_id", MR_NOT_UNIQUE},
3776  {V_NUM, 2},
3777  {V_LEN, 3, CONTAINERS_TABLE, "description"},
3778  {V_CHAR, 4, CONTAINERS_TABLE, "location"},
3779  {V_CHAR, 5, CONTAINERS_TABLE, "contact"},
3780  {V_TYPE, 6, 0, "ace_type", 0, MR_ACE},
3781  {V_TYPEDATA, 7, 0, 0, 0, MR_ACE},
3782  {V_TYPE, 8, 0, "ace_type", 0, MR_ACE},
3783  {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
3784};
3785
3786static struct validate ucon_validate =
3787{
3788  ucon_valobj,
3789  10,
3790  0,
3791  0,
3792  0,
3793  0,
3794  access_container,
3795  0,
3796  update_container,
3797};
3798
3799static char *dcon_fields[] = {
3800  "name",
3801};
3802
3803static struct validate dcon_validate =
3804{
3805  VOcon0,
3806  1,
3807  0,
3808  0,
3809  0,
3810  0,
3811  0,
3812  setup_dcon,
3813  0,
3814};
3815
3816static char *amcn_fields[] = {
3817  "machine", "container",
3818};
3819
3820static struct valobj amcn_valobj[] =    /* ADD_MACHINE_TO_CONTAINER */
3821{                                       /* DELETE_MACHINE_FROM_CONTAINER */
3822  {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3823  {V_ID, 1, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3824};
3825
3826static struct validate amcn_validate = /* for amtn and dmfn */
3827{
3828  amcn_valobj,
3829  2,
3830  "mach_id",
3831  "mach_id = %d",
3832  1,
3833  0,
3834  access_container,
3835  0,
3836  set_mach_modtime_by_id,
3837};
3838
3839static struct validate dmcn_validate = /* for amtn and dmfn */
3840{
3841  amcn_valobj,
3842  2,
3843  "mach_id",
3844  "mach_id = %d and cnt_id = %d",
3845  2,
3846  0,
3847  access_container,
3848  0,
3849  set_mach_modtime_by_id,
3850};
3851
3852static char *gmnm_fields[] = {
3853  "machine",
3854  "machine", "container",
3855};
3856
3857static char *gmoc_fields[] = {
3858  "container",
3859  "isrecursive",
3860        "machine",
3861  "container",
3862};
3863
3864static struct validate gmoc_validate =
3865{
3866  VOcon0,
3867  1,
3868  0,
3869  0,
3870  0,
3871  0,
3872  0,
3873  0,
3874  get_machines_of_container,
3875};
3876
3877static char *gsoc_fields[] = {
3878  "container",
3879  "isrecursive",
3880        "subcontainer",
3881};
3882
3883static struct validate gsoc_validate =
3884{
3885  VOcon0,
3886  1,
3887  0,
3888  0,
3889  0,
3890  0,
3891  0,
3892  0,
3893  get_subcontainers_of_container,
3894};
3895
3896static char *gtlc_fields[] = {
3897  "name",
3898};
3899
3900static char *scli_fields[] = {
3901  "containername",
3902  "listname",
3903};
3904
3905static struct valobj scli_valobj[] = {
3906  {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
3907  {V_ID, 1, LIST_TABLE, "name", "list_id", MR_LIST},
3908};
3909
3910static struct validate scli_validate = {
3911  scli_valobj,
3912  2,
3913  0,
3914  0,
3915  0,
3916  0,
3917  0,
3918  setup_scli,
3919  set_container_list,
3920};
3921
3922static char *gcli_fields[] = {
3923  "containername",
3924  "containername", "listname",
3925};
3926
3927static struct validate glic_validate =
3928{
3929  VOlist0,
3930  1,
3931  NULL,
3932  NULL,
3933  0,
3934  0,
3935  0,
3936  0,
3937  0,
3938};
3939
3940static char *glic_fields[] = {
3941  "listname",
3942  "containername", "listname",
3943};
3944
3945/* Generalized Query Definitions */
3946
3947/* Multiple versions of the same query MUST be listed in ascending
3948 * order.
3949 */
3950
3951/* Note: For any query which uses prefetch_value, the vcnt should be
3952 * one less than the number of %-format specifiers in the tlist.
3953 */
3954
3955struct query Queries[] = {
3956  {
3957    /* Q_GALO - GET_ALL_LOGINS, v2 */
3958    "get_all_logins",
3959    "galo",
3960    2,
3961    MR_Q_RETRIEVE,
3962    "u",
3963    USERS_TABLE,
3964    "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
3965    galo2_fields,
3966    6,
3967    "u.users_id != 0",
3968    0,
3969    "u.login",
3970    0,
3971  },
3972
3973  {
3974    /* Q_GALO - GET_ALL_LOGINS, v3 */
3975    "get_all_logins",
3976    "galo",
3977    3,
3978    MR_Q_RETRIEVE,
3979    "u",
3980    USERS_TABLE,
3981    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle FROM users u",
3982    galo_fields,
3983    7,
3984    "u.users_id != 0",
3985    0,
3986    "u.login",
3987    0,
3988  },
3989
3990  {
3991    /* Q_GAAL - GET_ALL_ACTIVE_LOGINS, v2 */
3992    "get_all_active_logins",
3993    "gaal",
3994    2,
3995    MR_Q_RETRIEVE,
3996    "u",
3997    USERS_TABLE,
3998    "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle FROM users u",
3999    galo2_fields,
4000    6,
4001    "u.status = 1",
4002    0,
4003    "u.login",
4004    0,
4005  },
4006
4007  {
4008    /* Q_GAAL - GET_ALL_ACTIVE_LOGINS, v3 */
4009    "get_all_active_logins",
4010    "gaal",
4011    3,
4012    MR_Q_RETRIEVE,
4013    "u",
4014    USERS_TABLE,
4015    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle FROM users u",
4016    galo_fields,
4017    7,
4018    "u.status = 1",
4019    0,
4020    "u.login",
4021    0,
4022  },
4023
4024  {
4025    /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v2 */
4026    "get_user_account_by_login",
4027    "gual",
4028    2,
4029    MR_Q_RETRIEVE,
4030    "u",
4031    USERS_TABLE,
4032    "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4033    gual2_fields,
4034    15,
4035    "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4036    1,
4037    "u.login",
4038    &gubl2_validate,
4039  },
4040
4041  {
4042    /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v3 */
4043    "get_user_account_by_login",
4044    "gual",
4045    3,
4046    MR_Q_RETRIEVE,
4047    "u",
4048    USERS_TABLE,
4049    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4050    gual3_fields,
4051    18,
4052    "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4053    1,
4054    "u.login",
4055    &gubl_validate,
4056  },
4057
4058  {
4059    /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v11 */
4060    "get_user_account_by_login",
4061    "gual",
4062    11,
4063    MR_Q_RETRIEVE,
4064    "u",
4065    USERS_TABLE,
4066    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4067    gual11_fields,
4068    20,
4069    "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4070    1,
4071    "u.login",
4072    &gubl_validate,
4073  },
4074
4075  {
4076    /* Q_GUAL - GET_USER_ACCOUNT_BY_LOGIN, v12 */
4077    "get_user_account_by_login",
4078    "gual",
4079    12,
4080    MR_Q_RETRIEVE,
4081    "u",
4082    USERS_TABLE,
4083    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4084    gual_fields,
4085    23,
4086    "u.login LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4087    1,
4088    "u.login",
4089    &gubl_validate,
4090  },
4091
4092  {
4093    /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v2 */
4094    "get_user_account_by_uid",
4095    "guau",
4096    2,
4097    MR_Q_RETRIEVE,
4098    "u",
4099    USERS_TABLE,
4100    "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4101    guau2_fields,
4102    15,
4103    "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4104    1,
4105    "u.login",
4106    &gubu2_validate,
4107  },
4108
4109  {
4110    /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v3 */
4111    "get_user_account_by_uid",
4112    "guau",
4113    3,
4114    MR_Q_RETRIEVE,
4115    "u",
4116    USERS_TABLE,
4117    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4118    guau3_fields,
4119    18,
4120    "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4121    1,
4122    "u.login",
4123    &gubu_validate,
4124  },
4125
4126  {
4127    /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v11 */
4128    "get_user_account_by_uid",
4129    "guau",
4130    11,
4131    MR_Q_RETRIEVE,
4132    "u",
4133    USERS_TABLE,
4134    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4135    guau3_fields,
4136    20,
4137    "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4138    1,
4139    "u.login",
4140    &gubu_validate,
4141  },
4142
4143  {
4144    /* Q_GUAU - GET_USER_ACCOUNT_BY_UID, v12 */
4145    "get_user_account_by_uid",
4146    "guau",
4147    12,
4148    MR_Q_RETRIEVE,
4149    "u",
4150    USERS_TABLE,
4151    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4152    guau_fields,
4153    23,
4154    "u.unix_uid = %s AND u.users_id != 0 AND u.comments = str.string_id",
4155    1,
4156    "u.login",
4157    &gubu_validate,
4158  },
4159
4160  {
4161    /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v2 */
4162    "get_user_account_by_name",
4163    "guan",
4164    2,
4165    MR_Q_RETRIEVE,
4166    "u",
4167    USERS_TABLE,
4168    "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4169    guan2_fields,
4170    15,
4171    "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4172    2,
4173    "u.login",
4174    &guan2_validate,
4175  },
4176
4177  {
4178    /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v3 */
4179    "get_user_account_by_name",
4180    "guan",
4181    3,
4182    MR_Q_RETRIEVE,
4183    "u",
4184    USERS_TABLE,
4185    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4186    guan3_fields,
4187    18,
4188    "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4189    2,
4190    "u.login",
4191    &guan_validate,
4192  },
4193
4194  {
4195    /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v11 */
4196    "get_user_account_by_name",
4197    "guan",
4198    11,
4199    MR_Q_RETRIEVE,
4200    "u",
4201    USERS_TABLE,
4202    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4203    guan11_fields,
4204    20,
4205    "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4206    2,
4207    "u.login",
4208    &guan_validate,
4209  },
4210
4211  {
4212    /* Q_GUAN - GET_USER_ACCOUNT_BY_NAME, v12 */
4213    "get_user_account_by_name",
4214    "guan",
4215    12,
4216    MR_Q_RETRIEVE,
4217    "u",
4218    USERS_TABLE,
4219    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4220    guan_fields,
4221    23,
4222    "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0 and u.comments = str.string_id",
4223    2,
4224    "u.login",
4225    &guan_validate,
4226  },
4227
4228  {
4229    /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v2 */
4230    "get_user_account_by_class",
4231    "guac",
4232    2,
4233    MR_Q_RETRIEVE,
4234    "u",
4235    USERS_TABLE,
4236    "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4237    guac2_fields,
4238    15,
4239    "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4240    1,
4241    "u.login",
4242    &VDfix_modby,
4243  },
4244
4245  {
4246    /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v3 */
4247    "get_user_account_by_class",
4248    "guac",
4249    3,
4250    MR_Q_RETRIEVE,
4251    "u",
4252    USERS_TABLE,
4253    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4254    guac3_fields,
4255    18,
4256    "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4257    1,
4258    "u.login",
4259    &guan_validate,
4260  },
4261
4262  {
4263    /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v11 */
4264    "get_user_account_by_class",
4265    "guac",
4266    11,
4267    MR_Q_RETRIEVE,
4268    "u",
4269    USERS_TABLE,
4270    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4271    guac11_fields,
4272    20,
4273    "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4274    1,
4275    "u.login",
4276    &guan_validate,
4277  },
4278
4279  {
4280    /* Q_GUAC - GET_USER_ACCOUNT_BY_CLASS, v12 */
4281    "get_user_account_by_class",
4282    "guac",
4283    12,
4284    MR_Q_RETRIEVE,
4285    "u",
4286    USERS_TABLE,
4287    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4288    guac_fields,
4289    23,
4290    "u.type = UPPER('%s') AND u.users_id != 0 AND u.comments = str.string_id",
4291    1,
4292    "u.login",
4293    &guan_validate,
4294  },
4295
4296  {
4297    /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v2 */
4298    "get_user_account_by_id",
4299    "guai",
4300    2,
4301    MR_Q_RETRIEVE,
4302    "u",
4303    USERS_TABLE,
4304    "u.login, u.unix_uid, u.shell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith FROM users u, strings str",
4305    guam2_fields,
4306    15,
4307    "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4308    1,
4309    "u.login",
4310    &VDfix_modby,
4311  },
4312
4313  {
4314    /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v3 */
4315    "get_user_account_by_id",
4316    "guai",
4317    3,
4318    MR_Q_RETRIEVE,
4319    "u",
4320    USERS_TABLE,
4321    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4322    guam_fields,
4323    18,
4324    "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4325    1,
4326    "u.login",
4327    &guan_validate,
4328  },
4329
4330  {
4331    /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v11 */
4332    "get_user_account_by_id",
4333    "guai",
4334    11,
4335    MR_Q_RETRIEVE,
4336    "u",
4337    USERS_TABLE,
4338    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4339    guam11_fields,
4340    20,
4341    "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4342    1,
4343    "u.login",
4344    &guan_validate,
4345  },
4346
4347  {
4348    /* Q_GUAM - GET_USER_ACCOUNT_BY_MITID, v12 */
4349    "get_user_account_by_id",
4350    "guai",
4351    12,
4352    MR_Q_RETRIEVE,
4353    "u",
4354    USERS_TABLE,
4355    "u.login, u.unix_uid, u.shell, u.winconsoleshell, u.last, u.first, u.middle, u.status, u.clearid, u.type, str.string, CHR(0), u.secure, u.winhomedir, u.winprofiledir, u.sponsor_type, u.sponsor_id, u.expiration, TO_CHAR(u.modtime, 'DD-mon-YYYY HH24:MI:SS'), u.modby, u.modwith, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u, strings str",
4356    guam_fields,
4357    23,
4358    "u.clearid LIKE '%s' AND u.users_id != 0 AND u.comments = str.string_id",
4359    1,
4360    "u.login",
4361    &guan_validate,
4362  },
4363
4364  {
4365    /* Q_GUAS - GET_USER_ACCOUNT_BY_SPONSOR, v12 */
4366    "get_user_account_by_sponsor",
4367    "guas",
4368    12,
4369    MR_Q_RETRIEVE,
4370    0,
4371    0,
4372    0,
4373    guas_fields,
4374    1,
4375    0,
4376    2,
4377    NULL,
4378    &guas_validate,
4379  },
4380
4381  {
4382    /* Q_GUBL - GET_USER_BY_LOGIN, v2 */
4383    "get_user_by_login",
4384    "gubl",
4385    2,
4386    MR_Q_RETRIEVE,
4387    "u",
4388    USERS_TABLE,
4389    "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",
4390    gubl2_fields,
4391    12,
4392    "u.login LIKE '%s' AND u.users_id != 0",
4393    1,
4394    "u.login",
4395    &gubl2_validate,
4396  },
4397
4398  {
4399    /* Q_GUBL - GET_USER_BY_LOGIN, v3 */
4400    "get_user_by_login",
4401    "gubl",
4402    3,
4403    MR_Q_RETRIEVE,
4404    "u",
4405    USERS_TABLE,
4406    "u.login, u.unix_uid, u.shell, u.winconsoleshell, 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, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4407    gubl_fields,
4408    15,
4409    "u.login LIKE '%s' AND u.users_id != 0",
4410    1,
4411    "u.login",
4412    &gubl_validate,
4413  },
4414
4415  {
4416    /* Q_GUBU - GET_USER_BY_UID, v2 */
4417    "get_user_by_uid",
4418    "gubu",
4419    2,
4420    MR_Q_RETRIEVE,
4421    "u",
4422    USERS_TABLE,
4423    "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",
4424    gubu2_fields,
4425    12,
4426    "u.unix_uid = %s AND u.users_id != 0",
4427    1,
4428    "u.login",
4429    &gubu2_validate,
4430  },
4431
4432  {
4433    /* Q_GUBU - GET_USER_BY_UID, v3 */
4434    "get_user_by_uid",
4435    "gubu",
4436    3,
4437    MR_Q_RETRIEVE,
4438    "u",
4439    USERS_TABLE,
4440    "u.login, u.unix_uid, u.shell, u.winconsoleshell, 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, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4441    gubu_fields,
4442    15,
4443    "u.unix_uid = %s AND u.users_id != 0",
4444    1,
4445    "u.login",
4446    &gubu_validate,
4447  },
4448
4449  {
4450    /* Q_GUBN - GET_USER_BY_NAME, v2 */
4451    "get_user_by_name",
4452    "gubn",
4453    2,
4454    MR_Q_RETRIEVE,
4455    "u",
4456    USERS_TABLE,
4457    "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",
4458    gubn2_fields,
4459    12,
4460    "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0",
4461    2,
4462    "u.login",
4463    &gubn2_validate,
4464  },
4465
4466  {
4467    /* Q_GUBN - GET_USER_BY_NAME, v3 */
4468    "get_user_by_name",
4469    "gubn",
4470    3,
4471    MR_Q_RETRIEVE,
4472    "u",
4473    USERS_TABLE,
4474    "u.login, u.unix_uid, u.shell, u.winconsoleshell, 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, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4475    gubn_fields,
4476    15,
4477    "u.first LIKE '%s' AND u.last LIKE '%s' AND u.users_id != 0",
4478    2,
4479    "u.login",
4480    &gubn_validate,
4481  },
4482
4483  {
4484    /* Q_GUBC - GET_USER_BY_CLASS, v2 */
4485    "get_user_by_class",
4486    "gubc",
4487    2,
4488    MR_Q_RETRIEVE,
4489    "u",
4490    USERS_TABLE,
4491    "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",
4492    gubc2_fields,
4493    12,
4494    "u.type = UPPER('%s') AND u.users_id != 0",
4495    1,
4496    "u.login",
4497    &VDfix_modby,
4498  },
4499
4500  {
4501    /* Q_GUBC - GET_USER_BY_CLASS, v3 */
4502    "get_user_by_class",
4503    "gubc",
4504    3,
4505    MR_Q_RETRIEVE,
4506    "u",
4507    USERS_TABLE,
4508    "u.login, u.unix_uid, u.shell, u.winconsoleshell, 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, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS') FROM users u",
4509    gubc_fields,
4510    15,
4511    "u.type = UPPER('%s') AND u.users_id != 0",
4512    1,
4513    "u.login",
4514    &guan_validate,
4515  },
4516
4517  {
4518    /* Q_GUBM - GET_USER_BY_MITID, v2 */
4519    "get_user_by_mitid",
4520    "gubm",
4521    2,
4522    MR_Q_RETRIEVE,
4523    "u",
4524    USERS_TABLE,
4525    "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",
4526    gubm2_fields,
4527    12,
4528    "u.clearid LIKE '%s' AND u.users_id != 0",
4529    1,
4530    "u.login",
4531    &VDfix_modby,
4532  },
4533
4534  {
4535    /* Q_GUBM - GET_USER_BY_MITID, v3 */
4536    "get_user_by_mitid",
4537    "gubm",
4538    3,
4539    MR_Q_RETRIEVE,
4540    "u",
4541    USERS_TABLE,
4542    "u.login, u.unix_uid, u.shell, u.winconsoleshell, 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, TO_CHAR(u.created, 'DD-mon-YYYY HH24:MI:SS'), u.creator FROM users u",
4543    gubm_fields,
4544    15,
4545    "u.clearid LIKE '%s' AND u.users_id != 0",
4546    1,
4547    "u.login",
4548    &guan_validate,
4549  },
4550
4551  {
4552    /* Q_AUAC - ADD_USER_ACCOUNT, v2 */  /* uses prefetch_value() for users_id */
4553    "add_user_account",
4554    "auac",
4555    2,
4556    MR_Q_APPEND,
4557    "u",
4558    USERS_TABLE,
4559    /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4560     * but using up one argv element.
4561     */
4562    "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, NVL(CHR(0), '%s'), %s, %s)",
4563    auac2_fields,
4564    12,
4565    NULL,
4566    0,
4567    NULL,
4568    &auac2_validate,
4569  },
4570
4571  {
4572    /* Q_AUAC - ADD_USER_ACCOUNT, v3 */  /* uses prefetch_value() for users_id */
4573    "add_user_account",
4574    "auac",
4575    3,
4576    MR_Q_APPEND,
4577    "u",
4578    USERS_TABLE,
4579    /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4580     * but using up one argv element.
4581     */
4582    "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, %s, SYSDATE, %s)",
4583    auac3_fields,
4584    13,
4585    NULL,
4586    0,
4587    NULL,
4588    &auac3_validate,
4589  },
4590
4591  {
4592    /* Q_AUAC - ADD_USER_ACCOUNT, v11 */  /* uses prefetch_value() for users_id */
4593    "add_user_account",
4594    "auac",
4595    11,
4596    MR_Q_APPEND,
4597    "u",
4598    USERS_TABLE,
4599    /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4600     * but using up one argv element.
4601     */
4602    "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, SYSDATE, %s)",
4603    auac11_fields,
4604    15,
4605    NULL,
4606    0,
4607    NULL,
4608    &auac11_validate,
4609  },
4610
4611  {
4612    /* Q_AUAC - ADD_USER_ACCOUNT, v12 */  /* uses prefetch_value() for users_id */
4613    "add_user_account",
4614    "auac",
4615    12,
4616    MR_Q_APPEND,
4617    "u",
4618    USERS_TABLE,
4619    /* We set signature to "NVL(CHR(0), '%s')", which is to say, "CHR(0)",
4620     * but using up one argv element.
4621     */
4622    "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, expiration, users_id, created, creator) VALUES ('%s', %s, '%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), '%s', %d, NVL(CHR(0), '%s'), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, NVL('%s', CHR(0)), %s, SYSDATE, %s)",
4623    auac_fields,
4624    18,
4625    NULL,
4626    0,
4627    NULL,
4628    &auac_validate,
4629  },
4630
4631  {
4632    /* Q_AUSR - ADD_USER, v2 */  /* uses prefetch_value() for users_id */
4633    "add_user",
4634    "ausr",
4635    2,
4636    MR_Q_APPEND,
4637    "u",
4638    USERS_TABLE,
4639    "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)",
4640    auac2_fields,
4641    9,
4642    0,
4643    0,
4644    NULL,
4645    &ausr2_validate,
4646  },
4647
4648  {
4649    /* Q_AUSR - ADD_USER, v3 */  /* uses prefetch_value() for users_id */
4650    "add_user",
4651    "ausr",
4652    3,
4653    MR_Q_APPEND,
4654    "u",
4655    USERS_TABLE,
4656    "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, users_id, created, creator) 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, SYSDATE, %s)",
4657    auac3_fields,
4658    10,
4659    0,
4660    0,
4661    NULL,
4662    &ausr3_validate,
4663  },
4664
4665  {
4666    /* Q_AUSR - ADD_USER, v11 */  /* uses prefetch_value() for users_id */
4667    "add_user",
4668    "ausr",
4669    11,
4670    MR_Q_APPEND,
4671    "u",
4672    USERS_TABLE,
4673    "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, users_id, created, creator) 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, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, SYSDATE, %s)",
4674    auac11_fields,
4675    12,
4676    0,
4677    0,
4678    NULL,
4679    &ausr11_validate,
4680  },
4681
4682  {
4683    /* Q_AUSR - ADD_USER, v12 */  /* uses prefetch_value() for users_id */
4684    "add_user",
4685    "ausr",
4686    12,
4687    MR_Q_APPEND,
4688    "u",
4689    USERS_TABLE,
4690    "INTO users (login, unix_uid, shell, winconsoleshell, last, first, middle, status, clearid, type, comments, signature, secure, winhomedir, winprofiledir, sponsor_type, sponsor_id, expiration, users_id, created, creator) 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, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, NVL('%s', CHR(0)), %s, SYSDATE, %s)",
4691    auac_fields,
4692    15,
4693    0,
4694    0,
4695    NULL,
4696    &ausr_validate,
4697  },
4698
4699  {
4700    /* Q_RUSR - REGISTER_USER */
4701    "register_user",
4702    "rusr",
4703    2,
4704    MR_Q_APPEND,
4705    0,
4706    0,
4707    0,
4708    rusr_fields,
4709    3,
4710    0,
4711    0,
4712    NULL,
4713    &rusr_validate,
4714  },
4715
4716  {
4717    /* Q_UUAC - UPDATE_USER_ACCOUNT, v2 */
4718    "update_user_account",
4719    "uuac",
4720    2,
4721    MR_Q_UPDATE,
4722    "u",
4723    USERS_TABLE,
4724    /* See comment in auac about signature. */
4725    "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 = NVL(CHR(0), '%s'), secure = %s",
4726    uuac2_fields,
4727    12,
4728    "users_id = %d",
4729    1,
4730    NULL,
4731    &uuac2_validate,
4732  },
4733
4734  {
4735    /* Q_UUAC - UPDATE_USER_ACCOUNT, v3 */
4736    "update_user_account",
4737    "uuac",
4738    3,
4739    MR_Q_UPDATE,
4740    "u",
4741    USERS_TABLE,
4742    /* See comment in auac about signature. */
4743    "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%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 = NVL(CHR(0), '%s'), secure = %s",
4744    uuac3_fields,
4745    13,
4746    "users_id = %d",
4747    1,
4748    NULL,
4749    &uuac3_validate,
4750  },
4751
4752  {
4753    /* Q_UUAC - UPDATE_USER_ACCOUNT, v11 */
4754    "update_user_account",
4755    "uuac",
4756    11,
4757    MR_Q_UPDATE,
4758    "u",
4759    USERS_TABLE,
4760    /* See comment in auac about signature. */
4761    "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%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 = NVL(CHR(0), '%s'), secure = %s, winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0))",
4762    uuac11_fields,
4763    15,
4764    "users_id = %d",
4765    1,
4766    NULL,
4767    &uuac11_validate,
4768  },
4769
4770  {
4771    /* Q_UUAC - UPDATE_USER_ACCOUNT, v12 */
4772    "update_user_account",
4773    "uuac",
4774    12,
4775    MR_Q_UPDATE,
4776    "u",
4777    USERS_TABLE,
4778    /* See comment in auac about signature. */
4779    "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%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 = NVL(CHR(0), '%s'), secure = %s, winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d, expiration = NVL('%s', CHR(0))",
4780    uuac_fields,
4781    18,
4782    "users_id = %d",
4783    1,
4784    NULL,
4785    &uuac_validate,
4786  },
4787
4788  {
4789    /* Q_UUSR - UPDATE_USER, v2 */
4790    "update_user",
4791    "uusr",
4792    2,
4793    MR_Q_UPDATE,
4794    "u",
4795    USERS_TABLE,
4796    "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'",
4797    uuac2_fields,
4798    9,
4799    "users_id = %d",
4800    1,
4801    NULL,
4802    &uusr2_validate,
4803  },
4804
4805  {
4806    /* Q_UUSR - UPDATE_USER, v3 */
4807    "update_user",
4808    "uusr",
4809    3,
4810    MR_Q_UPDATE,
4811    "u",
4812    USERS_TABLE,
4813    "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%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'",
4814    uuac3_fields,
4815    10,
4816    "users_id = %d",
4817    1,
4818    NULL,
4819    &uusr3_validate,
4820  },
4821
4822  {
4823    /* Q_UUSR - UPDATE_USER, v11 */
4824    "update_user",
4825    "uusr",
4826    11,
4827    MR_Q_UPDATE,
4828    "u",
4829    USERS_TABLE,
4830    "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%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', winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)) ",
4831    uuac11_fields,
4832    12,
4833    "users_id = %d",
4834    1,
4835    NULL,
4836    &uusr11_validate,
4837  },
4838
4839  {
4840    /* Q_UUSR - UPDATE_USER, v12 */
4841    "update_user",
4842    "uusr",
4843    12,
4844    MR_Q_UPDATE,
4845    "u",
4846    USERS_TABLE,
4847    "users SET login = '%s', unix_uid = %s, shell = '%s', winconsoleshell = '%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', winhomedir = NVL('%s', CHR(0)), winprofiledir = NVL('%s', CHR(0)), sponsor_type = '%s', sponsor_id = %d, expiration = NVL('%s', CHR(0)) ",
4848    uuac_fields,
4849    15,
4850    "users_id = %d",
4851    1,
4852    NULL,
4853    &uusr_validate,
4854  },
4855
4856  {
4857    /* Q_UUSH - UPDATE_USER_SHELL */
4858    "update_user_shell",
4859    "uush",
4860    2,
4861    MR_Q_UPDATE,
4862    "u",
4863    USERS_TABLE,
4864    "users SET shell = '%s'",
4865    uush_fields,
4866    1,
4867    "users_id = %d",
4868    1,
4869    NULL,
4870    &uush_validate,
4871  },
4872
4873  {
4874    /* Q_UUWS - UPDATE_USER_WINDOWS_SHELL */
4875    "update_user_windows_shell",
4876    "uuws",
4877    2,
4878    MR_Q_UPDATE,
4879    "u",
4880    USERS_TABLE,
4881    "users SET winconsoleshell = '%s'",
4882    uuws_fields,
4883    1,
4884    "users_id = %d",
4885    1,
4886    NULL,
4887    &uuws_validate,
4888  },
4889
4890  {
4891    /* Q_UUST - UPDATE_USER_STATUS */
4892    "update_user_status",
4893    "uust",
4894    2,
4895    MR_Q_UPDATE,
4896    "u",
4897    USERS_TABLE,
4898    "users SET status = %s",
4899    uust_fields,
4900    1,
4901    "users_id = %d",
4902    1,
4903    NULL,
4904    &uust_validate,
4905  },
4906
4907  {
4908    /* Q_UUSS - UPDATE_USER_SECURITY_STATUS */
4909    "update_user_security_status",
4910    "uuss",
4911    2,
4912    MR_Q_UPDATE,
4913    "u",
4914    USERS_TABLE,
4915    "users SET secure = %s",
4916    uuss_fields,
4917    1,
4918    "users_id = %d",
4919    1,
4920    NULL,
4921    &uust_validate,
4922  },
4923
4924  {
4925    /* Q_DUSR - DELETE_USER */
4926    "delete_user",
4927    "dusr",
4928    2,
4929    MR_Q_DELETE,
4930    "u",
4931    USERS_TABLE,
4932    NULL,
4933    dusr_fields,
4934    0,
4935    "users_id = %d",
4936    1,
4937    NULL,
4938    &dusr_validate,
4939  },
4940
4941  {
4942    /* Q_AURV - ADD_USER_RESERVATION */
4943    "add_user_reservation",
4944    "aurv",
4945    2,
4946    MR_Q_UPDATE,
4947    0,
4948    USERS_TABLE,
4949    0,
4950    aurv_fields,
4951    2,
4952    0,
4953    0,
4954    NULL,
4955    &aurv_validate,
4956  },
4957
4958  {
4959    /* Q_GURV - GET_USER_RESERVATIONS */
4960    "get_user_reservations",
4961    "gurv",
4962    2,
4963    MR_Q_RETRIEVE,
4964    0,
4965    USERS_TABLE,
4966    0,
4967    gurv_fields,
4968    2,
4969    0,
4970    1,
4971    NULL,
4972    &gurv_validate,
4973  },
4974
4975  {
4976    /* Q_GUBR - GET_USER_BY_RESERVATION */
4977    "get_user_by_reservation",
4978    "gubr",
4979    2,
4980    MR_Q_RETRIEVE,
4981    0,
4982    USERS_TABLE,
4983    0,
4984    gubr_fields,
4985    1,
4986    0,
4987    1,
4988    NULL,
4989    &gubr_validate,
4990  },
4991
4992  {
4993    /* Q_DURV - DELETE_USER_RESERVATION */
4994    "delete_user_reservation",
4995    "durv",
4996    2,
4997    MR_Q_UPDATE,
4998    0,
4999    USERS_TABLE,
5000    0,
5001    aurv_fields,
5002    2,
5003    0,
5004    0,
5005    NULL,
5006    &aurv_validate,
5007  },
5008
5009  {
5010    /* Q_GKUM - GET_KERBEROS_USER_MAP */
5011    "get_kerberos_user_map",
5012    "gkum",
5013    2,
5014    MR_Q_RETRIEVE,
5015    "k",
5016    KRBMAP_TABLE,
5017    "u.login, str.string FROM krbmap km, users u, strings str",
5018    gkum_fields,
5019    2,
5020    "u.login LIKE '%s' AND str.string LIKE '%s' AND km.users_id = u.users_id AND km.string_id = str.string_id",
5021    2,
5022    "u.login, str.string",
5023    NULL,
5024  },
5025
5026  {
5027    /* Q_AKUM - ADD_KERBEROS_USER_MAP */
5028    "add_kerberos_user_map",
5029    "akum",
5030    2,
5031    MR_Q_APPEND,
5032    "k",
5033    KRBMAP_TABLE,
5034    "INTO krbmap (users_id, string_id) VALUES (%d, %d)",
5035    akum_fields,
5036    2,
5037    0,
5038    0,
5039    NULL,
5040    &akum_validate,
5041  },
5042
5043  {
5044    /* Q_DKUM - DELETE_KERBEROS_USER_MAP */
5045    "delete_kerberos_user_map",
5046    "dkum",
5047    2,
5048    MR_Q_DELETE,
5049    "k",
5050    KRBMAP_TABLE,
5051    0,
5052    akum_fields,
5053    0,
5054    "users_id = %d AND string_id = %d",
5055    2,
5056    NULL,
5057    &dkum_validate,
5058  },
5059
5060  {
5061    /* Q_GFBL - GET_FINGER_BY_LOGIN */
5062    "get_finger_by_login",
5063    "gfbl",
5064    2,
5065    MR_Q_RETRIEVE,
5066    "u",
5067    USERS_TABLE,
5068    "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",
5069    gfbl_fields,
5070    12,
5071    "users_id = %d",
5072    1,
5073    "login",
5074    &gfbl_validate,
5075  },
5076
5077  {
5078    /* Q_UFBL - UPDATE_FINGER_BY_LOGIN */
5079    "update_finger_by_login",
5080    "ufbl",
5081    2,
5082    MR_Q_UPDATE,
5083    "u",
5084    USERS_TABLE,
5085    "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))",
5086    ufbl_fields,
5087    8,
5088    "users_id = %d",
5089    1,
5090    NULL,
5091    &ufbl_validate,
5092  },
5093
5094  {
5095    /* Q_GPOB - GET_POBOX */
5096    "get_pobox",
5097    "gpob",
5098    2,
5099    MR_Q_RETRIEVE,
5100    "u",
5101    USERS_TABLE,
5102    "login, potype, users_id, CHR(0), TO_CHAR(pmodtime, 'DD-mon-YYYY HH24:MI:SS'), pmodby, pmodwith FROM users",
5103    gpob_fields,
5104    7,
5105    "users_id = %d",
5106    1,
5107    "login",
5108    &gpob_validate,
5109  },
5110
5111  {
5112    /* Q_GAPO - GET_ALL_POBOXES */
5113    "get_all_poboxes",
5114    "gapo",
5115    2,
5116    MR_Q_RETRIEVE,
5117    "u",
5118    USERS_TABLE,
5119    "login, potype, pop_id || ':' || box_id FROM users",
5120    gpox_fields,
5121    3,
5122    "potype != 'NONE'",
5123    0,
5124    "login",
5125    &gpox_validate,
5126  },
5127
5128  {
5129    /* Q_GPOP - GET_POBOXES_POP */
5130    "get_poboxes_pop",
5131    "gpop",
5132    2,
5133    MR_Q_RETRIEVE,
5134    "u",
5135    USERS_TABLE,
5136    "login, potype, users_id FROM users",
5137    gpox_fields,
5138    3,
5139    "potype = 'POP'",
5140    0,
5141    "login",
5142    &gpox_validate
5143  },
5144
5145  {
5146    /* Q_GPOF - GET_POBOXES_SMTP */
5147    "get_poboxes_smtp",
5148    "gpos",
5149    2,
5150    MR_Q_RETRIEVE,
5151    "u",
5152    USERS_TABLE,
5153    "login, potype, users_id FROM users",
5154    gpox_fields,
5155    3,
5156    "potype = 'SMTP'",
5157    0,
5158    "login",
5159    &gpox_validate
5160  },
5161
5162  {
5163    /* Q_SPOB - SET_POBOX */
5164    "set_pobox",
5165    "spob",
5166    2,
5167    MR_Q_UPDATE,
5168    0,
5169    USERS_TABLE,
5170    0,
5171    spob_fields,
5172    3,
5173    NULL,
5174    0,
5175    NULL,
5176    &spob_validate,
5177  },
5178
5179  {
5180    /* Q_SPOP - SET_POBOX_POP */
5181    "set_pobox_pop",
5182    "spop",
5183    2,
5184    MR_Q_UPDATE,
5185    0,
5186    USERS_TABLE,
5187    0,
5188    spob_fields,
5189    1,
5190    NULL,
5191    0,
5192    NULL,
5193    &spop_validate,
5194  },
5195
5196  {
5197    /* Q_DPOB - DELETE_POBOX */
5198    "delete_pobox",
5199    "dpob",
5200    2,
5201    MR_Q_UPDATE,
5202    "u",
5203    USERS_TABLE,
5204    "users SET potype = 'NONE'",
5205    spob_fields,
5206    0,
5207    "users_id = %d",
5208    1,
5209    NULL,
5210    &dpob_validate,
5211  },
5212
5213  {
5214    /* Q_GHST - GET_HOST, v2 */
5215    "get_host",
5216    "ghst",
5217    2,
5218    MR_Q_RETRIEVE,
5219    "m",
5220    MACHINE_TABLE,
5221    "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",
5222    ghst2_fields,
5223    21,
5224    "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5225    4,
5226    "m.name",
5227    &ghst_validate,
5228  },
5229
5230  {
5231    /* Q_GHST - GET_HOST, v6 */
5232    "get_host",
5233    "ghst",
5234    6,
5235    MR_Q_RETRIEVE,
5236    "m",
5237    MACHINE_TABLE,
5238    "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_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",
5239    ghst6_fields,
5240    22,
5241    "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5242    4,
5243    "m.name",
5244    &ghst_validate,
5245  },
5246
5247  {
5248    /* Q_GHST - GET_HOST, v8 */
5249    "get_host",
5250    "ghst",
5251    8,
5252    MR_Q_RETRIEVE,
5253    "m",
5254    MACHINE_TABLE,
5255    "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.account_number, 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",
5256    ghst_fields,
5257    23,
5258    "m.name LIKE UPPER('%s') AND m.address LIKE '%s' AND m.location LIKE UPPER('%s') AND s.name LIKE UPPER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5259    4,
5260    "m.name",
5261    &ghst_validate,
5262  },
5263
5264  {
5265    /* Q_GHBH - GET_HOST_BY_HWADDR, v2 */
5266    "get_host_by_hwaddr",
5267    "ghbh",
5268    2,
5269    MR_Q_RETRIEVE,
5270    "m",
5271    MACHINE_TABLE,
5272    "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",
5273    ghbh2_fields,
5274    21,
5275    "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5276    1,
5277    "m.name",
5278    &ghst_validate,
5279  },
5280
5281  {
5282    /* Q_GHBH - GET_HOST_BY_HWADDR, v6 */
5283    "get_host_by_hwaddr",
5284    "ghbh",
5285    6,
5286    MR_Q_RETRIEVE,
5287    "m",
5288    MACHINE_TABLE,
5289    "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_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",
5290    ghbh6_fields,
5291    22,
5292    "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5293    1,
5294    "m.name",
5295    &ghst_validate,
5296  },
5297
5298  {
5299    /* Q_GHBH - GET_HOST_BY_HWADDR, v8 */
5300    "get_host_by_hwaddr",
5301    "ghbh",
5302    8,
5303    MR_Q_RETRIEVE,
5304    "m",
5305    MACHINE_TABLE,
5306    "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.account_number, 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",
5307    ghbh_fields,
5308    23,
5309    "m.hwaddr LIKE LOWER('%s') AND m.mach_id != 0 AND s.snet_id = m.snet_id",
5310    1,
5311    "m.name",
5312    &ghst_validate,
5313  },
5314
5315  {
5316    /* Q_GHBA - GET_HOST_BY_ACCOUNT_NUMBER, v8 */
5317    "get_host_by_account_number",
5318    "ghba",
5319    8,
5320    MR_Q_RETRIEVE,
5321    "m",
5322    MACHINE_TABLE,
5323    "m.name, m.vendor, m.model, m.os, m.location, m.contact, m.billing_contact, m.account_number, 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",   
5324    ghba_fields,
5325    23,
5326    "m.account_number LIKE '%s' AND m.mach_id != 0 and s.snet_id = m.snet_id",
5327    1,
5328    "m.name",
5329    &ghst_validate,
5330  },
5331
5332  {
5333    /* Q_GHHA - GET_HOST_HWADDR */
5334    "get_host_hwaddr",
5335    "ghha",
5336    2,
5337    MR_Q_RETRIEVE,
5338    "m",
5339    MACHINE_TABLE,
5340    "m.hwaddr FROM machine m",
5341    ghha_fields,
5342    1,
5343    "m.name LIKE UPPER('%s')",
5344    1,
5345    NULL,
5346    NULL,
5347  },
5348
5349  {
5350    /* Q_AHST - ADD_HOST, v2 */ /* uses prefetch_value() for mach_id */
5351    "add_host",
5352    "ahst",
5353    2,
5354    MR_Q_APPEND,
5355    "m",
5356    MACHINE_TABLE,
5357    "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)",
5358    ahst2_fields,
5359    14,
5360    0,
5361    0,
5362    NULL,
5363    &ahst2_validate,
5364  },
5365
5366  {
5367    /* Q_AHST - ADD_HOST, v6 */ /* uses prefetch_value() for mach_id */
5368    "add_host",
5369    "ahst",
5370    6,
5371    MR_Q_APPEND,
5372    "m",
5373    MACHINE_TABLE,
5374    "INTO machine (name, vendor, model, os, location, contact, billing_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)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
5375    ahst6_fields,
5376    15,
5377    0,
5378    0,
5379    NULL,
5380    &ahst6_validate,
5381  },
5382
5383  {
5384    /* Q_AHST - ADD_HOST, v8 */ /* Uses prefetch_value() for mach_id */
5385    "add_host",
5386    "ahst",
5387    8,
5388    MR_Q_APPEND,
5389    "m",
5390    MACHINE_TABLE,
5391    "INTO machine (name, vendor, model, os, location, contact, billing_contact, account_number, 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)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, %s, SYSDATE, %d, '%s', '%s', %d, %d, %d, SYSDATE, SYSDATE, %s, %s)",
5392    ahst_fields,
5393    16,
5394    0,
5395    0,
5396    NULL,
5397    &ahst_validate,
5398  },
5399
5400  {
5401    /* Q_UHST - UPDATE_HOST, v2 */
5402    "update_host",
5403    "uhst",
5404    2,
5405    MR_Q_UPDATE,
5406    "m",
5407    MACHINE_TABLE,
5408    "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",
5409    uhst2_fields,
5410    14,
5411    "mach_id = %d",
5412    1,
5413    NULL,
5414    &uhst2_validate,
5415  },
5416
5417  {
5418    /* Q_UHST - UPDATE_HOST, v6 */
5419    "update_host",
5420    "uhst",
5421    6,
5422    MR_Q_UPDATE,
5423    "m",
5424    MACHINE_TABLE,
5425    "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)), billing_contact = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
5426    uhst6_fields,
5427    15,
5428    "mach_id = %d",
5429    1,
5430    NULL,
5431    &uhst6_validate,
5432  },
5433
5434  {
5435    /* Q_UHST - UPDATE_HOST, v8 */
5436    "update_host",
5437    "uhst",
5438    8,
5439    MR_Q_UPDATE,
5440    "m",
5441    MACHINE_TABLE,
5442    "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)), billing_contact = NVL('%s', CHR(0)), account_number = NVL('%s', CHR(0)), use = %s, status = %s, snet_id = %d, address = '%s', owner_type = '%s', owner_id = %d, acomment = %d, ocomment = %d",
5443    uhst_fields,
5444    16,
5445    "mach_id = %d",
5446    1,
5447    NULL,
5448    &uhst_validate,
5449  },
5450
5451  {
5452    /* Q_UHHA - UPDATE_HOST_HWADDR */
5453    "update_host_hwaddr",
5454    "uhha",
5455    2,
5456    MR_Q_UPDATE,
5457    "m",
5458    MACHINE_TABLE,
5459    "machine SET hwaddr = NVL('%s', CHR(0))",
5460    uhha_fields,
5461    1,
5462    "mach_id = %d",
5463    1,
5464    NULL,
5465    &uhha_validate,
5466  },
5467
5468  {
5469    /* Q_DHST - DELETE_HOST */
5470    "delete_host",
5471    "dhst",
5472    2,
5473    MR_Q_DELETE,
5474    "m",
5475    MACHINE_TABLE,
5476    NULL,
5477    dhst_fields,
5478    0,
5479    "mach_id = %d",
5480    1,
5481    NULL,
5482    &dhst_validate,
5483  },
5484
5485  {
5486    /* Q_GMAC - GET_MACHINE */
5487    "get_machine",
5488    "gmac",
5489    2,
5490    MR_Q_RETRIEVE,
5491    "m",
5492    MACHINE_TABLE,
5493    "name, vendor, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM machine",
5494    gmac_fields,
5495    5,
5496    "name LIKE UPPER('%s') AND mach_id != 0",
5497    1,
5498    "name",
5499    &VDfix_modby,
5500  },
5501
5502  {
5503    /* Q_GHAL - GET_HOSTALIAS */
5504    "get_hostalias",
5505    "ghal",
5506    2,
5507    MR_Q_RETRIEVE,
5508    "a",
5509    HOSTALIAS_TABLE,
5510    "a.name, m.name FROM hostalias a, machine m",
5511    ghal_fields,
5512    2,
5513    "m.mach_id = a.mach_id and a.name LIKE UPPER('%s') AND m.name LIKE UPPER('%s')",
5514    2,
5515    "a.name",
5516    &ghal_validate,
5517  },
5518
5519  {
5520    /* Q_AHAL - ADD_HOSTALIAS */
5521    "add_hostalias",
5522    "ahal",
5523    2,
5524    MR_Q_APPEND,
5525    "a",
5526    HOSTALIAS_TABLE,
5527    "INTO hostalias (name, mach_id) VALUES (UPPER('%s'), %d)",
5528    ghal_fields,
5529    2,
5530    0,
5531    0,
5532    NULL,
5533    &ahal_validate,
5534  },
5535
5536  {
5537    /* Q_DHAL - DELETE_HOSTALIAS */
5538    "delete_hostalias",
5539    "dhal",
5540    2,
5541    MR_Q_DELETE,
5542    "a",
5543    HOSTALIAS_TABLE,
5544    NULL,
5545    ghal_fields,
5546    0,
5547    "name = UPPER('%s') AND mach_id = %d",
5548    2,
5549    NULL,
5550    &dhal_validate,
5551  },
5552
5553  {
5554    /* Q_GSNT - GET_SUBNET, v2 */
5555    "get_subnet",
5556    "gsnt",
5557    2,
5558    MR_Q_RETRIEVE,
5559    "s",
5560    SUBNET_TABLE,
5561    "name, description, saddr, mask, low, high, prefix, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM subnet",
5562    gsnt2_fields,
5563    12,
5564    "name LIKE UPPER('%s')",
5565    1,
5566    "name",
5567    &gsnt_validate,
5568  },
5569
5570  {
5571    /* Q_GSNT - GET_SUBNET, v8 */
5572    "get_subnet",
5573    "gsnt",
5574    8,
5575    MR_Q_RETRIEVE,
5576    "s",
5577    SUBNET_TABLE,
5578    "name, description, status, contact, account_number, saddr, mask, low, high, prefix, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM subnet",
5579    gsnt_fields,
5580    15,
5581    "name LIKE UPPER('%s')",
5582    1,
5583    "name",
5584    &gsnt_validate,
5585  },
5586
5587  {
5588    /* Q_ASNT - ADD_SUBNET, v2 */
5589    "add_subnet",
5590    "asnt",
5591    2,
5592    MR_Q_APPEND,
5593    "s",
5594    SUBNET_TABLE,
5595    "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)",
5596    asnt2_fields,
5597    9,
5598    0,
5599    0,
5600    NULL,
5601    &asnt2_validate,
5602  },
5603
5604  {
5605    /* Q_ASNT - ADD_SUBNET, v8 */
5606    "add_subnet",
5607    "asnt",
5608    8,
5609    MR_Q_APPEND,
5610    "s",
5611    SUBNET_TABLE,
5612    "INTO subnet (name, description, status, contact, account_number, saddr, mask, low, high, prefix, owner_type, owner_id, snet_id) VALUES (UPPER('%s'), NVL('%s', CHR(0)), %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s, %s, %s, %s, NVL('%s', CHR(0)), '%s', %d, %s)",
5613    asnt_fields,
5614    12,
5615    0,
5616    0,
5617    NULL,
5618    &asnt_validate,
5619  },
5620
5621  {
5622    /* Q_USNT - UPDATE_SUBNET, v2 */
5623    "update_subnet",
5624    "usnt",
5625    2,
5626    MR_Q_UPDATE,
5627    "s",
5628    SUBNET_TABLE,
5629    "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",
5630    usnt2_fields,
5631    9,
5632    "snet_id = %d",
5633    1,
5634    NULL,
5635    &usnt2_validate,
5636  },
5637
5638  {
5639    /* Q_USNT - UPDATE_SUBNET, v8 */
5640    "update_subnet",
5641    "usnt",
5642    8,
5643    MR_Q_UPDATE,
5644    "s",
5645    SUBNET_TABLE,
5646    "subnet SET name = UPPER('%s'), description = NVL('%s', CHR(0)), status = %s, contact = NVL('%s', CHR(0)), account_number = NVL('%s', CHR(0)), saddr = %s, mask = %s, low = %s, high = %s, prefix = NVL('%s', CHR(0)), owner_type = '%s', owner_id = %d",
5647    usnt_fields,
5648    12,
5649    "snet_id = %d",
5650    1,
5651    NULL,
5652    &usnt_validate,
5653  },
5654
5655  {
5656    /* Q_DSNT - DELETE_SUBNET */
5657    "delete_subnet",
5658    "dsnt",
5659    2,
5660    MR_Q_DELETE,
5661    "s",
5662    SUBNET_TABLE,
5663    NULL,
5664    dsnt_fields,
5665    0,
5666    "snet_id = %d",
5667    1,
5668    NULL,
5669    &dsnt_validate,
5670  },
5671
5672  {
5673    /* Q_GCLU - GET_CLUSTER */
5674    "get_cluster",
5675    "gclu",
5676    2,
5677    MR_Q_RETRIEVE,
5678    "c",
5679    CLUSTERS_TABLE,
5680    "name, description, location, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM clusters",
5681    gclu_fields,
5682    6,
5683    "name LIKE '%s' AND clu_id != 0",
5684    1,
5685    "name",
5686    &VDfix_modby,
5687  },
5688
5689  {
5690    /* Q_ACLU - ADD_CLUSTER */ /* uses prefetch_value() for clu_id */
5691    "add_cluster",
5692    "aclu",
5693    2,
5694    MR_Q_APPEND,
5695    "c",
5696    CLUSTERS_TABLE,
5697    "INTO clusters (name, description, location, clu_id) VALUES ('%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), %s)",
5698    aclu_fields,
5699    3,
5700    0,
5701    0,
5702    NULL,
5703    &aclu_validate,
5704  },
5705
5706  {
5707    /* Q_UCLU - UPDATE_CLUSTER */
5708    "update_cluster",
5709    "uclu",
5710    2,
5711    MR_Q_UPDATE,
5712    "c",
5713    CLUSTERS_TABLE,
5714    "clusters SET name = '%s', description = NVL('%s', CHR(0)), location = NVL('%s', CHR(0))",
5715    uclu_fields,
5716    3,
5717    "clu_id = %d",
5718    1,
5719    NULL,
5720    &uclu_validate,
5721  },
5722
5723  {
5724    /* Q_DCLU - DELETE_CLUSTER */
5725    "delete_cluster",
5726    "dclu",
5727    2,
5728    MR_Q_DELETE,
5729    "c",
5730    CLUSTERS_TABLE,
5731    NULL,
5732    dclu_fields,
5733    0,
5734    "clu_id = %d",
5735    1,
5736    NULL,
5737    &dclu_validate,
5738  },
5739
5740  {
5741    /* Q_GMCM - GET_MACHINE_TO_CLUSTER_MAP */
5742    "get_machine_to_cluster_map",
5743    "gmcm",
5744    2,
5745    MR_Q_RETRIEVE,
5746    "mcm",
5747    MCMAP_TABLE,
5748    "m.name, c.name FROM machine m, clusters c, mcmap mcm",
5749    gmcm_fields,
5750    2,
5751    "m.name LIKE UPPER('%s') AND c.name LIKE '%s' AND mcm.clu_id = c.clu_id AND mcm.mach_id = m.mach_id",
5752    2,
5753    "m.name",
5754    NULL,
5755  },
5756
5757  {
5758    /* Q_AMTC - ADD_MACHINE_TO_CLUSTER */
5759    "add_machine_to_cluster",
5760    "amtc",
5761    2,
5762    MR_Q_APPEND,
5763    "mcm",
5764    MCMAP_TABLE,
5765    "INTO mcmap (mach_id, clu_id) VALUES (%d, %d)",
5766    gmcm_fields,
5767    2,
5768    0,
5769    0,
5770    NULL,
5771    &amtc_validate,
5772  },
5773
5774  {
5775    /* Q_DMFC - DELETE_MACHINE_FROM_CLUSTER */
5776    "delete_machine_from_cluster",
5777    "dmfc",
5778    2,
5779    MR_Q_DELETE,
5780    "mcm",
5781    MCMAP_TABLE,
5782    0,
5783    gmcm_fields,
5784    0,
5785    "mach_id = %d AND clu_id = %d",
5786    2,
5787    NULL,
5788    &amtc_validate,
5789  },
5790
5791  {
5792    /* Q_GCLD - GET_CLUSTER_DATA */
5793    "get_cluster_data",
5794    "gcld",
5795    2,
5796    MR_Q_RETRIEVE,
5797    "svc",
5798    SVC_TABLE,
5799    "c.name, svc.serv_label, svc.serv_cluster FROM svc svc, clusters c",
5800    gcld_fields,
5801    3,
5802    "c.clu_id = svc.clu_id AND c.name LIKE '%s' AND svc.serv_label LIKE '%s'",
5803    2,
5804    "c.name, svc.serv_label",
5805    NULL,
5806  },
5807
5808  {
5809    /* Q_ACLD - ADD_CLUSTER_DATA */
5810    "add_cluster_data",
5811    "acld",
5812    2,
5813    MR_Q_APPEND,
5814    "svc",
5815    SVC_TABLE,
5816    "INTO svc (clu_id, serv_label, serv_cluster) VALUES (%d, '%s', '%s')",
5817    acld_fields,
5818    3,
5819    NULL,
5820    0,
5821    NULL,
5822    &acld_validate,
5823  },
5824
5825  {
5826    /* Q_DCLD - DELETE_CLUSTER_DATA */
5827    "delete_cluster_data",
5828    "dcld",
5829    2,
5830    MR_Q_DELETE,
5831    "svc",
5832    SVC_TABLE,
5833    NULL,
5834    acld_fields,
5835    0,
5836    "clu_id = %d AND serv_label = '%s' AND serv_cluster = '%s'",
5837    3,
5838    NULL,
5839    &dcld_validate,
5840  },
5841
5842  {
5843    /* Q_GLIN - GET_LIST_INFO, v2 */
5844    "get_list_info",
5845    "glin",
5846    2,
5847    MR_Q_RETRIEVE,
5848    "l",
5849    LIST_TABLE,
5850    "name, active, publicflg, hidden, maillist, grouplist, gid, acl_type, acl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
5851    glin2_fields,
5852    13,
5853    "name LIKE '%s'",
5854    1,
5855    "name",
5856    &glin_validate,
5857  },
5858
5859  {
5860    /* Q_GLIN - GET_LIST_INFO, v3 */
5861    "get_list_info",
5862    "glin",
5863    3,
5864    MR_Q_RETRIEVE,
5865    "l",
5866    LIST_TABLE,
5867    "name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
5868    glin3_fields,
5869    14,
5870    "name LIKE '%s'",
5871    1,
5872    "name",
5873    &glin_validate,
5874  },
5875
5876  {
5877    /* Q_GLIN - GET_LIST_INFO, v4 */
5878    "get_list_info",
5879    "glin",
5880    4,
5881    MR_Q_RETRIEVE,
5882    "l",
5883    LIST_TABLE,
5884    "name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, memacl_type, memacl_id, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM list",
5885    glin4_fields,
5886    16,
5887    "name LIKE '%s'",
5888    1,
5889    "name",
5890    &glin_validate,
5891  },
5892
5893  {
5894    /* Q_GLIN - GET_LIST_INFO, v10 */
5895    "get_list_info",
5896    "glin",
5897    10,
5898    MR_Q_RETRIEVE,
5899    "l",
5900    LIST_TABLE,
5901    "l.name, l.active, l.publicflg, l.hidden, l.maillist, l.grouplist, l.gid, l.nfsgroup, l.mailman, m.name, l.acl_type, l.acl_id, l.memacl_type, l.memacl_id, l.description, TO_CHAR(l.modtime, 'DD-mon-YYYY HH24:MI:SS'), l.modby, l.modwith FROM list l, machine m",
5902    glin_fields,
5903    18,
5904    "l.name LIKE '%s' AND m.mach_id = l.mailman_id",
5905    1,
5906    "l.name",
5907    &glin_validate,
5908  },
5909
5910  {
5911    /* Q_EXLN - EXPAND_LIST_NAMES */
5912    "expand_list_names",
5913    "exln",
5914    2,
5915    MR_Q_RETRIEVE,
5916    "l",
5917    LIST_TABLE,
5918    "name FROM list",
5919    glin_fields,
5920    1,
5921    "name LIKE '%s' AND list_id != 0",
5922    1,
5923    "name",
5924    NULL,
5925  },
5926
5927  {
5928    /* Q_ALIS - ADD_LIST, v2 */ /* uses prefetch_value() for list_id */
5929    "add_list",
5930    "alis",
5931    2,
5932    MR_Q_APPEND,
5933    "l",
5934    LIST_TABLE,
5935    "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)",
5936    alis2_fields,
5937    10,
5938    0,
5939    0,
5940    NULL,
5941    &alis2_validate,
5942  },
5943
5944  {
5945    /* Q_ALIS - ADD_LIST, v3 */ /* uses prefetch_value() for list_id */
5946    "add_list",
5947    "alis",
5948    3,
5949    MR_Q_APPEND,
5950    "l",
5951    LIST_TABLE,
5952    "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, '%s', %d, NVL('%s', CHR(0)), %s)",
5953    alis3_fields,
5954    11,
5955    0,
5956    0,
5957    NULL,
5958    &alis3_validate,
5959  },
5960
5961  {
5962    /* Q_ALIS - ADD_LIST, v4 */ /* uses prefetch_value() for list_id */
5963    "add_list",
5964    "alis",
5965    4,
5966    MR_Q_APPEND,
5967    "l",
5968    LIST_TABLE,
5969    "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, acl_type, acl_id, memacl_type, memacl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, '%s', %d, '%s', %d, NVL('%s', CHR(0)), %s)",
5970    alis4_fields,
5971    13,
5972    0,
5973    0,
5974    NULL,
5975    &alis4_validate,
5976  },
5977
5978  {
5979    /* Q_ALIS - ADD_LIST, v10 */ /* uses prefetch_value() for list_id */
5980    "add_list",
5981    "alis",
5982    10,
5983    MR_Q_APPEND,
5984    "l",
5985    LIST_TABLE,
5986    "INTO list (name, active, publicflg, hidden, maillist, grouplist, gid, nfsgroup, mailman, mailman_id, acl_type, acl_id, memacl_type, memacl_id, description, list_id) VALUES ('%s', %s, %s, %s, %s, %s, %s, %s, %s, %d, '%s', %d, '%s', %d, NVL('%s', CHR(0)), %s)",
5987    alis_fields,
5988    15,
5989    0,
5990    0,
5991    NULL,
5992    &alis_validate,
5993  },
5994
5995  {
5996    /* Q_ULIS - UPDATE_LIST, v2 */
5997    "update_list",
5998    "ulis",
5999    2,
6000    MR_Q_UPDATE,
6001    "l",
6002    LIST_TABLE,
6003    "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))",
6004    ulis2_fields,
6005    10,
6006    "list_id = %d",
6007    1,
6008    NULL,
6009    &ulis2_validate,
6010  },
6011
6012  {
6013    /* Q_ULIS - UPDATE_LIST, v3 */
6014    "update_list",
6015    "ulis",
6016    3,
6017    MR_Q_UPDATE,
6018    "l",
6019    LIST_TABLE,
6020    "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, acl_type = '%s', acl_id = %d, description = NVL('%s', CHR(0))",
6021    ulis3_fields,
6022    11,
6023    "list_id = %d",
6024    1,
6025    NULL,
6026    &ulis3_validate,
6027  },
6028
6029  {
6030    /* Q_ULIS, UPDATE_LIST, v4 */
6031    "update_list",
6032    "ulis",
6033    4,
6034    MR_Q_UPDATE,
6035    "l",
6036    LIST_TABLE,
6037    "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, acl_type = '%s', acl_id = %d, memacl_type = '%s', memacl_id = %d, description = NVL('%s', CHR(0))",
6038    ulis4_fields,
6039    13,
6040    "list_id = %d",
6041    1,
6042    NULL,
6043    &ulis4_validate,
6044  },
6045
6046  {
6047    /* Q_ULIS, UPDATE_LIST, v10 */
6048    "update_list",
6049    "ulis",
6050    10,
6051    MR_Q_UPDATE,
6052    "l",
6053    LIST_TABLE,
6054    "list SET name = '%s', active = %s, publicflg = %s, hidden = %s, maillist = %s, grouplist = %s, gid = %s, nfsgroup = %s, mailman = %s, mailman_id = %d, acl_type = '%s', acl_id = %d, memacl_type = '%s', memacl_id = %d, description = NVL('%s', CHR(0))",
6055    ulis_fields,
6056    15,
6057    "list_id = %d",
6058    1,
6059    NULL,
6060    &ulis_validate,
6061  },
6062
6063  {
6064    /* Q_DLIS - DELETE_LIST */
6065    "delete_list",
6066    "dlis",
6067    2,
6068    MR_Q_DELETE,
6069    "l",
6070    LIST_TABLE,
6071    NULL,
6072    dlis_fields,
6073    0,
6074    "list_id = %d",
6075    1,
6076    NULL,
6077    &dlis_validate,
6078  },
6079
6080  {
6081    /* Q_AMTL - ADD_MEMBER_TO_LIST */
6082    "add_member_to_list",
6083    "amtl",
6084    2,
6085    MR_Q_APPEND,
6086    0,
6087    IMEMBERS_TABLE,
6088    0,
6089    amtl_fields,
6090    3,
6091    NULL,
6092    0,
6093    NULL,
6094    &amtl_validate,
6095  },
6096
6097  {
6098    /* Q_ATML - ADD_TAGGED_MEMBER_TO_LIST */
6099    "add_tagged_member_to_list",
6100    "atml",
6101    2,
6102    MR_Q_APPEND,
6103    0,
6104    IMEMBERS_TABLE,
6105    0,
6106    atml_fields,
6107    4,
6108    NULL,
6109    0,
6110    NULL,
6111    &atml_validate,
6112  },
6113
6114  {
6115    /* Q_TMOL - TAG_MEMBER_OF_LIST */
6116    "tag_member_of_list",
6117    "tmol",
6118    2,
6119    MR_Q_UPDATE,
6120    0,
6121    IMEMBERS_TABLE,
6122    0,
6123    atml_fields,
6124    1,
6125    0,
6126    3,
6127    NULL,
6128    &tmol_validate,
6129  },
6130
6131  {
6132    /* Q_DMFL - DELETE_MEMBER_FROM_LIST */
6133    "delete_member_from_list",
6134    "dmfl",
6135    2,
6136    MR_Q_DELETE,
6137    0,
6138    IMEMBERS_TABLE,
6139    NULL,
6140    amtl_fields,
6141    0,
6142    0,
6143    3,
6144    NULL,
6145    &dmfl_validate,
6146  },
6147
6148  {
6149    /* Q_GAUS - GET_ACE_USE */
6150    "get_ace_use",
6151    "gaus",
6152    2,
6153    MR_Q_RETRIEVE,
6154    0,
6155    0,
6156    0,
6157    gaus_fields,
6158    2,
6159    0,
6160    2,
6161    NULL,
6162    &gaus_validate,
6163  },
6164
6165  {
6166    /* Q_GHBO - GET_HOST_BY_OWNER */
6167    "get_host_by_owner",
6168    "ghbo",
6169    2,
6170    MR_Q_RETRIEVE,
6171    0,
6172    0,
6173    0,
6174    ghbo_fields,
6175    1,
6176    0,
6177    2,
6178    NULL,
6179    &ghbo_validate,
6180  },
6181
6182  {
6183    /* Q_QGLI - QUALIFIED_GET_LISTS */
6184    "qualified_get_lists",
6185    "qgli",
6186    2,
6187    MR_Q_RETRIEVE,
6188    0,
6189    LIST_TABLE,
6190    0,
6191    qgli_fields,
6192    1,
6193    0,
6194    5,
6195    NULL,
6196    &qgli_validate,
6197  },
6198
6199  {
6200    /* Q_GMOL - GET_MEMBERS_OF_LIST */
6201    "get_members_of_list",
6202    "gmol",
6203    2,
6204    MR_Q_RETRIEVE,
6205    NULL,
6206    IMEMBERS_TABLE,
6207    NULL,
6208    gmol_fields,
6209    2,
6210    NULL,
6211    1,
6212    NULL,
6213    &gmol_validate,
6214  },
6215
6216  {
6217    /* Q_GEML - GET_END_MEMBERS_OF_LIST */
6218    "get_end_members_of_list",
6219    "geml",
6220    2,
6221    MR_Q_RETRIEVE,
6222    NULL,
6223    IMEMBERS_TABLE,
6224    NULL,
6225    gmol_fields,
6226    2,
6227    NULL,
6228    1,
6229    NULL,
6230    &gmol_validate,
6231  },
6232
6233  {
6234    /* Q_GTML - GET_TAGGED_MEMBERS_OF_LIST */
6235    "get_tagged_members_of_list",
6236    "gtml",
6237    2,
6238    MR_Q_RETRIEVE,
6239    NULL,
6240    IMEMBERS_TABLE,
6241    NULL,
6242    gtml_fields,
6243    3,
6244    NULL,
6245    1,
6246    NULL,
6247    &gmol_validate,
6248  },
6249
6250  {
6251    /* Q_GLOM - GET_LISTS_OF_MEMBER */
6252    "get_lists_of_member",
6253    "glom",
6254    2,
6255    MR_Q_RETRIEVE,
6256    0,
6257    IMEMBERS_TABLE,
6258    0,
6259    glom_fields,
6260    6,
6261    0,
6262    2,
6263    NULL,
6264    &glom_validate,
6265  },
6266
6267  {
6268    /* Q_CMOL - COUNT_MEMBERS_OF_LIST */
6269    "count_members_of_list",
6270    "cmol",
6271    2,
6272    MR_Q_RETRIEVE,
6273    0,
6274    IMEMBERS_TABLE,
6275    0,
6276    cmol_fields,
6277    1,
6278    0,
6279    1,
6280    NULL,
6281    &cmol_validate,
6282  },
6283
6284  {
6285    /* Q_GSIN - GET_SERVER_INFO */
6286    "get_server_info",
6287    "gsin",
6288    2,
6289    MR_Q_RETRIEVE,
6290    "s",
6291    SERVERS_TABLE,
6292    "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",
6293    gsin_fields,
6294    16,
6295    "name LIKE UPPER('%s')",
6296    1,
6297    "name",
6298    &gsin_validate,
6299  },
6300
6301  {
6302    /* Q_QGSV - QUALIFIED_GET_SERVER */
6303    "qualified_get_server",
6304    "qgsv",
6305    2,
6306    MR_Q_RETRIEVE,
6307    0,
6308    SERVERS_TABLE,
6309    0,
6310    qgsv_fields,
6311    1,
6312    0,
6313    3,
6314    NULL,
6315    &qgsv_validate,
6316  },
6317
6318  {
6319    /* Q_ASIN - ADD_SERVER_INFO */
6320    "add_server_info",
6321    "asin",
6322    2,
6323    MR_Q_APPEND,
6324    "s",
6325    SERVERS_TABLE,
6326    "INTO servers (name, update_int, target_file, script, type, enable, acl_type, acl_id) VALUES (UPPER('%s'), %s, '%s', '%s', '%s', %s, '%s', %d)",
6327    asin_fields,
6328    8,
6329    NULL,
6330    0,
6331    NULL,
6332    &asin_validate,
6333  },
6334
6335  {
6336    /* Q_USIN - UPDATE_SERVER_INFO */
6337    "update_server_info",
6338    "usin",
6339    2,
6340    MR_Q_UPDATE,
6341    "s",
6342    SERVERS_TABLE,
6343    "servers SET update_int = %s, target_file = '%s', script = '%s', type = '%s', enable = %s, acl_type = '%s', acl_id = %d",
6344    asin_fields,
6345    7,
6346    "name = UPPER('%s')",
6347    1,
6348    NULL,
6349    &asin_validate,
6350  },
6351
6352  {
6353    /* Q_RSVE - RESET_SERVER_ERROR */
6354    "reset_server_error",
6355    "rsve",
6356    2,
6357    MR_Q_UPDATE,
6358    "s",
6359    SERVERS_TABLE,
6360    "servers SET harderror = 0, dfcheck = dfgen",
6361    dsin_fields,
6362    0,
6363    "name = UPPER('%s')",
6364    1,
6365    NULL,
6366    &rsve_validate,
6367  },
6368
6369  {
6370    /* Q_SSIF - SET_SERVER_INTERNAL_FLAGS */
6371    "set_server_internal_flags",
6372    "ssif",
6373    2,
6374    MR_Q_UPDATE,
6375    "s",
6376    SERVERS_TABLE,
6377    "servers SET dfgen = %s, dfcheck = %s, inprogress = %s, harderror = %s, errmsg = NVL('%s', CHR(0))",
6378    ssif_fields,
6379    5,
6380    "name = UPPER('%s')",
6381    1,
6382    NULL,
6383    &ssif_validate,
6384  },
6385
6386  {
6387    /* Q_DSIN - DELETE_SERVER_INFO */
6388    "delete_server_info",
6389    "dsin",
6390    2,
6391    MR_Q_DELETE,
6392    "s",
6393    SERVERS_TABLE,
6394    NULL,
6395    dsin_fields,
6396    0,
6397    "name = UPPER('%s')",
6398    1,
6399    NULL,
6400    &dsin_validate,
6401  },
6402
6403  {
6404    /* Q_GSHI - GET_SERVER_HOST_INFO */
6405    "get_server_host_info",
6406    "gshi",
6407    2,
6408    MR_Q_RETRIEVE,
6409    "sh",
6410    SERVERHOSTS_TABLE,
6411    "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",
6412    gshi_fields,
6413    16,
6414    "sh.service LIKE UPPER('%s') AND m.name LIKE UPPER('%s') AND m.mach_id = sh.mach_id",
6415    2,
6416    "sh.service, m.name",
6417    &gshi_validate,
6418  },
6419
6420  {
6421    /* Q_QGSH - QUALIFIED_GET_SERVER_HOST */
6422    "qualified_get_server_host",
6423    "qgsh",
6424    2,
6425    MR_Q_RETRIEVE,
6426    0,
6427    SERVERHOSTS_TABLE,
6428    0,
6429    qgsh_fields,
6430    2,
6431    0,
6432    6,
6433    NULL,
6434    &qgsh_validate,
6435  },
6436
6437  {
6438    /* Q_ASHI - ADD_SERVER_HOST_INFO */
6439    "add_server_host_info",
6440    "ashi",
6441    2,
6442    MR_Q_APPEND,
6443    "sh",
6444    SERVERHOSTS_TABLE,
6445    "INTO serverhosts (service, mach_id, enable, value1, value2, value3) VALUES (UPPER('%s'), %d, %s, %s, %s, NVL('%s', CHR(0)))",
6446    ashi_fields,
6447    6,
6448    NULL,
6449    0,
6450    NULL,
6451    &ashi_validate,
6452  },
6453
6454  {
6455    /* Q_USHI - UPDATE_SERVER_HOST_INFO */
6456    "update_server_host_info",
6457    "ushi",
6458    2,
6459    MR_Q_UPDATE,
6460    "sh",
6461    SERVERHOSTS_TABLE,
6462    "serverhosts SET enable = %s, value1 = %s, value2 = %s, value3 = NVL('%s', CHR(0))",
6463    ashi_fields,
6464    4,
6465    "service = UPPER('%s') AND mach_id = %d",
6466    2,
6467    NULL,
6468    &ashi_validate,
6469  },
6470
6471  {
6472    /* Q_RSHE - RESET_SERVER_HOST_ERROR */
6473    "reset_server_host_error",
6474    "rshe",
6475    2,
6476    MR_Q_UPDATE,
6477    "sh",
6478    SERVERHOSTS_TABLE,
6479    "serverhosts SET hosterror = 0",
6480    dshi_fields,
6481    0,
6482    "service = UPPER('%s') AND mach_id = %d",
6483    2,
6484    NULL,
6485    &rshe_validate,
6486  },
6487
6488  {
6489    /* Q_SSHO - SET_SERVER_HOST_OVERRIDE */
6490    "set_server_host_override",
6491    "ssho",
6492    2,
6493    MR_Q_UPDATE,
6494    "sh",
6495    SERVERHOSTS_TABLE,
6496    "serverhosts SET override = 1",
6497    dshi_fields,
6498    0,
6499    "service = UPPER('%s') AND mach_id = %d",
6500    2,
6501    NULL,
6502    &ssho_validate,
6503  },
6504
6505  {
6506    /* Q_SSHI - SET_SERVER_HOST_INTERNAL */
6507    "set_server_host_internal",
6508    "sshi",
6509    2,
6510    MR_Q_UPDATE,
6511    "s",
6512    SERVERHOSTS_TABLE,
6513    "serverhosts SET override = %s, success = %s, inprogress = %s, hosterror = %s, hosterrmsg = NVL('%s', CHR(0)), ltt = %s, lts = %s",
6514    sshi_fields,
6515    7,
6516    "service = UPPER('%s') AND mach_id = %d",
6517    2,
6518    NULL,
6519    &sshi_validate,
6520  },
6521
6522  {
6523    /* Q_DSHI - DELETE_SERVER_HOST_INFO */
6524    "delete_server_host_info",
6525    "dshi",
6526    2,
6527    MR_Q_DELETE,
6528    "sh",
6529    SERVERHOSTS_TABLE,
6530    NULL,
6531    dshi_fields,
6532    0,
6533    "service = UPPER('%s') AND mach_id = %d",
6534    2,
6535    NULL,
6536    &dshi_validate,
6537  },
6538
6539  {
6540    /* Q_GSLO - GET_SERVER_LOCATIONS */
6541    "get_server_locations",
6542    "gslo",
6543    2,
6544    MR_Q_RETRIEVE,
6545    "sh",
6546    SERVERHOSTS_TABLE,
6547    "sh.service, m.name FROM serverhosts sh, machine m",
6548    gslo_fields,
6549    2,
6550    "sh.service LIKE UPPER('%s') AND sh.mach_id = m.mach_id",
6551    1,
6552    "sh.service, m.name",
6553    NULL,
6554  },
6555
6556  {
6557    /* Q_GFSL - GET_FILESYS_BY_LABEL */
6558    "get_filesys_by_label",
6559    "gfsl",
6560    2,
6561    MR_Q_RETRIEVE,
6562    "fs",
6563    FILESYS_TABLE,
6564    "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",
6565    gfsl_fields,
6566    14,
6567    "fs.label LIKE '%s' AND fs.mach_id = m.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
6568    1,
6569    "fs.label",
6570    &gfsl_validate,
6571  },
6572
6573  {
6574    /* Q_GFSM - GET_FILESYS_BY_MACHINE */
6575    "get_filesys_by_machine",
6576    "gfsm",
6577    2,
6578    MR_Q_RETRIEVE,
6579    "fs",
6580    FILESYS_TABLE,
6581    "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",
6582    gfsm_fields,
6583    14,
6584    "fs.mach_id = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
6585    1,
6586    "fs.label",
6587    &gfsm_validate,
6588  },
6589
6590  {
6591    /* Q_GFSN - GET_FILESYS_BY_NFSPHYS */
6592    "get_filesys_by_nfsphys",
6593    "gfsn",
6594    2,
6595    MR_Q_RETRIEVE,
6596    "fs",
6597    FILESYS_TABLE,
6598    "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",
6599    gfsn_fields,
6600    14,
6601    "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'",
6602    2,
6603    "fs.label",
6604    &gfsn_validate,
6605  },
6606
6607  {
6608    /* Q_GFSG - GET_FILESYS_BY_GROUP */
6609    "get_filesys_by_group",
6610    "gfsg",
6611    2,
6612    MR_Q_RETRIEVE,
6613    "fs",
6614    FILESYS_TABLE,
6615    "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",
6616    gfsg_fields,
6617    14,
6618    "fs.owners = %d AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = l.list_id",
6619    1,
6620    "fs.label",
6621    &gfsg_validate,
6622  },
6623
6624  {
6625    /* Q_GFSP - GET_FILESYS_BY_PATH */
6626    "get_filesys_by_path",
6627    "gfsp",
6628    2,
6629    MR_Q_RETRIEVE,
6630    "fs",
6631    FILESYS_TABLE,
6632    "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",
6633    gfsp_fields,
6634    14,
6635    "fs.name LIKE '%s' AND m.mach_id = fs.mach_id AND fs.owner = u.users_id AND fs.owners = list_id",
6636    1,
6637    "fs.label",
6638    &VDfix_modby,
6639  },
6640
6641  {
6642    /* Q_AFIL - ADD_FILESYS */ /* uses prefetch_value() for filsys_id */
6643    "add_filesys",
6644    "afil",
6645    2,
6646    MR_Q_APPEND,
6647    "fs",
6648    FILESYS_TABLE,
6649    "INTO filesys (label, type, mach_id, name, mount, rwaccess, comments, owner, owners, createflg, lockertype, filsys_id) VALUES ('%s', '%s', %d, NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', NVL('%s', CHR(0)), %d, %d, %s, '%s', %s)",
6650    afil_fields,
6651    11,
6652    0,
6653    0,
6654    NULL,
6655    &afil_validate,
6656  },
6657
6658  {
6659    /* Q_UFIL - UPDATE_FILESYS */
6660    "update_filesys",
6661    "ufil",
6662    2,
6663    MR_Q_UPDATE,
6664    "fs",
6665    FILESYS_TABLE,
6666    "filesys SET label = '%s', type = '%s', mach_id = %d, name = NVL('%s', CHR(0)), mount = NVL('%s', CHR(0)), rwaccess = '%s', comments = NVL('%s', CHR(0)), owner = %d, owners = %d, createflg = %s, lockertype = '%s'",
6667    ufil_fields,
6668    11,
6669    "filsys_id = %d",
6670    1,
6671    NULL,
6672    &ufil_validate,
6673  },
6674
6675  {
6676    /* Q_DFIL - DELETE_FILESYS */
6677    "delete_filesys",
6678    "dfil",
6679    2,
6680    MR_Q_DELETE,
6681    "fs",
6682    FILESYS_TABLE,
6683    NULL,
6684    dfil_fields,
6685    0,
6686    "filsys_id = %d",
6687    1,
6688    NULL,
6689    &dfil_validate,
6690  },
6691
6692  {
6693    /* Q_GFGM - GET_FSGROUP_MEMBERS */
6694    "get_fsgroup_members",
6695    "gfgm",
6696    2,
6697    MR_Q_RETRIEVE,
6698    "fg",
6699    FSGROUP_TABLE,
6700    "fs.label, fg.key FROM fsgroup fg, filesys fs",
6701    gfgm_fields,
6702    2,
6703    "fg.group_id = %d AND fs.filsys_id = fg.filsys_id",
6704    1,
6705    "fs.label, fg.key",
6706    &gfgm_validate,
6707  },
6708
6709  {
6710    /* Q_AFTG - ADD_FILESYS_TO_FSGROUP */
6711    "add_filesys_to_fsgroup",
6712    "aftg",
6713    2,
6714    MR_Q_APPEND,
6715    "fg",
6716    FSGROUP_TABLE,
6717    "INTO fsgroup (group_id, filsys_id, key) VALUES (%d, %d, '%s')",
6718    gfgm_fields,
6719    3,
6720    NULL,
6721    0,
6722    NULL,
6723    &aftg_validate,
6724  },
6725
6726  {
6727    /* Q_RFFG - REMOVE_FILESYS_FROM_FSGROUP */
6728    "remove_filesys_from_fsgroup",
6729    "rffg",
6730    2,
6731    MR_Q_DELETE,
6732    "fg",
6733    FSGROUP_TABLE,
6734    NULL,
6735    gfgm_fields,
6736    0,
6737    "group_id = %d AND filsys_id = %d",
6738    2,
6739    NULL,
6740    &aftg_validate,
6741  },
6742
6743  {
6744    /* Q_GANF - GET_ALL_NFSPHYS */
6745    "get_all_nfsphys",
6746    "ganf",
6747    2,
6748    MR_Q_RETRIEVE,
6749    "np",
6750    NFSPHYS_TABLE,
6751    "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",
6752    ganf_fields,
6753    9,
6754    "m.mach_id = np.mach_id",
6755    0,
6756    "m.name, np.dir",
6757    &VDfix_modby,
6758  },
6759
6760  {
6761    /* Q_GNFP - GET_NFSPHYS */
6762    "get_nfsphys",
6763    "gnfp",
6764    2,
6765    MR_Q_RETRIEVE,
6766    "np",
6767    NFSPHYS_TABLE,
6768    "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",
6769    gnfp_fields,
6770    9,
6771    "np.mach_id = %d AND np.dir LIKE '%s' AND m.mach_id = np.mach_id",
6772    2,
6773    "m.name, np.dir",
6774    &gnfp_validate,
6775  },
6776
6777  {
6778    /* Q_ANFP - ADD_NFSPHYS */ /* uses prefetch_value() for nfsphys_id */
6779    "add_nfsphys",
6780    "anfp",
6781    2,
6782    MR_Q_APPEND,
6783    "np",
6784    NFSPHYS_TABLE,
6785    "INTO nfsphys (mach_id, dir, device, status, allocated, partsize, nfsphys_id) VALUES (%d, '%s', NVL('%s', CHR(0)), %s, %s, %s, %s)",
6786    ganf_fields,
6787    6,
6788    0,
6789    0,
6790    NULL,
6791    &anfp_validate,
6792  },
6793
6794  {
6795    /* Q_UNFP - UPDATE_NFSPHYS */
6796    "update_nfsphys",
6797    "unfp",
6798    2,
6799    MR_Q_UPDATE,
6800    "np",
6801    NFSPHYS_TABLE,
6802    "nfsphys SET device = NVL('%s', CHR(0)), status = %s, allocated = %s, partsize = %s",
6803    ganf_fields,
6804    4,
6805    "mach_id = %d AND dir = '%s'",
6806    2,
6807    NULL,
6808    &unfp_validate,
6809  },
6810
6811  {
6812    /* Q_AJNF - ADJUST_NFSPHYS_ALLOCATION */
6813    "adjust_nfsphys_allocation",
6814    "ajnf",
6815    2,
6816    MR_Q_UPDATE,
6817    "np",
6818    NFSPHYS_TABLE,
6819    "nfsphys SET allocated = allocated + %s",
6820    ajnf_fields,
6821    1,
6822    "mach_id = %d AND dir = '%s'",
6823    2,
6824    NULL,
6825    &ajnf_validate,
6826  },
6827
6828  {
6829    /* Q_DNFP - DELETE_NFSPHYS */
6830    "delete_nfsphys",
6831    "dnfp",
6832    2,
6833    MR_Q_DELETE,
6834    "np",
6835    NFSPHYS_TABLE,
6836    NULL,
6837    dnfp_fields,
6838    0,
6839    "mach_id = %d AND dir = '%s'",
6840    2,
6841    NULL,
6842    &dnfp_validate,
6843  },
6844
6845  {
6846    /* Q_GQOT - GET_QUOTA */
6847    "get_quota",
6848    "gqot",
6849    2,
6850    MR_Q_RETRIEVE,
6851    "q",
6852    QUOTA_TABLE,
6853    "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",
6854    gqot_fields,
6855    9,
6856    "fs.label LIKE '%s' AND q.type = '%s' AND q.entity_id = %d AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
6857    3,
6858    NULL,
6859    &gqot_validate,
6860  },
6861
6862  {
6863    /* Q_GQBF - GET_QUOTA_BY_FILESYS */
6864    "get_quota_by_filesys",
6865    "gqbf",
6866    2,
6867    MR_Q_RETRIEVE,
6868    "q",
6869    QUOTA_TABLE,
6870    "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",
6871    gqbf_fields,
6872    9,
6873    "fs.label LIKE '%s' AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id",
6874    1,
6875    "fs.label, q.type",
6876    &gqbf_validate,
6877  },
6878
6879  {
6880    /* Q_AQOT - ADD_QUOTA */ /* prefetch_filsys() gets last 1 value */
6881    "add_quota",
6882    "aqot",
6883    2,
6884    MR_Q_APPEND,
6885    0,
6886    QUOTA_TABLE,
6887    "INTO quota (filsys_id, type, entity_id, quota, phys_id) VALUES ('%s', %d, %d, %s, %s)",
6888    aqot_fields,
6889    4,
6890    NULL,
6891    0,
6892    NULL,
6893    &aqot_validate,
6894  },
6895
6896  {
6897    /* Q_UQOT - UPDATE_QUOTA */
6898    "update_quota",
6899    "uqot",
6900    2,
6901    MR_Q_UPDATE,
6902    0,
6903    QUOTA_TABLE,
6904    "quota SET quota = %s",
6905    aqot_fields,
6906    1,
6907    0,
6908    3,
6909    NULL,
6910    &uqot_validate,
6911  },
6912
6913  {
6914    /* Q_DQOT - DELETE_QUOTA */
6915    "delete_quota",
6916    "dqot",
6917    2,
6918    MR_Q_DELETE,
6919    0,
6920    QUOTA_TABLE,
6921    NULL,
6922    aqot_fields,
6923    0,
6924    0,
6925    3,
6926    NULL,
6927    &dqot_validate,
6928  },
6929
6930  {
6931    /* Q_GNFQ - GET_NFS_QUOTAS */
6932    "get_nfs_quota",
6933    "gnfq",
6934    2,
6935    MR_Q_RETRIEVE,
6936    "q",
6937    QUOTA_TABLE,
6938    "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",
6939    gnfq_fields,
6940    8,
6941    "fs.label LIKE '%s' AND q.type = 'USER' AND q.entity_id = u.users_id AND fs.filsys_id = q.filsys_id AND m.mach_id = fs.mach_id AND u.login = '%s'",
6942    2,
6943    "fs.label, u.login",
6944    &gnfq_validate,
6945  },
6946
6947  {
6948    /* Q_GNQP - GET_NFS_QUOTAS_BY_PARTITION */
6949    "get_nfs_quotas_by_partition",
6950    "gnqp",
6951    2,
6952    MR_Q_RETRIEVE,
6953    "q",
6954    QUOTA_TABLE,
6955    "fs.label, u.login, q.quota, np.dir, m.name FROM quota q, filesys fs, users u, nfsphys np, machine m",
6956    gnqp_fields,
6957    5,
6958    "np.mach_id = %d AND np.dir LIKE '%s' AND q.phys_id = np.nfsphys_id AND fs.filsys_id = q.filsys_id AND q.type = 'USER' AND u.users_id = q.entity_id AND m.mach_id = np.mach_id",
6959    2,
6960    "fs.label",
6961    NULL,
6962  },
6963
6964  {
6965    /* Q_ANFQ - ADD_NFS_QUOTA */ /* prefetch_filsys() gets last 1 value */
6966    "add_nfs_quota",
6967    "anfq",
6968    2,
6969    MR_Q_APPEND,
6970    0,
6971    QUOTA_TABLE,
6972    "INTO quota (type, filsys_id, entity_id, quota, phys_id ) VALUES ('USER', %d, %d, %s, %s)",
6973    anfq_fields,
6974    3,
6975    NULL,
6976    0,
6977    NULL,
6978    &anfq_validate,
6979  },
6980
6981  {
6982    /* Q_UNFQ - UPDATE_NFS_QUOTA */
6983    "update_nfs_quota",
6984    "unfq",
6985    2,
6986    MR_Q_UPDATE,
6987    0,
6988    QUOTA_TABLE,
6989    "quota SET quota = %s",
6990    anfq_fields,
6991    1,
6992    0,
6993    2,
6994    NULL,
6995    &unfq_validate,
6996  },
6997
6998  {
6999    /* Q_DNFQ - DELETE_NFS_QUOTA */
7000    "delete_nfs_quota",
7001    "dnfq",
7002    2,
7003    MR_Q_DELETE,
7004    0,
7005    QUOTA_TABLE,
7006    NULL,
7007    anfq_fields,
7008    0,
7009    0,
7010    2,
7011    NULL,
7012    &dnfq_validate,
7013  },
7014
7015  {
7016    /* Q_GZCL - GET_ZEPHYR_CLASS, v2 */
7017    "get_zephyr_class",
7018    "gzcl",
7019    2,
7020    MR_Q_RETRIEVE,
7021    "z",
7022    ZEPHYR_TABLE,
7023    "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",
7024    gzcl2_fields,
7025    12,
7026    "class LIKE '%s'",
7027    1,
7028    "class",
7029    &gzcl_validate,
7030  },
7031
7032  {
7033    /* Q_GZCL - GET_ZEPHYR_CLASS, v5 */
7034    "get_zephyr_class",
7035    "gzcl",
7036    5,
7037    MR_Q_RETRIEVE,
7038    "z",
7039    ZEPHYR_TABLE,
7040    "class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, owner_type, owner_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM zephyr",
7041    gzcl_fields,
7042    14,
7043    "class LIKE '%s'",
7044    1,
7045    "class",
7046    &gzcl_validate,
7047  },
7048
7049  {
7050    /* Q_AZCL - ADD_ZEPHYR_CLASS, v2 */
7051    "add_zephyr_class",
7052    "azcl",
7053    2,
7054    MR_Q_APPEND,
7055    "z",
7056    ZEPHYR_TABLE,
7057    "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)",
7058    azcl2_fields,
7059    9,
7060    0,
7061    0,
7062    NULL,
7063    &azcl2_validate,
7064  },
7065
7066  {
7067    /* Q_AZCL - ADD_ZEPHYR_CLASS, v5 */
7068    "add_zephyr_class",
7069    "azcl",
7070    5,
7071    MR_Q_APPEND,
7072    "z",
7073    ZEPHYR_TABLE,
7074    "INTO zephyr (class, xmt_type, xmt_id, sub_type, sub_id, iws_type, iws_id, iui_type, iui_id, owner_type, owner_id) VALUES ('%s', '%s', %d, '%s', %d, '%s', %d, '%s', %d, '%s', %d)",
7075    azcl_fields,
7076    11,
7077    0,
7078    0,
7079    NULL,
7080    &azcl_validate,
7081  },
7082
7083  {
7084    /* Q_UZCL - UPDATE_ZEPHYR_CLASS, v2 */
7085    "update_zephyr_class",
7086    "uzcl",
7087    2,
7088    MR_Q_UPDATE,
7089    "z",
7090    ZEPHYR_TABLE,
7091    "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",
7092    uzcl2_fields,
7093    9,
7094    "class = '%s'",
7095    1,
7096    NULL,
7097    &uzcl2_validate,
7098  },
7099
7100  {
7101    /* Q_UZCL - UPDATE_ZEPHYR_CLASS, v5 */
7102    "update_zephyr_class",
7103    "uzcl",
7104    5,
7105    MR_Q_UPDATE,
7106    "z",
7107    ZEPHYR_TABLE,
7108    "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, owner_type = '%s', owner_id = %d",
7109    uzcl_fields,
7110    11,
7111    "class = '%s'",
7112    1,
7113    NULL,
7114    &uzcl_validate,
7115  },
7116
7117  {
7118    /* Q_DZCL - DELETE_ZEPHYR_CLASS */
7119    "delete_zephyr_class",
7120    "dzcl",
7121    2,
7122    MR_Q_DELETE,
7123    "z",
7124    ZEPHYR_TABLE,
7125    0,
7126    uzcl_fields,
7127    0,
7128    "class = '%s'",
7129    1,
7130    NULL,
7131    &dzcl_validate,
7132  },
7133
7134  {
7135    /* Q_GSHA - GET_SERVER_HOST_ACCESS */
7136    "get_server_host_access",
7137    "gsha",
7138    2,
7139    MR_Q_RETRIEVE,
7140    "ha",
7141    HOSTACCESS_TABLE,
7142    "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",
7143    gsha_fields,
7144    6,
7145    "m.name LIKE UPPER('%s') AND ha.mach_id = m.mach_id",
7146    1,
7147    "m.name",
7148    &gsha_validate,
7149  },
7150
7151  {
7152    /* Q_ASHA - ADD_SERVER_HOST_ACCESS */
7153    "add_server_host_access",
7154    "asha",
7155    2,
7156    MR_Q_APPEND,
7157    "ha",
7158    HOSTACCESS_TABLE,
7159    "INTO hostaccess (mach_id, acl_type, acl_id) VALUES (%d, '%s', %d)",
7160    asha_fields,
7161    3,
7162    0,
7163    0,
7164    NULL,
7165    &asha_validate,
7166  },
7167
7168  {
7169    /* Q_USHA - UPDATE_SERVER_HOST_ACCESS */
7170    "update_server_host_access",
7171    "usha",
7172    2,
7173    MR_Q_UPDATE,
7174    "ha",
7175    HOSTACCESS_TABLE,
7176    "hostaccess SET acl_type = '%s', acl_id = %d",
7177    asha_fields,
7178    2,
7179    "mach_id = %d",
7180    1,
7181    NULL,
7182    &asha_validate,
7183  },
7184
7185  {
7186    /* Q_DSHA - DELETE_SERVER_HOST_ACCESS */
7187    "delete_server_host_access",
7188    "dsha",
7189    2,
7190    MR_Q_DELETE,
7191    "ha",
7192    HOSTACCESS_TABLE,
7193    0,
7194    asha_fields,
7195    0,
7196    "mach_id = %d",
7197    1,
7198    NULL,
7199    &VDmach,
7200  },
7201
7202  {
7203    /* Q_GACL - GET_ACL */
7204    "get_acl",
7205    "gacl",
7206    2,
7207    MR_Q_RETRIEVE,
7208    "ac",
7209    ACL_TABLE,
7210    "m.name, ac.target, ac.kind, l.name FROM acl ac, machine m, list l",
7211    gacl_fields,
7212    4,
7213    "m.mach_id = %d AND m.mach_id = ac.mach_id AND ac.target LIKE '%s' AND l.list_id = ac.list_id",
7214    2,
7215    "m.name, ac.target, ac.kind",
7216    &gacl_validate,
7217  },
7218
7219  {
7220    /* Q_AACL - ADD_ACL */
7221    "add_acl",
7222    "aacl",
7223    2,
7224    MR_Q_APPEND,
7225    "ac",
7226    ACL_TABLE,
7227    "INTO acl (mach_id, target, kind, list_id) VALUES (%d, '%s', '%s', %d)",
7228    aacl_fields,
7229    4,
7230    0,
7231    0,
7232    NULL,
7233    &aacl_validate,
7234  },
7235
7236  {
7237    /* Q_DACL - DELETE_ACL */
7238    "delete_acl",
7239    "dacl",
7240    2,
7241    MR_Q_DELETE,
7242    "ac",
7243    ACL_TABLE,
7244    0,
7245    dacl_fields,
7246    0,
7247    "mach_id = %d AND target = '%s'",
7248    2,
7249    NULL,
7250    &gacl_validate,
7251  },
7252
7253  {
7254    /* Q_GSVC - GET_SERVICE */
7255    "get_service",
7256    "gsvc",
7257    2,
7258    MR_Q_RETRIEVE,
7259    "ss",
7260    SERVICES_TABLE,
7261    "name, protocol, port, description, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM services",
7262    gsvc_fields,
7263    7,
7264    "name LIKE '%s' AND protocol LIKE '%s'",
7265    2,
7266    "name",
7267    &VDfix_modby,
7268  },
7269
7270  {
7271    /* Q_ASVC - ADD_SERVICE */
7272    "add_service",
7273    "asvc",
7274    2,
7275    MR_Q_APPEND,
7276    "ss",
7277    SERVICES_TABLE,
7278    "INTO services (name, protocol, port, description) VALUES ('%s', '%s', %s, NVL('%s', CHR(0)))",
7279    asvc_fields,
7280    4,
7281    NULL,
7282    0,
7283    NULL,
7284    &asvc_validate,
7285  },
7286
7287  {
7288    /* Q_DSVC - DELETE_SERVICE */
7289    "delete_service",
7290    "dsvc",
7291    2,
7292    MR_Q_DELETE,
7293    "ss",
7294    SERVICES_TABLE,
7295    0,
7296    dsvc_fields,
7297    0,
7298    "name = '%s' AND protocol = '%s'",
7299    2,
7300    NULL,
7301    &dsvc_validate,
7302  },
7303
7304  {
7305    /* Q_GPRN - GET_PRINTER */
7306    "get_printer",
7307    "gprn",
7308    2,
7309    MR_Q_RETRIEVE,
7310    "pr",
7311    PRINTERS_TABLE,
7312    "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7313    gprn_fields,
7314    19,
7315    "pr.name LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7316    1,
7317    "pr.name",
7318    &VDfix_modby,
7319  },
7320
7321  {
7322    /* Q_GPBD - GET_PRINTER_BY_DUPLEXNAME */
7323    "get_printer_by_duplexname",
7324    "gpbd",
7325    2,
7326    MR_Q_RETRIEVE,
7327    "pr",
7328    PRINTERS_TABLE,
7329    "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7330    gpbd_fields,
7331    19,
7332    "pr.duplexname LIKE '%s' AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7333    1,
7334    "pr.name",
7335    &VDfix_modby,
7336  },
7337
7338  {
7339    /* Q_GPBE - GET_PRINTER_BY_ETHERNET */
7340    "get_printer_by_ethernet",
7341    "gpbe",
7342    2,
7343    MR_Q_RETRIEVE,
7344    "pr",
7345    PRINTERS_TABLE,
7346    "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7347    gpbd_fields,
7348    19,
7349    "m1.hwaddr LIKE LOWER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7350    1,
7351    "pr.name",
7352    &VDfix_modby,
7353  },
7354
7355  {
7356    /* Q_GPBH - GET_PRINTER_BY_HOSTNAME */
7357    "get_printer_by_hostname",
7358    "gpbh",
7359    2,
7360    MR_Q_RETRIEVE,
7361    "pr",
7362    PRINTERS_TABLE,
7363    "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7364    gpbh_fields,
7365    19,
7366    "m1.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7367    1,
7368    "pr.name",
7369    &VDfix_modby,
7370  },
7371
7372  {
7373    /* Q_GPBR - GET_PRINTER_BY_RM */
7374    "get_printer_by_rm",
7375    "gpbr",
7376    2,
7377    MR_Q_RETRIEVE,
7378    "pr",
7379    PRINTERS_TABLE,
7380    "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7381    gpbr_fields,
7382    19,
7383    "m3.name LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7384    1,
7385    "pr.name",
7386    &VDfix_modby,
7387  },
7388
7389  {
7390    /* Q_GPBL - GET_PRINTER_BY_LOCATION */
7391    "get_printer_by_location",
7392    "gpbl",
7393    2,
7394    MR_Q_RETRIEVE,
7395    "pr",
7396    PRINTERS_TABLE,
7397    "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7398    gpbl_fields,
7399    19,
7400    "UPPER(pr.location) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7401    1,
7402    "pr.name",
7403    &VDfix_modby,
7404  },
7405
7406  {
7407    /* Q_GPBC - GET_PRINTER_BY_CONTACT */
7408    "get_printer_by_contact",
7409    "gpbc",
7410    2,
7411    MR_Q_RETRIEVE,
7412    "pr",
7413    PRINTERS_TABLE,
7414    "pr.name, pr.type, pr.hwtype, pr.duplexname, m1.name, m2.name, m3.name, pr.rp, m4.name, pr.ka, pr.pc, l1.name, l2.name, pr.banner, pr.location, pr.contact, TO_CHAR(pr.modtime, 'DD-mon-YYYY HH24:MI:SS'), pr.modby, pr.modwith FROM printers pr, machine m1, machine m2, machine m3, machine m4, list l1, list l2",
7415    gpbc_fields,
7416    19,
7417    "UPPER(pr.contact) LIKE UPPER('%s') AND m1.mach_id = pr.mach_id AND m2.mach_id = pr.loghost AND m3.mach_id = pr.rm AND m4.mach_id = pr.rq AND l1.list_id = pr.ac AND l2.list_id = pr.lpc_acl",
7418    1,
7419    "pr.name",
7420    &VDfix_modby,
7421  },
7422
7423  {
7424    /* Q_APRN - ADD_PRINTER */
7425    "add_printer",
7426    "aprn",
7427    2,
7428    MR_Q_APPEND,
7429    "pr",
7430    PRINTERS_TABLE,
7431    "INTO printers (name, type, hwtype, duplexname, mach_id, loghost, rm, rp, rq, ka, pc, ac, lpc_acl, banner, location, contact) VALUES ('%s', '%s', '%s', NVL('%s', CHR(0)), %d, %d, %d, NVL('%s', CHR(0)), %d, %s, %s, %d, %d, %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)))",
7432    aprn_fields,
7433    16,
7434    0,
7435    0,
7436    NULL,
7437    &aprn_validate,
7438  },
7439
7440  {
7441    /* Q_UPRN - UPDATE_PRINTER */
7442    "update_printer",
7443    "uprn",
7444    2,
7445    MR_Q_UPDATE,
7446    "pr",
7447    PRINTERS_TABLE,
7448    "printers SET name = '%s', type = '%s', hwtype = '%s', duplexname = NVL('%s', CHR(0)), mach_id = %d, loghost = %d, rm = %d, rp = NVL('%s', CHR(0)), rq = %d, ka = %s, pc = %s, ac = %d, lpc_acl = %d, banner = %s, location = NVL('%s', CHR(0)), contact = NVL('%s', CHR(0))",
7449    uprn_fields,
7450    16,
7451    "name = '%s'",
7452    1,
7453    NULL,
7454    &uprn_validate,
7455  },
7456
7457  {
7458    /* Q_DPRN - DELETE_PRINTER */
7459    "delete_printer",
7460    "dprn",
7461    2,
7462    MR_Q_DELETE,
7463    "pr",
7464    PRINTERS_TABLE,
7465    0,
7466    aprn_fields,
7467    0,
7468    "name = '%s'",
7469    1,
7470    NULL,
7471    &dprn_validate,
7472  },
7473
7474  {
7475    /* Q_GPSV - GET_PRINT_SERVER */
7476    "get_print_server",
7477    "gpsv",
7478    2,
7479    MR_Q_RETRIEVE,
7480    "ps",
7481    PRINTSERVERS_TABLE,
7482    "m.name, ps.kind, s.string, ps.owner_type, ps.owner_id, l.name, TO_CHAR(ps.modtime, 'DD-mon-YYYY HH24:MI:SS'), ps.modby, ps.modwith FROM printservers ps, machine m, strings s, list l",
7483    gpsv_fields,
7484    9,
7485    "ps.mach_id = %d AND m.mach_id = ps.mach_id AND s.string_id = ps.printer_types AND l.list_id = ps.lpc_acl",
7486    1,
7487    NULL,
7488    &gpsv_validate,
7489  },
7490
7491  {
7492    /* Q_APSV - ADD_PRINT_SERVER */
7493    "add_print_server",
7494    "apsv",
7495    2,
7496    MR_Q_APPEND,
7497    "ps",
7498    PRINTSERVERS_TABLE,
7499    "INTO printservers (mach_id, kind, printer_types, owner_type, owner_id, lpc_acl) VALUES (%d, '%s', %d, '%s', %d, %d)",
7500    apsv_fields,
7501    6,
7502    0,
7503    0,
7504    NULL,
7505    &apsv_validate,
7506  },
7507
7508  {
7509    /* Q_UPSV - UPDATE_PRINT_SERVER */
7510    "update_print_server",
7511    "upsv",
7512    2,
7513    MR_Q_UPDATE,
7514    "ps",
7515    PRINTSERVERS_TABLE,
7516    "printservers SET kind = '%s', printer_types = %d, owner_type = '%s', owner_id = %d, lpc_acl = %d",
7517    apsv_fields,
7518    5,
7519    "mach_id = %d",
7520    1,
7521    NULL,
7522    &apsv_validate,
7523  },
7524
7525  {
7526    /* Q_DPSV - DELETE_PRINT_SERVER */
7527    "delete_print_server",
7528    "dpsv",
7529    2,
7530    MR_Q_DELETE,
7531    "ps",
7532    PRINTSERVERS_TABLE,
7533    0,
7534    dpsv_fields,
7535    0,
7536    "mach_id = %d",
7537    1,
7538    NULL,
7539    &dpsv_validate,
7540  },
7541
7542  {
7543    /* Q_GALI - GET_ALIAS */
7544    "get_alias",
7545    "gali",
7546    2,
7547    MR_Q_RETRIEVE,
7548    "a",
7549    ALIAS_TABLE,
7550    "name, type, trans FROM alias",
7551    gali_fields,
7552    3,
7553    "name LIKE '%s' AND type LIKE '%s' AND trans LIKE '%s'",
7554    3,
7555    "type, name, trans",
7556    NULL,
7557  },
7558
7559  {
7560    /* Q_AALI - ADD_ALIAS */
7561    "add_alias",
7562    "aali",
7563    2,
7564    MR_Q_APPEND,
7565    "a",
7566    ALIAS_TABLE,
7567    "INTO alias (name, type, trans) VALUES ('%s', '%s', '%s')",
7568    aali_fields,
7569    3,
7570    NULL,
7571    0,
7572    NULL,
7573    &aali_validate,
7574  },
7575
7576  {
7577    /* Q_DALI - DELETE_ALIAS */
7578    "delete_alias",
7579    "dali",
7580    2,
7581    MR_Q_DELETE,
7582    "a",
7583    ALIAS_TABLE,
7584    NULL,
7585    aali_fields,
7586    0,
7587    "name = '%s' AND type = '%s' AND  trans = '%s'",
7588    3,
7589    NULL,
7590    &dali_validate,
7591  },
7592
7593  {
7594    /* Q_GVAL - GET_VALUE */
7595    "get_value",
7596    "gval",
7597    2,
7598    MR_Q_RETRIEVE,
7599    "val",
7600    NUMVALUES_TABLE,
7601    "value FROM numvalues",
7602    gval_fields,
7603    1,
7604    "name = '%s'",
7605    1,
7606    NULL,
7607    &gval_validate,
7608  },
7609
7610  {
7611    /* Q_AVAL - ADD_VALUE */
7612    "add_value",
7613    "aval",
7614    2,
7615    MR_Q_APPEND,
7616    "val",
7617    NUMVALUES_TABLE,
7618    "INTO numvalues (name, value) VALUES ('%s', %s)",
7619    aval_fields,
7620    2,
7621    NULL,
7622    0,
7623    NULL,
7624    &aval_validate,
7625  },
7626
7627  {
7628    /* Q_UVAL - UPDATE_VALUE */
7629    "update_value",
7630    "uval",
7631    2,
7632    MR_Q_UPDATE,
7633    "val",
7634    NUMVALUES_TABLE,
7635    "numvalues SET value = %s",
7636    aval_fields,
7637    1,
7638    "name = '%s'",
7639    1,
7640    NULL,
7641    &aval_validate,
7642  },
7643
7644  {
7645    /* Q_DVAL - DELETE_VALUE */
7646    "delete_value",
7647    "dval",
7648    2,
7649    MR_Q_DELETE,
7650    "val",
7651    NUMVALUES_TABLE,
7652    NULL,
7653    dval_fields,
7654    0,
7655    "name = '%s'",
7656    1,
7657    NULL,
7658    &aval_validate,
7659  },
7660
7661  {
7662    /* Q_GATS - GET_ALL_TABLE_STATS */
7663    "get_all_table_stats",
7664    "gats",
7665    2,
7666    MR_Q_RETRIEVE,
7667    "tbs",
7668    TBLSTATS_TABLE,
7669    "table_name, appends, updates, deletes, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS') FROM tblstats",
7670    gats_fields,
7671    5,
7672    NULL,
7673    0,
7674    "table_name",
7675    0,
7676  },
7677
7678  {
7679    /* Q__SDL - _SET_DEBUG_LEVEL */
7680    "_set_debug_level",
7681    "_sdl",
7682    2,
7683    MR_Q_UPDATE,
7684    NULL,
7685    0,
7686    NULL,
7687    _sdl_fields,
7688    1,
7689    NULL,
7690    0,
7691    NULL,
7692    &_sdl_validate,
7693  },
7694
7695  {
7696    /* Q_GCON - GET_CONTAINER, v7 */
7697    "get_container",
7698    "gcon",
7699    7,
7700    MR_Q_RETRIEVE,
7701    "c",
7702    CONTAINERS_TABLE,
7703    "name, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM containers",
7704    gcon7_fields,
7705    11,
7706    "LOWER(name) LIKE LOWER('%s') AND cnt_id != 0",
7707    1,
7708    NULL,
7709    &gcon_validate,
7710  },
7711
7712  {
7713    /* Q_GCON - GET_CONTAINER, v9 */
7714    "get_container",
7715    "gcon",
7716    9,
7717    MR_Q_RETRIEVE,
7718    "c",
7719    CONTAINERS_TABLE,
7720    "name, publicflg, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, TO_CHAR(modtime, 'DD-mon-YYYY HH24:MI:SS'), modby, modwith FROM containers",
7721    gcon_fields,
7722    12,
7723    "LOWER(name) LIKE LOWER('%s') AND cnt_id != 0",
7724    1,
7725    NULL,
7726    &gcon_validate,
7727  },
7728
7729  {
7730    /* Q_ACON - ADD_CONTAINER, v7 */ /* uses prefetch_value() for cnt_id */
7731    "add_container",
7732    "acon",
7733    7,
7734    MR_Q_APPEND,
7735    "c",
7736    CONTAINERS_TABLE,
7737    "INTO containers (name, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, cnt_id) VALUES ('%s', NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, '%s', %d, %s)",
7738    acon7_fields,
7739    8,
7740    0,
7741    0,
7742    NULL,
7743    &acon7_validate,
7744  },
7745
7746  {
7747    /* Q_ACON - ADD_CONTAINER, v9 */ /* uses prefetch_value() for cnt_id */
7748    "add_container",
7749    "acon",
7750    9,
7751    MR_Q_APPEND,
7752    "c",
7753    CONTAINERS_TABLE,
7754    "INTO containers (name, publicflg, description, location, contact, acl_type, acl_id, memacl_type, memacl_id, cnt_id) VALUES ('%s', %s, NVL('%s', CHR(0)), NVL('%s', CHR(0)), NVL('%s', CHR(0)), '%s', %d, '%s', %d, %s)",
7755    acon_fields,
7756    9,
7757    0,
7758    0,
7759    NULL,
7760    &acon_validate,
7761  },
7762
7763  {
7764    /* Q_UCON - UPDATE_CONTAINER, v7 */
7765    "update_container",
7766    "ucon",
7767    7,
7768    MR_Q_UPDATE,
7769    0,
7770    CONTAINERS_TABLE,
7771    0,
7772    ucon7_fields,
7773    8,
7774    0,
7775    1,
7776    NULL,
7777    &ucon7_validate,
7778  },
7779
7780  {
7781    /* Q_UCON - UPDATE_CONTAINER, v9 */
7782    "update_container",
7783    "ucon",
7784    9,
7785    MR_Q_UPDATE,
7786    0,
7787    CONTAINERS_TABLE,
7788    0,
7789    ucon_fields,
7790    9,
7791    0,
7792    1,
7793    NULL,
7794    &ucon_validate,
7795  },
7796
7797  {
7798    /* Q_DCON - DELETE_CONTAINER, v7 */
7799    "delete_container",
7800    "dcon",
7801    7,
7802    MR_Q_DELETE,
7803    "c",
7804    CONTAINERS_TABLE,
7805    NULL,
7806    dcon_fields,
7807    0,
7808    "cnt_id = %d",
7809    1,
7810    NULL,
7811    &dcon_validate,
7812  },
7813
7814  {
7815    /* Q_AMCN - ADD_MACHINE_TO_CONTAINER, v7 */
7816    "add_machine_to_container",
7817    "amcn",
7818    7,
7819    MR_Q_APPEND,
7820    "mcn",
7821    MCNTMAP_TABLE,
7822    "INTO mcntmap (mach_id, cnt_id) VALUES (%d, %d)",
7823    amcn_fields,
7824    2,
7825    0,
7826    0,
7827    NULL,
7828    &amcn_validate,
7829  },
7830
7831  {
7832    /* Q_DMCN - DELETE_MACHINE_FROM_CONTAINER, v7 */
7833    "delete_machine_from_container",
7834    "dmcn",
7835    7,
7836    MR_Q_DELETE,
7837    "mcn",
7838    MCNTMAP_TABLE,
7839    0,
7840    amcn_fields,
7841    0,
7842    "mach_id = %d AND cnt_id = %d",
7843    2,
7844    NULL,
7845    &dmcn_validate,
7846  },
7847
7848  {
7849    /* Q_GMNM - GET_MACHINE_TO_CONTAINER_MAP, v7 */
7850    "get_machine_to_container_map",
7851    "gmnm",
7852    7,
7853    MR_Q_RETRIEVE,
7854    "mcn",
7855    MCNTMAP_TABLE,
7856    "m.name, c.name FROM machine m, containers c, mcntmap mcn",
7857    gmnm_fields,
7858    2,
7859    "m.name LIKE UPPER('%s') AND mcn.cnt_id = c.cnt_id AND mcn.mach_id = m.mach_id",
7860    1,
7861    NULL,
7862    NULL,
7863  },
7864
7865  {
7866    /* Q_GMOC - GET_MACHINES_OF_CONTAINER, v7 */
7867    "get_machines_of_container",
7868    "gmoc",
7869    7,
7870    MR_Q_RETRIEVE,
7871    NULL,
7872    MCNTMAP_TABLE,
7873    NULL,
7874    gmoc_fields,
7875    2,
7876    NULL,
7877    2,
7878    NULL,
7879    &gmoc_validate,
7880  },
7881
7882  {
7883    /* Q_GSOC - GET_SUBCONTAINERS_OF_CONTAINER, v7 */
7884    "get_subcontainers_of_container",
7885    "gsoc",
7886    7,
7887    MR_Q_RETRIEVE,
7888    NULL,
7889    CONTAINERS_TABLE,
7890    NULL,
7891    gsoc_fields,
7892    1,
7893    NULL,
7894    2,
7895    NULL,
7896    &gsoc_validate,
7897  },
7898
7899  {
7900    /* Q_GTLC - GET_TOPLEVEL_CONTAINERS, v7 */
7901    "get_toplevel_containers",
7902    "gtlc",
7903    7,
7904    MR_Q_RETRIEVE,
7905    "c",
7906    CONTAINERS_TABLE,
7907    "name FROM containers",
7908    gtlc_fields,
7909    1,
7910    "name NOT LIKE '%%/%%'",
7911    0,
7912    "name",
7913    NULL,
7914  },
7915
7916  {
7917    /* Q_SCLI - SET_CONTAINER_LIST, v9 */
7918    "set_container_list",
7919    "scli",
7920    9,
7921    MR_Q_UPDATE,
7922    0,
7923    CONTAINERS_TABLE,
7924    0,
7925    scli_fields,
7926    1,
7927    0,
7928    1,
7929    NULL,
7930    &scli_validate,
7931  },
7932
7933  {
7934    /* Q_GCLI - GET_CONTAINER_LIST, v9 */
7935    "get_container_list",
7936    "gcli",
7937    9,
7938    MR_Q_RETRIEVE,
7939    "c",
7940    CONTAINERS_TABLE,
7941    "c.name, l.name FROM containers c, list l",
7942    gcli_fields,
7943    2,
7944    "LOWER(c.name) = LOWER('%s') AND c.list_id = l.list_id AND c.list_id != 0",
7945    1,
7946    NULL,
7947    NULL,
7948  },
7949
7950  {
7951    /* G_GLIC - GET_LIST_CONTAINER, v9 */
7952    "get_list_container",
7953    "glic",
7954    9,
7955    MR_Q_RETRIEVE,
7956    "c",
7957    CONTAINERS_TABLE,
7958    "c.name, l.name FROM containers c, list l",
7959    glic_fields,
7960    2,
7961    "l.list_id = %d AND l.list_id = c.list_id and c.list_id != 0",
7962    1,
7963    NULL,
7964    &glic_validate,
7965  },
7966
7967};
7968
7969int QueryCount = (sizeof(Queries) / sizeof(struct query));
Note: See TracBrowser for help on using the repository browser.