1 /*
2  * Copyright (c) 1999-2001 Todd C. Miller <Todd.Miller@courtesan.com>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  *
16  * Sponsored in part by the Defense Advanced Research Projects
17  * Agency (DARPA) and Air Force Research Laboratory, Air Force
18  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
19  *
20  * $Sudo: defaults.h,v 1.28 2004/02/13 21:36:43 millert Exp $
21  */
22 
23 #ifndef _SUDO_DEFAULTS_H
24 #define _SUDO_DEFAULTS_H
25 
26 #include <def_data.h>
27 
28 struct list_member {
29     char *value;
30     struct list_member *next;
31 };
32 
33 struct def_values {
34     char *sval;		/* string value */
35     int ival;		/* actually an enum */
36 };
37 
38 enum list_ops {
39     add,
40     delete,
41     freeall
42 };
43 
44 /*
45  * Structure describing compile-time and run-time options.
46  */
47 struct sudo_defs_types {
48     char *name;
49     int type;
50     char *desc;
51     struct def_values *values;
52     int (*callback) __P((char *));
53     union {
54 	int flag;
55 	int ival;
56 	enum def_tupple tuple;
57 	char *str;
58 	mode_t mode;
59 	struct list_member *list;
60     } sd_un;
61 };
62 
63 /*
64  * Four types of defaults: strings, integers, and flags.
65  * Also, T_INT or T_STR may be ANDed with T_BOOL to indicate that
66  * a value is not required.  Flags are boolean by nature...
67  */
68 #undef T_INT
69 #define T_INT		0x001
70 #undef T_UINT
71 #define T_UINT		0x002
72 #undef T_STR
73 #define T_STR		0x003
74 #undef T_FLAG
75 #define T_FLAG		0x004
76 #undef T_MODE
77 #define T_MODE		0x005
78 #undef T_LIST
79 #define T_LIST		0x006
80 #undef T_LOGFAC
81 #define T_LOGFAC	0x007
82 #undef T_LOGPRI
83 #define T_LOGPRI	0x008
84 #undef T_TUPLE
85 #define T_TUPLE		0x009
86 #undef T_MASK
87 #define T_MASK		0x0FF
88 #undef T_BOOL
89 #define T_BOOL		0x100
90 #undef T_PATH
91 #define T_PATH		0x200
92 
93 /*
94  * Prototypes
95  */
96 void dump_default	__P((void));
97 int set_default		__P((char *, char *, int));
98 void init_defaults	__P((void));
99 void list_options	__P((void));
100 
101 extern struct sudo_defs_types sudo_defs_table[];
102 
103 #endif /* _SUDO_DEFAULTS_H */
104