/[pdpsoft]/trunk/grid-mw-security/ees/include/common/pdl.h
ViewVC logotype

Annotation of /trunk/grid-mw-security/ees/include/common/pdl.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1145 - (hide annotations) (download) (as text)
Thu Nov 19 14:40:54 2009 UTC (12 years, 6 months ago) by aramv
File MIME type: text/x-csrc
File size: 4087 byte(s)
Managed to build a tree of pointers to plugins in the plugin manager. The plugin tree is based on the string-based tree the parser has created
1 aramv 886 /*!
2    
3     \file pdl.h
4     \brief Callback functions for parser of the evaluation manager
5     \author Aram Verstegen
6    
7     This header contains some callback functions used for the PDL parser:
8     It contains the following functions:
9 aramv 890
10     -# pdl_init(const char*): Inilizes the parser
11     -# pdl_term(void): terminates the parser
12 aramv 1070 -# set_modules_path(record_t*): sets the path to use for plug-ins (used by the parser)
13 aramv 890 -# get_pdl_path(void): returns the path read from the config file or empty string if none was parsed
14     -# add_policy(record_t*, rule_t*): adds a new policy
15     -# add_rule(record_t*, record_t*, record_t*): adds a new rule
16     -# remove_policy(record_t* policy): removes a policy
17     -# add_variable(record_t* name, record_t* value): adds a variable (plug-in) to the list
18     -# allow_rules(int):
19     -# allowed_policy_rule(const char* label):
20    
21     -# concat_strings(record_t*, record_t*): concatenates two strings
22     -# concat_strings_with_space(record_t*, record_t*): concatenates two strings separated by a space
23     */
24    
25 aramv 530 #ifndef PDL_H
26     #define PDL_H
27 aramv 1142
28 aramv 874 #if HAVE_CONFIG_H
29     #include "config.h"
30     #endif
31 aramv 594 #if HAVE_STDIO_H
32     #include <stdio.h>
33     #endif
34     #if HAVE_STDLIB_H
35     #include <stdlib.h>
36     #endif
37 aramv 878 #include "plugin_manager.h"
38 aramv 810 #include "eef_log.h"
39 aramv 530
40     #define TRUE 1
41 aramv 1074 #define FALSE 0
42 aramv 530
43 aramv 886 /*!
44     * \brief Structure for symbols used by the parser internally
45     */
46 aramv 530 typedef struct record_s {
47 aramv 1123 char* string; /*!< Hold the symbol that lex has found. */
48     int lineno; /*!< Hold the line number the symbol has been found. */
49 aramv 530 } record_t;
50    
51 aramv 1074
52 aramv 530 /*!
53 aramv 1074 * \brief Structure keeps track of the variables, their value and the line number they are defined on.
54     */
55     typedef struct var_s {
56 aramv 1123 char* name; /*!< Name of the variable. */
57     char* value; /*!< Value of the variable. */
58     unsigned int lineno; /*!< Line number the variable appears on. */
59     struct var_s* next; /*!< Next variable, or 0 if none. */
60 aramv 1074 } var_t;
61    
62     /*!
63 aramv 886 * \brief Structure to make a tree of
64 aramv 530 *
65     */
66     typedef struct rule_s {
67 aramv 1123 unsigned int lineno; /*!< Line number where rule appeared. */
68     char* state; /*!< Name of the state.*/
69     struct rule_s* true_branch; /*!< True branch or NULL if none */
70     struct rule_s* false_branch; /*!< False branch or NULL if none */
71     struct rule_s* next; /*!< Next rule, or NULL if none */
72 aramv 530 } rule_t;
73    
74 aramv 886 /*!
75     * \brief Structure to build a tree of plugins as defined in a policy in the config file
76     */
77 aramv 530 typedef struct policy_s {
78 aramv 1123 char* name;
79     unsigned int lineno;
80     rule_t* rules;
81     struct policy_s* next;
82 aramv 530 } policy_t;
83    
84 aramv 874 /* lifecycle functions */
85 aramv 1123 EES_RC pdl_init(const char*);
86     EES_RC pdl_term(void);
87 aramv 1142 EES_RC add_plugins(void);
88    
89 aramv 1123 EES_RC clean_variables_list(void);
90 aramv 1127 EES_RC clean_policies_list(void);
91     EES_RC clean_rules_list(rule_t*);
92 aramv 1145 eef_plugindl_t* build_plugin_tree(policy_t* policies);
93 aramv 530
94 aramv 874 /* callback functions */
95 aramv 1142 void set_pdl_path(record_t*);
96 aramv 1123 void add_policy(record_t*, rule_t*);
97     rule_t * add_rule(record_t*, record_t*, record_t*);
98     const char * get_pdl_path(void);
99     void remove_policy(record_t* policy);
100     void add_variable(record_t* name, record_t* value);
101     EES_RC allow_rules(int);
102     EES_RC allowed_policy_rule(const char* label);
103 aramv 874
104     /* convenience methods used by the lexer */
105 aramv 1123 record_t * concat_strings(record_t*, record_t*);
106     record_t * concat_strings_with_space(record_t*, record_t*);
107     char ** _var_to_argv(char*, int*);
108     var_t* get_variable_by_name(char*);
109     rule_t* find_state(rule_t* rule, const char* state);
110     rule_t* check_for_recursion(rule_t*, rule_t*);
111 aramv 874
112    
113     /* Lex/Yacc stuff */
114 aramv 1123 int yyerror(char*);
115     void set_yylval(record_t* r);
116 aramv 874
117 aramv 1123 /* debug functions */
118     void print_policies(void);
119 aramv 1145 void print_plugin_tree_recursive(eef_plugindl_t* plugin_tree, int depth);
120 aramv 1123
121 aramv 530 #endif

grid.support@nikhef.nl
ViewVC Help
Powered by ViewVC 1.1.28