| /* |
| * Copyright (c) 1999-2005, 2008, 2010 |
| * Todd C. Miller <Todd.Miller@courtesan.com> |
| * |
| * Permission to use, copy, modify, and distribute this software for any |
| * purpose with or without fee is hereby granted, provided that the above |
| * copyright notice and this permission notice appear in all copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| * |
| * Sponsored in part by the Defense Advanced Research Projects |
| * Agency (DARPA) and Air Force Research Laboratory, Air Force |
| * Materiel Command, USAF, under agreement number F39502-99-1-0512. |
| */ |
| |
| #ifndef _SUDO_DEFAULTS_H |
| #define _SUDO_DEFAULTS_H |
| |
| #include <def_data.h> |
| |
| struct list_member { |
| char *value; |
| struct list_member *next; |
| }; |
| |
| struct def_values { |
| char *sval; /* string value */ |
| int ival; /* actually an enum */ |
| }; |
| |
| enum list_ops { |
| add, |
| delete, |
| freeall |
| }; |
| |
| /* |
| * Structure describing compile-time and run-time options. |
| */ |
| struct sudo_defs_types { |
| char *name; |
| int type; |
| char *desc; |
| struct def_values *values; |
| int (*callback) __P((char *)); |
| union { |
| int flag; |
| int ival; |
| double fval; |
| enum def_tupple tuple; |
| char *str; |
| mode_t mode; |
| struct list_member *list; |
| } sd_un; |
| }; |
| |
| /* |
| * Four types of defaults: strings, integers, and flags. |
| * Also, T_INT, T_FLOAT or T_STR may be ANDed with T_BOOL to indicate that |
| * a value is not required. Flags are boolean by nature... |
| */ |
| #undef T_INT |
| #define T_INT 0x001 |
| #undef T_UINT |
| #define T_UINT 0x002 |
| #undef T_STR |
| #define T_STR 0x003 |
| #undef T_FLAG |
| #define T_FLAG 0x004 |
| #undef T_MODE |
| #define T_MODE 0x005 |
| #undef T_LIST |
| #define T_LIST 0x006 |
| #undef T_LOGFAC |
| #define T_LOGFAC 0x007 |
| #undef T_LOGPRI |
| #define T_LOGPRI 0x008 |
| #undef T_TUPLE |
| #define T_TUPLE 0x009 |
| #undef T_FLOAT |
| #define T_FLOAT 0x010 |
| #undef T_MASK |
| #define T_MASK 0x0FF |
| #undef T_BOOL |
| #define T_BOOL 0x100 |
| #undef T_PATH |
| #define T_PATH 0x200 |
| |
| /* |
| * Argument to update_defaults() |
| */ |
| #define SETDEF_GENERIC 0x01 |
| #define SETDEF_HOST 0x02 |
| #define SETDEF_USER 0x04 |
| #define SETDEF_RUNAS 0x08 |
| #define SETDEF_CMND 0x10 |
| #define SETDEF_ALL (SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER|SETDEF_RUNAS|SETDEF_CMND) |
| |
| /* |
| * Prototypes |
| */ |
| int set_default __P((char *, char *, int)); |
| int update_defaults __P((int)); |
| void dump_default __P((void)); |
| void dump_defaults __P((void)); |
| void init_defaults __P((void)); |
| void list_options __P((void)); |
| |
| extern struct sudo_defs_types sudo_defs_table[]; |
| |
| #endif /* _SUDO_DEFAULTS_H */ |