]> andersk Git - moira.git/blob - server/queries2.c
Make update_printer work.
[moira.git] / server / queries2.c
1 /* $Id$
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
21 static struct valobj VOuser0[] = {
22   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
23 };
24
25 static struct valobj VOmach0[] = {
26   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
27 };
28
29 static struct valobj VOclu0[] = {
30   {V_ID, 0, CLUSTERS_TABLE, "name", "clu_id", MR_CLUSTER},
31 };
32
33 static struct valobj VOsnet0[] = {
34   {V_ID, 0, SUBNET_TABLE, "name", "snet_id", MR_SUBNET},
35 };
36
37 static struct valobj VOlist0[] = {
38   {V_ID, 0, LIST_TABLE, "name", "list_id", MR_LIST},
39 };
40
41 static struct valobj VOfilesys0[] = {
42   {V_ID, 0, FILESYS_TABLE, "label", "filsys_id", MR_FILESYS},
43 };
44
45 static struct valobj VOcon0[] = {
46   {V_ID, 0, CONTAINERS_TABLE, "name", "cnt_id", MR_CONTAINER},
47 };
48
49 static 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
58 static struct validate VDmach = { VOmach0, 1 };
59
60 static 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
74 static char *galo2_fields[] = {
75   "login", "unix_uid", "shell", "last", "first", "middle",
76 };
77
78 static char *galo_fields[] = {
79   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
80 };
81
82 static 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
89 static 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
96 static 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
104 static 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
112 static char *gubl2_fields[] = {
113   "login",
114   "login", "unix_uid", "shell", "last", "first", "middle", "status",
115   "clearid", "class", "modtime", "modby", "modwith",
116 };
117
118 static 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
125 static 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
138 static 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
151 static 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
158 static 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
165 static 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
173 static 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
181 static 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
188 static 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
195 static 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
203 static 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
211 static 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
224 static 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
237 static 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
244 static 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
251 static 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
259 static 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
267 static 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
274 static 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
281 static 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
289 static 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
297 static char *guas_fields[] = {
298   "sponsor_type", "sponsor_name",
299   "login",
300 };
301
302 static 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
307 static 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
319 static char *gubu2_fields[] = {
320   "unix_uid",
321   "login", "unix_uid", "shell", "last", "first", "middle", "status",
322   "clearid", "class", "modtime", "modby", "modwith",
323 };
324
325 static 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
332 static 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
345 static 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
358 static char *gubn2_fields[] = {
359   "first", "last",
360   "login", "unix_uid", "shell", "last", "first", "middle", "status",
361   "clearid", "class", "modtime", "modby", "modwith",
362 };
363
364 static 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
371 static 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
384 static 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
397 static char *gubc2_fields[] = {
398   "class",
399   "login", "unix_uid", "shell", "last", "first", "middle", "status",
400   "clearid", "class", "modtime", "modby", "modwith",
401 };
402
403 static 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
410 static char *gubm2_fields[] = {
411   "clearid",
412   "login", "unix_uid", "shell", "last", "first", "middle", "status",
413   "clearid", "class", "modtime", "modby", "modwith",
414 };
415
416 static 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
423 static char *auac2_fields[] = {
424   "login", "unix_uid", "shell", "last", "first", "middle", "status",
425   "clearid", "class", "comments", "signature", "secure",
426 };
427
428 static char *auac3_fields[] = {
429   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", 
430   "middle", "status", "clearid", "class", "comments", "signature", "secure",
431 };
432
433 static char *auac11_fields[] = {
434   "login", "unix_uid", "shell", "winconsoleshell", "last", "first", "middle",
435   "status", "clearid", "class", "comments", "signature", "secure",
436   "winhomedir", "winprofiledir",
437 };
438
439 static 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
445 static 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
459 static 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
474 static 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
491 static 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
511 static 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
523 static 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
535 static 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
547 static 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
559 static 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
571 static 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
583 static 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
595 static 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
607 static char *rusr_fields[] = {
608   "unix_uid", "login", "pobox_type"
609 };
610
611 static struct valobj rusr_valobj[] = {
612   {V_NUM, 0},
613   {V_CHAR, 1, USERS_TABLE, "login"},
614 };
615
616 static 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
628 static char *uuac2_fields[] = {
629   "login",
630   "newlogin", "unix_uid", "shell", "last", "first", "middle", "status",
631   "clearid", "class", "comments", "signature", "secure",
632 };
633
634 static char *uuac3_fields[] = {
635   "login",
636   "newlogin", "unix_uid", "shell", "winconsoleshell", "last", "first", 
637   "middle", "status", "clearid", "class", "comments", "signature", "secure",
638 };
639
640 static 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
647 static 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
654 static 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   
669 static 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
685 static 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
703 static 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
724 static 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
736 static 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
748 static 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
760 static 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
772 static 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
784 static 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
796 static 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
808 static 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
820 static char *uush_fields[] = {
821   "login",
822   "shell",
823 };
824
825 static struct valobj uush_valobj[] = {
826   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
827   {V_CHAR, 1, USERS_TABLE, "shell"},
828 };
829
830 static 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
842 static char *uuws_fields[] = {
843   "login",
844   "winconsoleshell",
845 };
846
847 static struct valobj uuws_valobj[] = {
848   {V_ID, 0, USERS_TABLE, "login", "users_id", MR_USER},
849   {V_CHAR, 1, USERS_TABLE, "winconsoleshell"},
850 };
851
852 static 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
864 static char *uust_fields[] = {
865   "login",
866   "status",
867 };
868
869 static char *uuss_fields[] = {
870   "login",
871   "secure",
872 };
873
874 static 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
880 static 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
892 static char *dusr_fields[] = {
893   "login",
894 };
895
896 static 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
908 static char *aurv_fields[] = {
909   "login", "reservation",
910 };
911
912 static 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
924 static char *gurv_fields[] = {
925   "login",
926   "reservation",
927 };
928
929 static 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
941 static char *gubr_fields[] = {
942   "reservation",
943   "login",
944 };
945
946 static 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
958 static char *gkum_fields[] = { "login", "kerberos",
959                                    "login", "kerberos" };
960
961 static char *akum_fields[] = { "login", "kerberos" };
962
963 static 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
969 static 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
982 static 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
995 static 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
1002 static 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
1014 static char *ufbl_fields[] = {
1015   "login",
1016   "fullname", "nickname", "home_addr",
1017   "home_phone", "office_addr", "office_phone", "department",
1018   "affiliation",
1019 };
1020
1021 static 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
1033 static 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
1045 static char *gpob_fields[] = {
1046   "login",
1047   "login", "type", "box", "address", "modtime", "modby", "modwith",
1048 };
1049
1050 static 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
1062 static char *gpox_fields[] = {
1063   "login", "type", "box",
1064 };
1065
1066 static 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
1078 static char *spob_fields[] = {
1079   "login", "type", "box",
1080 };
1081
1082 static 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
1087 static 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
1100 static 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
1113 static 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
1126 static char *gmac_fields[] = {
1127   "name",
1128   "name", "type", "modtime", "modby", "modwith",
1129 };
1130
1131 static 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
1139 static 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
1147 static 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
1155 static 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
1163 static 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
1171 static 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
1179 static 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
1187 static 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
1199 static char *ghha_fields[] = {
1200   "name",
1201   "hwaddr",
1202 };
1203
1204 static 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
1210 static 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
1226 static 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
1238 static 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
1244 static 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
1261 static 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
1273 static 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
1279 static 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
1297 static 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
1309 static 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
1316 static 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
1334 static 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
1346 static 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
1353 static 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
1372 static 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
1384 static 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
1391 static 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
1411 static 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
1423 static char *uhha_fields[] = {
1424   "name",
1425   "hwaddr"
1426 };
1427
1428 static struct valobj uhha_valobj[] = {
1429   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1430   {V_CHAR, 1, MACHINE_TABLE, "hwaddr"},
1431 };
1432
1433 static 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
1445 static char *dhst_fields[] = {
1446   "name",
1447 };
1448
1449 static 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
1461 static char *ghal_fields[] = {
1462   "alias", "canonical_hostname",
1463   "alias", "canonical_hostname"
1464 };
1465
1466 static 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
1478 static struct valobj ahal_valobj[] = {
1479   {V_CHAR, 0, HOSTALIAS_TABLE, "name"},
1480   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1481 };
1482
1483 static 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
1495 static struct valobj dhal_valobj[] = {
1496   {V_ID, 1, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
1497 };
1498
1499 static 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
1511 static char *gsnt2_fields[] = {
1512   "name",
1513   "name", "description", "address", "mask", "low", "high", "prefix",
1514   "ace_type", "ace_name", "modtime", "modby", "modwith"
1515 };
1516
1517 static 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
1524 static 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
1536 static char *asnt2_fields[] = {
1537   "name", "description", "address", "mask", "low", "high", "prefix",
1538   "ace_type", "ace_name",
1539 };
1540
1541 static 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
1553 static 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
1566 static char *asnt_fields[] = {
1567   "name", "description", "status", "contact", "account_number", "address", 
1568   "mask", "low", "high", "prefix", "ace_type", "ace_name",
1569 };
1570
1571 static 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
1586 static 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
1599 static char *usnt2_fields[] = {
1600   "name",
1601   "newname", "description", "address", "mask", "low", "high", "prefix",
1602   "ace_type", "ace_name",
1603 };
1604
1605 static 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
1618 static 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
1631 static char *usnt_fields[] = {
1632   "name",
1633   "newname", "description", "status", "contact", "account_number", "address", 
1634   "mask", "low", "high", "prefix", "ace_type", "ace_name",
1635 };
1636
1637 static 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
1653 static 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
1666 static char *dsnt_fields[] = {
1667   "name",
1668 };
1669
1670 static 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
1682 static char *gclu_fields[] = {
1683   "name",
1684   "name", "description", "location", "modtime", "modby", "modwith",
1685 };
1686
1687 static char *aclu_fields[] = {
1688   "name", "description", "location",
1689 };
1690
1691 static 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
1697 static 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
1710 static char *uclu_fields[] = {
1711   "name",
1712   "newname", "description", "location",
1713 };
1714
1715 static 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
1722 static 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
1734 static char *dclu_fields[] = {
1735   "name",
1736 };
1737
1738 static 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
1750 static char *gmcm_fields[] = {
1751   "machine", "cluster",
1752   "machine", "cluster",
1753 };
1754
1755 static 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
1761 static 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
1774 static char *gcld_fields[] = {
1775   "cluster", "serv_label",
1776   "cluster", "serv_label", "serv_cluster",
1777 };
1778
1779 static char *acld_fields[] = {
1780   "cluster", "serv_label", "serv_cluster",
1781 };
1782
1783 static 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
1790 static 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
1803 static 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
1816 static char *glin2_fields[] = {
1817   "name",
1818   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1819   "ace_type", "ace_name", "description", "modtime", "modby", "modwith",
1820 };
1821
1822 static 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
1829 static 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
1836 static 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
1843 static 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
1855 static char *alis2_fields[] = {
1856   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1857   "ace_type", "ace_name", "description",
1858 };
1859
1860 static 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
1873 static 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
1885 static char *alis3_fields[] = {
1886   "name", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1887   "nfsgroup", "ace_type", "ace_name", "description",
1888 };
1889
1890 static 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
1904 static 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
1916 static 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
1922 static 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
1938 static 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
1950 static 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
1956 static 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
1974 static 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
1986 static char *ulis2_fields[] = {
1987   "name",
1988   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid",
1989   "ace_type", "ace_name", "description",
1990 };
1991
1992 static 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
2006 static 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
2018 static char *ulis3_fields[] = {
2019   "name",
2020   "newname", "active", "publicflg", "hidden", "maillist", "grouplist", "gid", 
2021   "nfsgroup", "ace_type", "ace_name", "description",
2022 };
2023
2024 static 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
2039 static 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
2051 static 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
2058 static 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
2075 static 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
2087 static 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
2094 static 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
2113 static 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
2125 static char *dlis_fields[] = {
2126   "name",
2127 };
2128
2129 static 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
2141 static char *amtl_fields[] = {
2142   "list_name", "member_type", "member_name",
2143 };
2144
2145 static char *atml_fields[] = {
2146   "list_name", "member_type", "member_name", "tag",
2147 };
2148
2149 static 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
2156 static 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
2169 static 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
2182 static 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
2195 static 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
2208 static char *gaus_fields[] = {
2209   "ace_type", "ace_name",
2210   "use_type", "use_name",
2211 };
2212
2213 static 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
2218 static 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
2230 static char *ghbo_fields[] = {
2231   "ace_type", "ace_name",
2232   "name",
2233 };
2234
2235 static 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
2240 static 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
2252 static char *qgli_fields[] = {
2253   "active", "publicflg", "hidden", "maillist", "grouplist",
2254   "list",
2255 };
2256
2257 static 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
2265 static 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
2277 static char *gmol_fields[] = {
2278   "list_name",
2279   "member_type", "member_name",
2280 };
2281
2282 static char *gtml_fields[] = {
2283   "list_name",
2284   "member_type", "member_name", "tag",
2285 };
2286
2287 static 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
2299 static char *glom_fields[] = {
2300   "member_type", "member_name",
2301   "list_name", "active", "publicflg", "hidden", "maillist", "grouplist",
2302 };
2303
2304 static 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
2309 static 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
2321 static char *cmol_fields[] = {
2322   "list_name",
2323   "count",
2324 };
2325
2326 static 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
2338 static 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
2345 static 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
2358 static char *qgsv_fields[] = {
2359   "enable", "inprogress", "harderror",
2360   "service",
2361 };
2362
2363 static 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
2369 static 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
2381 static char *asin_fields[] = {
2382   "service", "update_int", "target_file", "script", "type", "enable",
2383   "ace_type", "ace_name",
2384 };
2385
2386 static 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
2397 static 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
2410 static 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
2422 static char *ssif_fields[] = {
2423   "service", "dfgen", "dfcheck", "inprogress", "harderror", "errmsg",
2424 };
2425
2426 static 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
2435 static 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
2447 static char *dsin_fields[] = {
2448   "service",
2449 };
2450
2451 static 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
2463 static 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
2470 static 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
2482 static char *qgsh_fields[] = {
2483   "service", "enable", "override", "success", "inprogress", "hosterror",
2484   "service", "machine",
2485 };
2486
2487 static 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
2495 static 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
2507 static char *ashi_fields[] = {
2508   "service", "machine", "enable", "value1", "value2", "value3",
2509 };
2510
2511 static 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
2520 static 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
2533 static 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
2546 static 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
2559 static char *sshi_fields[] = {
2560   "service", "machine", "override", "success", "inprogress",
2561   "hosterror", "errmsg", "ltt", "lts",
2562 };
2563
2564 static 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
2576 static 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
2589 static char *dshi_fields[] = {
2590   "service", "machine",
2591 };
2592
2593 static 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
2606 static char *gslo_fields[] = {
2607   "server",
2608   "server", "machine",
2609 };
2610
2611 static char *gfsl_fields[] = {
2612   "label",
2613   "label", "type", "machine", "name", "mount", "access", "comments",
2614   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2615 };
2616
2617 static 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
2629 static char *gfsm_fields[] = {
2630   "machine",
2631   "label", "type", "machine", "name", "mount", "access", "comments",
2632   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2633 };
2634
2635 static 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
2647 static char *gfsn_fields[] = {
2648   "machine", "partition",
2649   "label", "type", "machine", "name", "mount", "access", "comments",
2650   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2651 };
2652
2653 static 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
2665 static char *gfsp_fields[] = {
2666   "path",
2667   "label", "type", "machine", "name", "mount", "access", "comments",
2668   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2669 };
2670
2671 static char *gfsg_fields[] = {
2672   "list",
2673   "label", "type", "machine", "name", "mount", "access", "comments",
2674   "owner", "owners", "create", "lockertype", "modtime", "modby", "modwith",
2675 };
2676
2677 static 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
2689 static char *afil_fields[] = {
2690   "label", "type", "machine", "name", "mount", "access", "comments",
2691   "owner", "owners", "create", "lockertype",
2692 };
2693
2694 static 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
2708 static 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
2720 static char *ufil_fields[] = {
2721   "label", "newlabel", "type", "machine", "name", "mount", "access",
2722   "comments", "owner", "owners", "create", "lockertype",
2723 };
2724
2725 static 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
2740 static 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
2752 static char *dfil_fields[] = {
2753   "label",
2754 };
2755
2756 static 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
2768 static char *gfgm_fields[] = {
2769   "fsgroup", "filesys", "sortkey"
2770 };
2771
2772 static struct validate gfgm_validate = {
2773   VOfilesys0,
2774   1,
2775   0,
2776   0,
2777   0,
2778   0,
2779   0,
2780   0,
2781   0,
2782 };
2783
2784 static 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
2789 static 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
2801 static char *ganf_fields[] = {
2802   "machine", "dir", "device", "status", "allocated", "size",
2803   "modtime", "modby", "modwith",
2804 };
2805
2806 static char *gnfp_fields[] = {
2807   "machine", "dir",
2808   "machine", "dir", "device", "status", "allocated", "size",
2809   "modtime", "modby", "modwith",
2810 };
2811
2812 static 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
2824 static 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
2833 static 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
2845 static 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
2857 static char *ajnf_fields[] = {
2858   "machine", "dir", "adjustment",
2859 };
2860
2861 static 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
2867 static 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
2879 static char *dnfp_fields[] = {
2880   "machine", "dir",
2881 };
2882
2883 static 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
2895 static char *gqot_fields[] = {
2896   "filesys", "type", "name",
2897   "filesys", "type", "name", "quota", "dir", "machine",
2898   "modtime", "modby", "modwith",
2899 };
2900
2901 static 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
2906 static 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
2918 static char *gqbf_fields[] = {
2919   "filesys",
2920   "filesys", "type", "name", "quota", "dir", "machine",
2921   "modtime", "modby", "modwith",
2922 };
2923
2924 static 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
2936 static char *aqot_fields[] = {
2937   "filesys", "type", "name", "quota",
2938 };
2939
2940 static 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
2947 static 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
2959 static 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
2971 static 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
2983 static char *gnfq_fields[] = {
2984   "filesys", "login",
2985   "filesys", "login", "quota", "dir", "machine",
2986   "modtime", "modby", "modwith",
2987 };
2988
2989 static 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
3001 static char *gnqp_fields[] = {
3002   "machine", "dir",
3003   "filesys", "login", "quota", "dir", "machine",
3004   "modtime", "modby", "modwith",
3005 };
3006
3007 static char *anfq_fields[] = {
3008   "filesys", "login", "quota",
3009 };
3010
3011 static 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
3017 static 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
3029 static 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
3041 static 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
3053 static 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
3060 static 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
3067 static 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
3079 static char *azcl2_fields[] = {
3080   "class", "xmt_type", "xmt_name", "sub_type", "sub_name",
3081   "iws_type", "iws_name", "iui_type", "iui_name",
3082 };  
3083
3084 static 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
3096 static 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
3108 static 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
3114 static 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
3128 static 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
3140 static 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
3145 static 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
3158 static 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
3170 static 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
3175 static 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
3190 static 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
3202 static 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
3214 static char *gsha_fields[] = {
3215   "machine",
3216   "machine", "ace_type", "ace_name", "modtime", "modby", "modwith",
3217 };
3218
3219 static 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
3232 static char *asha_fields[] = {
3233   "machine", "ace_type", "ace_name",
3234 };
3235
3236 static 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
3242 static 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
3255 static char *gacl_fields[] = {
3256   "machine", "target",
3257   "machine", "target", "kind", "list",
3258 };
3259
3260 static char *aacl_fields[] = {
3261   "machine", "target", "kind", "list",
3262 };
3263
3264 static char *dacl_fields[] = {
3265   "machine", "target",
3266 };
3267
3268 static 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
3275 static 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
3288 static 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
3301 static char *gsvc_fields[] = {
3302   "service", "protocol",
3303   "service", "protocol", "port", "description", "modtime", "modby", "modwith",
3304 };
3305
3306 static char *asvc_fields[] = {
3307   "service", "protocol", "port", "description",
3308 };
3309
3310 static char *dsvc_fields[] = {
3311   "service", "protocol",
3312 };
3313
3314 static 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
3321 static 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
3333 static 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
3345 static 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
3352 static 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
3359 static 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
3366 static 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
3373 static 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
3380 static 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
3387 static 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
3394 static 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
3400 static 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
3419 static 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
3431 static 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
3438 static 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
3458 static 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
3470 static 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
3482 static char *gpsv_fields[] = {
3483   "host",
3484   "host", "kind", "printer_types", "owner_type", "owner_name",
3485   "lpc_acl", "modtime", "modby", "modwith"
3486 };
3487
3488 static struct valobj gpsv_valobj[] = {
3489   {V_ID, 0, MACHINE_TABLE, "name", "mach_id", MR_MACHINE},
3490 };
3491
3492 static 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
3504 static char *apsv_fields[] = {
3505   "host", "kind", "printer_types", "owner_type", "owner_name", "lpc_acl"
3506 };
3507
3508 static 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
3517 static 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
3529 static char *dpsv_fields[] = {
3530   "host",
3531 };
3532
3533 static 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
3545 static char *gali_fields[] = {
3546   "name", "type", "trans",
3547   "name", "type", "trans",
3548 };
3549
3550 static char *aali_fields[] = {
3551   "name", "type", "trans",
3552 };
3553
3554 static 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
3560 static 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
3572 static 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
3585 static char *gval_fields[] = {
3586   "name", "value",
3587 };
3588
3589 static struct valobj gval_valobj[] = {
3590   {V_NAME, 0, NUMVALUES_TABLE, "name", 0, MR_NO_MATCH},
3591 };
3592
3593 static 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
3605 static char *aval_fields[] = {
3606   "name", "value",
3607 };
3608
3609 static struct valobj aval_valobj[] = {
3610   {V_CHAR, 0, NUMVALUES_TABLE, "name"},
3611   {V_NUM, 1},
3612 };
3613
3614 static 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
3627 static char *dval_fields[] = {
3628   "name",
3629 };
3630
3631 static char *gats_fields[] = {
3632   "table_name", "appends", "updates", "deletes",
3633   "modtime", "modby", "modwith",
3634 };
3635
3636 static char *_sdl_fields[] = {
3637   "level",
3638 };
3639
3640 static 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
3653 static char *gcon7_fields[] = {
3654   "name",
3655   "name", "description", "location", "contact",
3656   "ace_type", "ace_name", "memace_type", "memace_name", "modtime", "modby", "modwith",
3657 };
3658
3659 static 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
3671 static 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
3677 static char *acon7_fields[] = {
3678   "name", "description", "location", "contact",
3679   "ace_type", "ace_name", "memace_type", "memace_name",
3680 };
3681
3682 static 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
3693 static 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
3706 static char *acon_fields[] = {
3707   "name", "publicflg", "description", "location", "contact",
3708   "ace_type", "ace_name", "memace_type", "memace_name",
3709 };
3710
3711 static 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
3723 static 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
3736 static char *ucon7_fields[] = {
3737   "name",
3738   "newname", "description", "location", "contact",
3739   "ace_type", "ace_name", "memace_type", "memace_name",
3740 };
3741
3742 static 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
3754 static 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
3767 static char *ucon_fields[] = {
3768   "name",
3769   "newname", "publicflg", "description", "location", "contact",
3770   "ace_type", "ace_name", "memace_type", "memace_name",
3771 };
3772
3773 static 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
3786 static 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
3799 static char *dcon_fields[] = {
3800   "name",
3801 };
3802
3803 static 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
3816 static char *amcn_fields[] = {
3817   "machine", "container",
3818 };
3819
3820 static 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
3826 static 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
3839 static 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
3852 static char *gmnm_fields[] = {
3853   "machine",
3854   "machine", "container",
3855 };
3856
3857 static char *gmoc_fields[] = {
3858   "container",
3859   "isrecursive",
3860         "machine",
3861   "container",
3862 };
3863
3864 static 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
3877 static char *gsoc_fields[] = {
3878   "container",
3879   "isrecursive",
3880         "subcontainer",
3881 };
3882
3883 static 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
3896 static char *gtlc_fields[] = {
3897   "name",
3898 };
3899
3900 static char *scli_fields[] = {
3901   "containername",
3902   "listname",
3903 };
3904
3905 static 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
3910 static 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
3922 static char *gcli_fields[] = {
3923   "containername",
3924   "containername", "listname",
3925 };
3926
3927 static 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
3940 static 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
3955 struct 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
7969 int QueryCount = (sizeof(Queries) / sizeof(struct query));
This page took 0.90149 seconds and 5 git commands to generate.