Merge illumos-gate
[unleashed/lotheac.git] / include / secdb.h
blobf5fed8e945a27ffc32e3cabc45f5fd05818ff0c0
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
19 * CDDL HEADER END
22 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
25 #ifndef _SECDB_H
26 #define _SECDB_H
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
33 #define DEFAULT_POLICY "solaris"
34 #define SUSER_POLICY "suser" /* fallback: old policy */
36 #define KV_ACTION "act"
37 #define KV_COMMAND "cmd"
38 #define KV_JAVA_CLASS "java_class"
39 #define KV_JAVA_METHOD "java_method"
41 #define KV_ASSIGN "="
42 #define KV_DELIMITER ";"
43 #define KV_EMPTY ""
44 #define KV_ESCAPE '\\'
45 #define KV_ADD_KEYS 16 /* number of key value pairs to realloc */
46 #define KV_SPECIAL "=;:\\"
47 #define KV_TOKEN_DELIMIT ":"
48 #define KV_WILDCARD "*"
49 #define KV_WILDCHAR '*'
50 #define KV_ACTION_WILDCARD "*;*;*;*;*"
51 #define KV_SEPCHAR ','
52 #define KV_SEPSTR ","
53 #define KV_OBJECTCHAR '/'
54 #define KV_OBJECT "/"
55 #define KV_AUDIT_DELIMIT ":"
57 #define KV_FLAG_NONE 0x0000
58 #define KV_FLAG_REQUIRED 0x0001
61 * return status macros for all attribute databases
63 #define ATTR_FOUND 0 /* Authoritative found */
64 #define ATTR_NOT_FOUND -1 /* Authoritative not found */
65 #define ATTR_NO_RECOVERY -2 /* Non-recoverable errors */
68 typedef struct kv_s {
69 char *key;
70 char *value;
71 } kv_t; /* A key-value pair */
73 typedef struct kva_s {
74 int length; /* array length */
75 kv_t *data; /* array of key value pairs */
76 } kva_t; /* Key-value array */
79 extern char *kva_match(kva_t *, char *);
80 extern int _auth_match(const char *, const char *);
81 extern char *_argv_to_csl(char **strings);
82 extern char **_csl_to_argv(char *csl);
83 extern char *_do_unescape(char *src);
84 extern void _free_argv(char **p_argv);
85 extern int _insert2kva(kva_t *, char *, char *);
86 extern int _kva2str(kva_t *, char *, int, char *, char *);
87 extern kva_t *_kva_dup(kva_t *);
88 extern void _kva_free(kva_t *);
89 extern void _kva_free_value(kva_t *, char *);
90 extern kva_t *_new_kva(int size);
91 extern kva_t *_str2kva(char *, char *, char *);
92 extern int _enum_auths(const char *, int (*)(const char *, void *, void *),
93 void *ctxt, void *pres);
94 extern int _enum_profs(const char *,
95 int (*)(const char *, kva_t *, void *, void *), void *ctxt, void *pres);
96 extern int _enum_attrs(const char *,
97 int (*)(const char *, kva_t *, void *, void *), void *ctxt, void *pres);
99 #ifdef __cplusplus
101 #endif
103 #endif /* _SECDB_H */