aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.h')
-rw-r--r--src/data.h58
1 files changed, 48 insertions, 10 deletions
diff --git a/src/data.h b/src/data.h
index 0e1a3b0..3c87ac3 100644
--- a/src/data.h
+++ b/src/data.h
@@ -14,24 +14,44 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
#pragma once
+/******************************************************************************/
+/******************************************************************************/
+/* GENERIC COMMON DATA TYPES FOR CLIENTS */
+/******************************************************************************/
+/******************************************************************************/
+
+/** Maximum length of any string */
+#define MAX_NAME_LENGTH 8000
+/** string for deniying access */
#define DENY "no"
+
+/** string for allowing access */
#define ALLOW "yes"
-#define ASK "ask"
+
+/** default is denying */
#define DEFAULT DENY
+/**
+ * ANY string, made of one single character, is used to match
+ * rules and keys that can contain WIDE or other value.
+ * This allow to search specifically to WIDE when WIDE is specified in the
+ * search key or to any value (including WIDE) when any is used.
+ */
#define Data_Any_Char '#'
-#define Data_Wide_Char '*'
-
#define Data_Any_String "#"
-#define Data_Wide_String "*"
-typedef enum data_keyidx data_keyidx_t;
-typedef union data_key data_key_t;
-typedef struct data_value data_value_t;
+/**
+ * WIDE string, made of one character, is used in rules to match any
+ * queried value.
+ */
+#define Data_Wide_Char '*'
+#define Data_Wide_String "*"
+/**
+ * Name of the index on keys
+ */
enum data_keyidx {
KeyIdx_Client,
KeyIdx_Session,
@@ -39,21 +59,39 @@ enum data_keyidx {
KeyIdx_Permission,
KeyIdx_Count
};
+typedef enum data_keyidx data_keyidx_t;
+/**
+ * A key is made of 4 strings that can be accessed by index or by name
+ */
union data_key {
/* name access */
struct {
+ /** the client */
const char *client;
+
+ /** the session */
const char *session;
+
+ /** the user */
const char *user;
+
+ /** the permission */
const char *permission;
};
- /* arrayed access, see data_keyidx_t */
+ /** Array for index access, see data_keyidx_t */
const char *keys[KeyIdx_Count];
};
+typedef union data_key data_key_t;
+/**
+ * A value is made of a string (mainly ALLOW or DENY) and an expiration.
+ */
struct data_value {
+ /** judgment of the rule: ALLOW, DENY or agent description */
const char *value;
+
+ /** expiration time of the rule */
time_t expire;
};
-
+typedef struct data_value data_value_t;