Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

pdl_policy.c File Reference

Implementation of the pdl policies. More...

#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lcmaps_log.h"
#include "pdl_policy.h"

Go to the source code of this file.

Functions

BOOL _add_policy (const record_t *name, const rule_t *rules)
void allow_rules (BOOL allow)
void add_policy (record_t *policy, rule_t *rules)
void remove_policy (record_t *policy)
policy_tfind_policy (const char *name)
BOOL check_policies_for_recursion (void)
void reduce_policies (void)
policy_tget_policies (void)
void show_policies (void)
void cleanup_policies (void)
void free_policies (void)
BOOL allowed_policy_rule (const char *label)
BOOL policies_have_been_reduced (void)

Variables

BOOL policies_reduced = FALSE
 Tell if reduce_policy() has been called.


Detailed Description

Implementation of the pdl policies.

Author:
G.M. Venekamp (venekamp@nikhef.nl)
Version:
Revision
1.21
Date:
Date
2005/05/27 16:22:20

Definition in file pdl_policy.c.


Function Documentation

BOOL _add_policy const record_t name,
const rule_t rules
 

Add a policy with its rules to the list of policies.

Before the policy name is actually added to list of policies, a check is made to see weather or not a policy by the same name exists. if it does, the policy name will not be added and an error message is displayed, letting the user know that the configuration file contains multiple policy rules with the same name.

Parameters:
name Name of the new policy.
rules List of associated rules for the policy.
Returns:
TRUE, If the policy has been added successfully; FALSE otherwise.

Definition at line 118 of file pdl_policy.c.

References allow_rules(), find_policy(), record_s::lineno, policy_s::lineno, policy_s::name, policy_s::next, PDL_ERROR, policy_t, policy_s::prev, record_t, policy_s::rule, rule_t, record_s::string, TRUE, and warning().

Referenced by add_policy().

void add_policy record_t policy,
rule_t rules
 

Wrapper around the _add_policy(name) function.

When the _add_policy() call fails, this function cleans up the data structure allocated for holding information about the policy that was found. See _add_policy() for information about the kind of reasons it can fail.

Parameters:
policy Name of the policy.
rules List of associated rules for the policy.

Definition at line 83 of file pdl_policy.c.

References _add_policy(), free_rules(), record_t, rule_t, start_new_rules(), and record_s::string.

void allow_rules BOOL  allow  ) 
 

Allow or disallow the additions of rules depending on the argument. When for example a policy is defined for the second time, an error should be generated, but the parsing should still continue. However, no rules can be added to the policy as there is currently no policy defined.

Parameters:
allow TRUE if addition of new rules is allowd, FALSE otherwise.

Definition at line 65 of file pdl_policy.c.

References allow_new_rules().

Referenced by _add_policy().

BOOL allowed_policy_rule const char *  label  ) 
 

Determine if the current policy rule should be included for evaluating policy rules. The policy rules are still parsed though. Any error in any policy rule will be reported, i.e. your config file should be valid regardless of the policy rules to be evaluated.

Definition at line 332 of file pdl_policy.c.

References TRUE.

BOOL check_policies_for_recursion void   ) 
 

Check for recursions in the policy rules.

Returns:
TRUE if at least one recustion has been found, FALSE otherwise.

Definition at line 190 of file pdl_policy.c.

References check_rule_for_recursion(), get_policies(), lcmaps_log_debug(), policy_s::name, policy_s::next, policy_t, policy_s::rule, and TRUE.

Referenced by startEvaluationManager().

void cleanup_policies void   ) 
 

Cleanup the policies.

The tree that had been built up might contain policy rules which do not contain any rules. This function removes all policy rules with an empty rule set.

Definition at line 275 of file pdl_policy.c.

References policy_s::next, policy_t, policy_s::prev, and policy_s::rule.

Referenced by startEvaluationManager().

policy_t* find_policy const char *  name  ) 
 

Find a policy by its name

Parameters:
name Name of the policy to be found.
Returns:
The policy if a polict with name 'name' exists, 0 otherwise.

Definition at line 171 of file pdl_policy.c.

References policy_s::name, policy_s::next, and policy_t.

Referenced by _add_policy(), and _add_rule().

void free_policies void   ) 
 

Free all policies and their allocated resources.

Definition at line 306 of file pdl_policy.c.

References free_rules(), policy_s::name, policy_s::next, policy_t, policy_s::rule, and set_top_rule().

Referenced by free_resources().

policy_t* get_policies void   ) 
 

Get the list of policies.

Returns:
First policy in the list.

Definition at line 244 of file pdl_policy.c.

References policy_t.

Referenced by check_policies_for_recursion(), get_plugins(), pdl_next_plugin(), and reduce_policies().

BOOL policies_have_been_reduced void   ) 
 

Tell if the reduce_policy() call has been called.

Returns:
TRUE if reduce_policy() has been called; FALSE otherwise.

Definition at line 368 of file pdl_policy.c.

References policies_reduced.

Referenced by get_plugins().

void reduce_policies void   ) 
 

Reduce_policies to its elemantry form, i.e. each policy has a list of rules which need to be reduced.

Definition at line 217 of file pdl_policy.c.

References get_policies(), rule_s::next, policy_s::next, policies_reduced, policy_t, reduce_rule(), policy_s::rule, rule_t, set_top_rule(), and TRUE.

void remove_policy record_t policy  ) 
 

Remove a policy from the list of policies and free all associated resources of the policy.

Parameters:
policy Policy to be removed.

Definition at line 157 of file pdl_policy.c.

References record_t, and record_s::string.

void show_policies void   ) 
 

Display the policies and the rules associated with the policy.

Definition at line 254 of file pdl_policy.c.

References lcmaps_log_debug(), policy_s::name, policy_s::next, policy_t, policy_s::rule, and show_rules().


Generated on Sun May 29 21:22:13 2005 for lcmaps by doxygen 1.3.5