<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.3.1"/> <title>ipa_hbac: src/providers/ipa/ipa_hbac.h Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">ipa_hbac  <span id="projectnumber">1.9.6</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_306d1f7c2316132a5a1b654ae206deb5.html">providers</a></li><li class="navelem"><a class="el" href="dir_428d51024abba00bc838cf4c5625f90f.html">ipa</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">ipa_hbac.h</div> </div> </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> <div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> SSSD</span></div> <div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"></span></div> <div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> IPA Backend Module -- Access control</span></div> <div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"></span></div> <div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> Authors:</span></div> <div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> Sumit Bose <sbose@redhat.com></span></div> <div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> Stephen Gallagher <sgallagh@redhat.com></span></div> <div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"></span></div> <div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> Copyright (C) 2009 Red Hat</span></div> <div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"></span></div> <div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> This program is free software; you can redistribute it and/or modify</span></div> <div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> it under the terms of the GNU General Public License as published by</span></div> <div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> the Free Software Foundation; either version 3 of the License, or</span></div> <div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> (at your option) any later version.</span></div> <div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"></span></div> <div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> This program is distributed in the hope that it will be useful,</span></div> <div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div> <div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div> <div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> GNU General Public License for more details.</span></div> <div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"></span></div> <div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> You should have received a copy of the GNU General Public License</span></div> <div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div> <div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">*/</span></div> <div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div> <div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#ifndef IPA_HBAC_H_</span></div> <div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"></span><span class="preprocessor">#define IPA_HBAC_H_</span></div> <div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <stdint.h></span></div> <div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <stdbool.h></span></div> <div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <time.h></span></div> <div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div> <div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#gad62bd2c7fb837272a3cf80d176410cd6"> 45</a></span> <span class="keyword">enum</span> <a class="code" href="group__ipa__hbac.html#gad62bd2c7fb837272a3cf80d176410cd6" title="Result of HBAC evaluation.">hbac_eval_result</a> {</div> <div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6ae037f769a8a5b21d518733cdef7bb1c1"> 49</a></span>  <a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6ae037f769a8a5b21d518733cdef7bb1c1" title="An error occurred See the hbac_info for more details.">HBAC_EVAL_ERROR</a> = -1,</div> <div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div> <div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6a7990610222cac06bb359bbef96ec5710"> 52</a></span>  <a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6a7990610222cac06bb359bbef96ec5710" title="Evaluation grants access.">HBAC_EVAL_ALLOW</a>,</div> <div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div> <div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6ad2fde36248cdaa69d07c69ced9ecfd59"> 55</a></span>  <a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6ad2fde36248cdaa69d07c69ced9ecfd59" title="Evaluation denies access.">HBAC_EVAL_DENY</a>,</div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div> <div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6a771aaa647d402b3796c8bd9e9bc6e915"> 60</a></span>  <a class="code" href="group__ipa__hbac.html#ggad62bd2c7fb837272a3cf80d176410cd6a771aaa647d402b3796c8bd9e9bc6e915" title="Evaluation failed due to lack of memory hbac_info is not available.">HBAC_EVAL_OOM</a></div> <div class="line"><a name="l00061"></a><span class="lineno"> 61</span> };</div> <div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div> <div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#gaedbbc12bed44918a30d673720df85d03"> 66</a></span> <span class="preprocessor">#define HBAC_CATEGORY_NULL 0x0000</span></div> <div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#gaff3d14567e8ca0ed671fc88287e7aaec"> 71</a></span> <span class="preprocessor">#define HBAC_CATEGORY_ALL 0x0001</span></div> <div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">struct </span>hbac_time_rules;</div> <div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div> <div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="structhbac__rule__element.html"> 84</a></span> <span class="keyword">struct </span><a class="code" href="structhbac__rule__element.html" title="Component of an HBAC rule.">hbac_rule_element</a> {</div> <div class="line"><a name="l00092"></a><span class="lineno"><a class="code" href="structhbac__rule__element.html#ad9ba6ea8f602a0e7badadce928e06ebf"> 92</a></span>  uint32_t <a class="code" href="structhbac__rule__element.html#ad9ba6ea8f602a0e7badadce928e06ebf" title="Category for this element.">category</a>;</div> <div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div> <div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="structhbac__rule__element.html#ae0ffd3e232106bb64208c856e84e5a42"> 101</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> **<a class="code" href="structhbac__rule__element.html#ae0ffd3e232106bb64208c856e84e5a42" title="List of explicit members of this rule component.">names</a>;</div> <div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div> <div class="line"><a name="l00110"></a><span class="lineno"><a class="code" href="structhbac__rule__element.html#a0e47669abe1e2842ed89803713af5226"> 110</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> **<a class="code" href="structhbac__rule__element.html#a0e47669abe1e2842ed89803713af5226" title="List of group members of this rule component.">groups</a>;</div> <div class="line"><a name="l00111"></a><span class="lineno"> 111</span> };</div> <div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div> <div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="structhbac__rule.html"> 116</a></span> <span class="keyword">struct </span><a class="code" href="structhbac__rule.html" title="HBAC rule object for evaluation.">hbac_rule</a> {</div> <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *name;</div> <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">bool</span> enabled;</div> <div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div> <div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="structhbac__rule.html#af3d4d79bfd235229e6b513238d50cb9c"> 124</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__rule__element.html" title="Component of an HBAC rule.">hbac_rule_element</a> *<a class="code" href="structhbac__rule.html#af3d4d79bfd235229e6b513238d50cb9c" title="Services and service groups for which this rule applies.">services</a>;</div> <div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div> <div class="line"><a name="l00130"></a><span class="lineno"><a class="code" href="structhbac__rule.html#a6bcd5724143f0d00aae9a4cb6b60f4bb"> 130</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__rule__element.html" title="Component of an HBAC rule.">hbac_rule_element</a> *<a class="code" href="structhbac__rule.html#a6bcd5724143f0d00aae9a4cb6b60f4bb" title="Users and groups for which this rule applies.">users</a>;</div> <div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div> <div class="line"><a name="l00135"></a><span class="lineno"><a class="code" href="structhbac__rule.html#a997bb037f23d89b2d013bf581dcf52c9"> 135</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__rule__element.html" title="Component of an HBAC rule.">hbac_rule_element</a> *<a class="code" href="structhbac__rule.html#a997bb037f23d89b2d013bf581dcf52c9" title="Target hosts for which this rule apples.">targethosts</a>;</div> <div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div> <div class="line"><a name="l00140"></a><span class="lineno"><a class="code" href="structhbac__rule.html#ae968bf166e4c7472622c13c2db69153f"> 140</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__rule__element.html" title="Component of an HBAC rule.">hbac_rule_element</a> *<a class="code" href="structhbac__rule.html#ae968bf166e4c7472622c13c2db69153f" title="Source hosts for which this rule applies.">srchosts</a>;</div> <div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div> <div class="line"><a name="l00145"></a><span class="lineno"><a class="code" href="structhbac__rule.html#a6800fac66b5798f05d07f7948f8b7285"> 145</a></span>  <span class="keyword">struct </span>hbac_time_rules *<a class="code" href="structhbac__rule.html#a6800fac66b5798f05d07f7948f8b7285" title="For future use.">timerules</a>;</div> <div class="line"><a name="l00146"></a><span class="lineno"> 146</span> };</div> <div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div> <div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="structhbac__request__element.html"> 151</a></span> <span class="keyword">struct </span><a class="code" href="structhbac__request__element.html" title="Component of an HBAC request.">hbac_request_element</a> {</div> <div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="structhbac__request__element.html#aaea574d0c5f891bd2554b5544e8b7c71"> 159</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structhbac__request__element.html#aaea574d0c5f891bd2554b5544e8b7c71" title="List of explicit members of this request component.">name</a>;</div> <div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div> <div class="line"><a name="l00168"></a><span class="lineno"><a class="code" href="structhbac__request__element.html#ab7fc907e8faf86a8fe25941f8d06d374"> 168</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span> **<a class="code" href="structhbac__request__element.html#ab7fc907e8faf86a8fe25941f8d06d374" title="List of group members of this request component.">groups</a>;</div> <div class="line"><a name="l00169"></a><span class="lineno"> 169</span> };</div> <div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div> <div class="line"><a name="l00176"></a><span class="lineno"><a class="code" href="structhbac__eval__req.html"> 176</a></span> <span class="keyword">struct </span><a class="code" href="structhbac__eval__req.html" title="Request object for an HBAC rule evaluation.">hbac_eval_req</a> {</div> <div class="line"><a name="l00182"></a><span class="lineno"><a class="code" href="structhbac__eval__req.html#adb30e5c3df4f1e9043cecfc7b5c52f92"> 182</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__request__element.html" title="Component of an HBAC request.">hbac_request_element</a> *<a class="code" href="structhbac__eval__req.html#adb30e5c3df4f1e9043cecfc7b5c52f92" title="This is a list of service DNs to check, it must consist of the actual service requested, as well as all parent groups containing that service.">service</a>;</div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div> <div class="line"><a name="l00189"></a><span class="lineno"><a class="code" href="structhbac__eval__req.html#a8ac951bf5ed2350e06a28e1f7e202f67"> 189</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__request__element.html" title="Component of an HBAC request.">hbac_request_element</a> *<a class="code" href="structhbac__eval__req.html#a8ac951bf5ed2350e06a28e1f7e202f67" title="This is a list of user DNs to check, it must consist of the actual user requested, as well as all parent groups containing that user.">user</a>;</div> <div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div> <div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="structhbac__eval__req.html#a6adb65c0e93a21b97d8866a1c2a23ef2"> 196</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__request__element.html" title="Component of an HBAC request.">hbac_request_element</a> *<a class="code" href="structhbac__eval__req.html#a6adb65c0e93a21b97d8866a1c2a23ef2" title="This is a list of target hosts to check, it must consist of the actual target host requested...">targethost</a>;</div> <div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div> <div class="line"><a name="l00203"></a><span class="lineno"><a class="code" href="structhbac__eval__req.html#a3b8e4d11f312f25ea9d92541c09dab5d"> 203</a></span>  <span class="keyword">struct </span><a class="code" href="structhbac__request__element.html" title="Component of an HBAC request.">hbac_request_element</a> *<a class="code" href="structhbac__eval__req.html#a3b8e4d11f312f25ea9d92541c09dab5d" title="This is a list of source hosts to check, it must consist of the actual source host requested...">srchost</a>;</div> <div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div> <div class="line"><a name="l00206"></a><span class="lineno"><a class="code" href="structhbac__eval__req.html#aa88d90ac396def6e551819ec7b432a56"> 206</a></span>  time_t <a class="code" href="structhbac__eval__req.html#aa88d90ac396def6e551819ec7b432a56" title="For future use.">request_time</a>;</div> <div class="line"><a name="l00207"></a><span class="lineno"> 207</span> };</div> <div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div> <div class="line"><a name="l00212"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#gac4bf6648ee5fb44693543581ad8956fd"> 212</a></span> <span class="keyword">enum</span> <a class="code" href="group__ipa__hbac.html#gac4bf6648ee5fb44693543581ad8956fd" title="Error code returned by the evaluator.">hbac_error_code</a> {</div> <div class="line"><a name="l00214"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fdab458a5182a5fa817b9170f733e6e2a68"> 214</a></span>  <a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fdab458a5182a5fa817b9170f733e6e2a68" title="Unexpected error.">HBAC_ERROR_UNKNOWN</a> = -1,</div> <div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div> <div class="line"><a name="l00217"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fdad2a456bafa5157c4948c4731f98bd934"> 217</a></span>  <a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fdad2a456bafa5157c4948c4731f98bd934" title="Succesful evaluation.">HBAC_SUCCESS</a>,</div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div> <div class="line"><a name="l00220"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fda714c7f58d25e404aa489f7f552a328aa"> 220</a></span>  <a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fda714c7f58d25e404aa489f7f552a328aa" title="Function is not yet implemented.">HBAC_ERROR_NOT_IMPLEMENTED</a>,</div> <div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div> <div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fda7ab6bd70d35aca7230973453f3996f94"> 223</a></span>  <a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fda7ab6bd70d35aca7230973453f3996f94" title="Ran out of memory during processing.">HBAC_ERROR_OUT_OF_MEMORY</a>,</div> <div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div> <div class="line"><a name="l00226"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fda63c32fd2a31addc7bdbbb9f931769b6d"> 226</a></span>  <a class="code" href="group__ipa__hbac.html#ggac4bf6648ee5fb44693543581ad8956fda63c32fd2a31addc7bdbbb9f931769b6d" title="Parse error while evaluating rule.">HBAC_ERROR_UNPARSEABLE_RULE</a></div> <div class="line"><a name="l00227"></a><span class="lineno"> 227</span> };</div> <div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div> <div class="line"><a name="l00230"></a><span class="lineno"><a class="code" href="structhbac__info.html"> 230</a></span> <span class="keyword">struct </span><a class="code" href="structhbac__info.html" title="Extended information.">hbac_info</a> {</div> <div class="line"><a name="l00236"></a><span class="lineno"><a class="code" href="structhbac__info.html#a20e27a3ec90e6090284f03239e2a3dcb"> 236</a></span>  <span class="keyword">enum</span> <a class="code" href="group__ipa__hbac.html#gac4bf6648ee5fb44693543581ad8956fd" title="Error code returned by the evaluator.">hbac_error_code</a> <a class="code" href="structhbac__info.html#a20e27a3ec90e6090284f03239e2a3dcb" title="If the hbac_eval_result was HBAC_EVAL_ERROR, this will be an error code.">code</a>;</div> <div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div> <div class="line"><a name="l00242"></a><span class="lineno"><a class="code" href="structhbac__info.html#a0b9580d663ea783d08555e849cdd843d"> 242</a></span>  <span class="keywordtype">char</span> *<a class="code" href="structhbac__info.html#a0b9580d663ea783d08555e849cdd843d" title="Specify the name of the rule that matched or threw an error.">rule_name</a>;</div> <div class="line"><a name="l00243"></a><span class="lineno"> 243</span> };</div> <div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div> <div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div> <div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="keyword">enum</span> <a class="code" href="group__ipa__hbac.html#gad62bd2c7fb837272a3cf80d176410cd6" title="Result of HBAC evaluation.">hbac_eval_result</a> <a class="code" href="group__ipa__hbac.html#ga5e2ff922594e1c95406a58e11c02e785" title="Evaluate an authorization request against a set of HBAC rules.">hbac_evaluate</a>(<span class="keyword">struct</span> <a class="code" href="structhbac__rule.html" title="HBAC rule object for evaluation.">hbac_rule</a> **rules,</div> <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">struct</span> <a class="code" href="structhbac__eval__req.html" title="Request object for an HBAC rule evaluation.">hbac_eval_req</a> *hbac_req,</div> <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">struct</span> <a class="code" href="structhbac__info.html" title="Extended information.">hbac_info</a> **info);</div> <div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div> <div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__ipa__hbac.html#gabcf175aab640e89824deaae97160d0f2" title="Display result of hbac evaluation in human-readable form.">hbac_result_string</a>(<span class="keyword">enum</span> <a class="code" href="group__ipa__hbac.html#gad62bd2c7fb837272a3cf80d176410cd6" title="Result of HBAC evaluation.">hbac_eval_result</a> result);</div> <div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div> <div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__ipa__hbac.html#ga03f9ab391cf4a158a2d11bc3e408b2f5" title="Display error description.">hbac_error_string</a>(<span class="keyword">enum</span> <a class="code" href="group__ipa__hbac.html#gac4bf6648ee5fb44693543581ad8956fd" title="Error code returned by the evaluator.">hbac_error_code</a> code);</div> <div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div> <div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">void</span> <a class="code" href="group__ipa__hbac.html#gae3bfb7f61dc7f11f6bbc7f89d5e9cc40" title="Function to safely free hbac_info returned by hbac_evaluate.">hbac_free_info</a>(<span class="keyword">struct</span> <a class="code" href="structhbac__info.html" title="Extended information.">hbac_info</a> *info);</div> <div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div> <div class="line"><a name="l00284"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#gae31ab9dce5991045fb4d945f9f04e68d"> 284</a></span> <span class="preprocessor">#define HBAC_RULE_ELEMENT_USERS 0x01</span></div> <div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00287"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ga8fda15d21054d3c3754fe1d1948b37ff"> 287</a></span> <span class="preprocessor">#define HBAC_RULE_ELEMENT_SERVICES 0x02</span></div> <div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00290"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#ga57195713344d39e9ca73a2775ba371a5"> 290</a></span> <span class="preprocessor">#define HBAC_RULE_ELEMENT_TARGETHOSTS 0x04</span></div> <div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00293"></a><span class="lineno"><a class="code" href="group__ipa__hbac.html#gad39fb6b6afefa7ccbceab5d80eb35684"> 293</a></span> <span class="preprocessor">#define HBAC_RULE_ELEMENT_SOURCEHOSTS 0x08</span></div> <div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">bool</span> <a class="code" href="group__ipa__hbac.html#gadef62fdeda3388674ab2cc50f955c406" title="Evaluate whether an HBAC rule contains all necessary elements.">hbac_rule_is_complete</a>(<span class="keyword">struct</span> <a class="code" href="structhbac__rule.html" title="HBAC rule object for evaluation.">hbac_rule</a> *rule, uint32_t *missing_attrs);</div> <div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div> <div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div> <div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#endif </span><span class="comment">/* IPA_HBAC_H_ */</span><span class="preprocessor"></span></div> </div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.3.1 </small></address> </body> </html>