#ifndef __ABAC_PL_YY_H__ #define __ABAC_PL_YY_H__ /* C declarations */ #include "abac_internal.h" #include "abac_list.h" #include "abac_rt.h" 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 }; enum range_type { e_yy_RANGE_MIN=1, e_yy_RANGE_MAX=2, e_yy_RANGE_TARGET=3 }; 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_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_list_t *make_role_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr); extern abac_list_t *make_oset_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr); extern char *get_yy_term_data_name(abac_yy_term_data_t *ptr); extern abac_yy_term_data_t *get_yy_expression_object(abac_yy_expression_t *ptr); extern abac_yy_expression_t *add_yy_expression(abac_yy_expression_t *nexpr, abac_yy_expression_t *exprs); 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 abac_aspect_t *validate_head(int yytype, abac_yy_expression_t *expr); extern abac_aspect_t *validate_named_tail(int yytype, abac_yy_expression_t *expr); extern abac_aspect_t *validate_object_tail(int yytype,abac_yy_expression_t *expr); extern abac_aspect_t *validate_some_tail(int yytype, abac_yy_expression_t *expr); extern abac_aspect_t *validate_linked_tail(int yytype, abac_yy_expression_t *expr); #define ABAC_YY_INVALID_HEAD -1 #endif /* __ABC_PL_YY_H__ */