#ifndef __ABAC_PL_YY_H__ #define __ABAC_PL_YY_H__ #include "abac_defines.h" #include "abac_list.h" #include "rt2_yy.h" /* from abac_pl_yy */ typedef struct _abac_yy_principal_t abac_yy_principal_t; typedef struct _abac_yy_term_principal_t abac_yy_term_principal_t; typedef struct _abac_yy_term_data_t abac_yy_term_data_t; typedef struct _abac_yy_term_t abac_yy_term_t; typedef struct _abac_yy_roleoset_t abac_yy_roleoset_t; typedef struct _abac_yy_expression_t abac_yy_expression_t; enum roleoset_type { e_yy_NULL_TYPE=0, e_yy_ROLE_TYPE=1, e_yy_OSET_TYPE=2 }; enum expr_rtype { e_yy_EXPR_NAMED=1, e_yy_EXPR_ROLE=2, e_yy_EXPR_OSET=3, e_yy_EXPR_LINKED=4, e_yy_EXPR_OBJECT=5 }; enum dterm_type { e_yy_DTERM_PRINCIPAL=1, e_yy_DTERM_NAMED=2, e_yy_DTERM_DATA=3, e_yy_DTERM_ANONYMOUS=4, e_yy_DTERM_THIS=5 }; enum range_type { e_yy_RANGE_MIN=1, e_yy_RANGE_MAX=2, e_yy_RANGE_TARGET=3 }; /* exported */ extern abac_yy_expression_t *make_yy_expression(int type,void *pptr, abac_yy_roleoset_t *optr, abac_yy_roleoset_t *linked_role); extern abac_list_t *make_yy_max_range(char *max); extern abac_list_t *make_yy_minmax_range(char *min, char *max); extern abac_list_t *make_yy_min_range(char *min); extern void make_yy_range_constraint(abac_yy_term_data_t *ptr); extern void make_yy_oset_constraint(abac_yy_term_data_t *ptr, char *tail_string); extern void make_yy_role_constraint(abac_yy_term_principal_t *ptr, char *tail_string); extern abac_yy_principal_t *make_yy_principal(char *sha, char *cn, int type); extern abac_yy_roleoset_t *make_yy_roleoset_role(char *name, abac_yy_term_t *terms); extern abac_yy_roleoset_t *make_yy_roleoset_oset(char *name, abac_yy_term_t *terms); extern abac_yy_term_data_t *make_yy_term_data(); extern void set_yy_term_data_name(abac_yy_term_data_t *ptr, char *name); extern void set_yy_term_data_is_anonymous(abac_yy_term_data_t *ptr); extern abac_yy_term_t *make_yy_term_dterm_anonymous(); extern abac_yy_term_t *make_yy_term_dterm_this(); extern abac_yy_term_t *make_yy_term_dterm_data(abac_yy_term_data_t *dptr); extern abac_yy_term_t *make_yy_term_dterm_named(abac_yy_principal_t *nptr); extern abac_yy_term_t *make_yy_term_dterm_principal(abac_yy_term_principal_t *pptr); extern abac_yy_term_principal_t *make_yy_term_principal(); extern void set_yy_term_principal_name(abac_yy_term_principal_t *,char*); extern void set_yy_term_principal_is_anonymous(abac_yy_term_principal_t *); extern abac_list_t *make_yy_val_range(char *val); extern abac_yy_term_t *add_yy_term(abac_yy_term_t *nterm, abac_yy_term_t *terms); extern abac_list_t *add_yy_val_range(abac_list_t *ptr, char * val); extern char *get_yy_term_data_name(abac_yy_term_data_t *ptr); extern abac_yy_expression_t *add_yy_expression(abac_yy_expression_t *nexpr, abac_yy_expression_t *exprs); extern int make_role_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr); extern int make_oset_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr); extern abac_context_t *get_abac_context(); extern void abac_yy_set_error_code(int v); extern int abac_yy_get_using_this(); #endif /* __ABC_PL_YY_H__ */