diff options
Diffstat (limited to 'src/data.h')
-rw-r--r-- | src/data.h | 58 |
1 files changed, 48 insertions, 10 deletions
@@ -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; |