1
2########################################
3#
4# Helper macros
5#
6
7#
8# shiftn(num,list...)
9#
10# shift the list num times
11#
12define(`shiftn',`ifelse($1,0,`shift($*)',`shiftn(decr($1),shift(shift($*)))')')
13
14#
15# ifndef(expr,true_block,false_block)
16#
17# m4 does not have this.
18#
19define(`ifndef',`ifdef(`$1',`$3',`$2')')
20
21#
22# __endline__
23#
24# dummy macro to insert a newline.  used for
25# errprint, so the close parentheses can be
26# indented correctly.
27#
28define(`__endline__',`
29')
30
31########################################
32#
33# refpolwarn(message)
34#
35# print a warning message
36#
37define(`refpolicywarn',`errprint(__file__:__line__: Warning: `$1'__endline__)')
38
39########################################
40#
41# refpolerr(message)
42#
43# print an error message.  does not
44# make anything fail.
45#
46define(`refpolicyerr',`errprint(__file__:__line__: Error: `$1'__endline__)')
47
48########################################
49#
50# gen_user(username, prefix, role_set, mls_defaultlevel, mls_range)
51#
52define(`gen_user',`define(`gen_all_users', gen_all_users `dnl
53user $1 roles { $3 }`'ifdef(`enable_mls', ` level $4 range $5')`';
54')')
55
56define(`gen_all_users',`')
57
58########################################
59#
60# gen_context(context,mls_sensitivity,[mcs_categories])
61#
62define(`gen_context',`$1`'ifdef(`enable_mls',`:$2')`'')
63
64define(`dflt_or_overr',`ifdef(`$1',$1,$2)')
65
66########################################
67#
68# gen_bool(name,default_value)
69#
70define(`gen_bool',`
71	bool $1 dflt_or_overr(`$1'_conf,$2);
72')
73