source: libabac/abac_pl_yy.h @ d0efdec

mei_rt2
Last change on this file since d0efdec was 2e9455f, checked in by Mei <mei@…>, 11 years ago

1) added namespace
2) tweak ?This,
3) allowing linking role/oset as constraining conditions
4) adding access_tests regression testing that uses GENI's access policy
5) added couple multi contexts regression tests
6) add compression/uncompression calls to abac_encode_string/abac_decode_string
(libstrongwan only allows 512 char for attribute rule storage)
7) add attribute_now option to creddy that takes a whole char string for attribute
rule

  • Property mode set to 100644
File size: 3.2 KB
Line 
1#ifndef __ABAC_PL_YY_H__
2#define __ABAC_PL_YY_H__
3
4#include "abac_defines.h"
5#include "abac_list.h"
6#include "rt2_yy.h"
7
8/* from abac_pl_yy */
9typedef struct _abac_yy_principal_t abac_yy_principal_t;
10typedef struct _abac_yy_term_principal_t abac_yy_term_principal_t;
11typedef struct _abac_yy_term_data_t abac_yy_term_data_t;
12typedef struct _abac_yy_term_t abac_yy_term_t;
13typedef struct _abac_yy_roleoset_t abac_yy_roleoset_t;
14typedef struct _abac_yy_expression_t abac_yy_expression_t;
15
16enum roleoset_type {
17    e_yy_NULL_TYPE=0, 
18    e_yy_ROLE_TYPE=1,
19    e_yy_OSET_TYPE=2
20};
21
22enum expr_rtype {
23    e_yy_EXPR_NAMED=1,
24    e_yy_EXPR_ROLE=2,
25    e_yy_EXPR_OSET=3,
26    e_yy_EXPR_LINKED=4,
27    e_yy_EXPR_OBJECT=5
28};
29
30enum dterm_type {
31    e_yy_DTERM_PRINCIPAL=1,
32    e_yy_DTERM_NAMED=2,
33    e_yy_DTERM_DATA=3,
34    e_yy_DTERM_ANONYMOUS=4,
35    e_yy_DTERM_THIS=5
36};
37
38enum range_type {
39   e_yy_RANGE_MIN=1,
40   e_yy_RANGE_MAX=2,
41   e_yy_RANGE_TARGET=3 
42};
43
44/* exported */
45extern abac_yy_expression_t *make_yy_expression(int type,void *pptr,
46              abac_yy_roleoset_t *optr, abac_yy_roleoset_t *linked_role);
47extern abac_list_t *make_yy_max_range(char *max);
48extern abac_list_t *make_yy_minmax_range(char *min, char *max);
49extern abac_list_t *make_yy_min_range(char *min);
50extern void make_yy_range_constraint(abac_yy_term_data_t *ptr);
51extern void make_yy_oset_constraint(abac_yy_term_data_t *ptr, char *tail_string);
52extern void make_yy_role_constraint(abac_yy_term_principal_t *ptr, char *tail_string);
53extern abac_yy_principal_t *make_yy_principal(char *sha, char *cn, int type);
54extern abac_yy_roleoset_t *make_yy_roleoset_role(char *name, abac_yy_term_t *terms);
55extern abac_yy_roleoset_t *make_yy_roleoset_oset(char *name, abac_yy_term_t *terms);
56extern abac_yy_term_data_t *make_yy_term_data();
57extern void set_yy_term_data_name(abac_yy_term_data_t *ptr, char *name);
58extern void set_yy_term_data_is_anonymous(abac_yy_term_data_t *ptr);
59extern abac_yy_term_t *make_yy_term_dterm_anonymous();
60extern abac_yy_term_t *make_yy_term_dterm_this();
61extern abac_yy_term_t *make_yy_term_dterm_data(abac_yy_term_data_t *dptr);
62extern abac_yy_term_t *make_yy_term_dterm_named(abac_yy_principal_t *nptr);
63extern abac_yy_term_t *make_yy_term_dterm_principal(abac_yy_term_principal_t *pptr);
64extern abac_yy_term_principal_t *make_yy_term_principal();
65extern void set_yy_term_principal_name(abac_yy_term_principal_t *,char*);
66extern void set_yy_term_principal_is_anonymous(abac_yy_term_principal_t *);
67extern abac_list_t *make_yy_val_range(char *val);
68
69extern abac_yy_term_t *add_yy_term(abac_yy_term_t *nterm, abac_yy_term_t *terms);
70extern abac_list_t *add_yy_val_range(abac_list_t *ptr, char * val);
71extern char *get_yy_term_data_name(abac_yy_term_data_t *ptr);
72extern abac_yy_expression_t *add_yy_expression(abac_yy_expression_t *nexpr,
73                                             abac_yy_expression_t *exprs);
74
75
76extern int make_role_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr);
77extern int make_oset_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr);
78
79extern abac_context_t *get_abac_context();
80extern void abac_yy_set_error_code(int v);
81extern int abac_yy_get_using_this();
82
83#endif /* __ABC_PL_YY_H__ */
Note: See TracBrowser for help on using the repository browser.