1/* 2 * Copyright (c) 1999-2005, 2008, 2010 3 * Todd C. Miller <Todd.Miller@courtesan.com> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 * 17 * Sponsored in part by the Defense Advanced Research Projects 18 * Agency (DARPA) and Air Force Research Laboratory, Air Force 19 * Materiel Command, USAF, under agreement number F39502-99-1-0512. 20 */ 21 22#ifndef _SUDO_DEFAULTS_H 23#define _SUDO_DEFAULTS_H 24 25#include <def_data.h> 26 27struct list_member { 28 char *value; 29 struct list_member *next; 30}; 31 32struct def_values { 33 char *sval; /* string value */ 34 int ival; /* actually an enum */ 35}; 36 37enum list_ops { 38 add, 39 delete, 40 freeall 41}; 42 43/* 44 * Structure describing compile-time and run-time options. 45 */ 46struct sudo_defs_types { 47 char *name; 48 int type; 49 char *desc; 50 struct def_values *values; 51 int (*callback) __P((const char *)); 52 union { 53 int flag; 54 int ival; 55 double fval; 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, T_FLOAT 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_FLOAT 87#define T_FLOAT 0x010 88#undef T_MASK 89#define T_MASK 0x0FF 90#undef T_BOOL 91#define T_BOOL 0x100 92#undef T_PATH 93#define T_PATH 0x200 94 95/* 96 * Argument to update_defaults() and check_defaults() 97 */ 98#define SETDEF_GENERIC 0x01 99#define SETDEF_HOST 0x02 100#define SETDEF_USER 0x04 101#define SETDEF_RUNAS 0x08 102#define SETDEF_CMND 0x10 103#define SETDEF_ALL (SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER|SETDEF_RUNAS|SETDEF_CMND) 104 105/* 106 * Prototypes 107 */ 108int set_default __P((char *, char *, int)); 109int update_defaults __P((int)); 110int check_defaults __P((int, int)); 111void dump_default __P((void)); 112void dump_defaults __P((void)); 113void init_defaults __P((void)); 114void list_options __P((void)); 115 116extern struct sudo_defs_types sudo_defs_table[]; 117 118#endif /* _SUDO_DEFAULTS_H */ 119