<feed xmlns='http://www.w3.org/2005/Atom'>
<title>freeipa.git/daemons/ipa-slapi-plugins/ipa-extdom-extop/README, branch webui_isolate</title>
<subtitle>FreeIPA patches</subtitle>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/simo/public_git/freeipa.git/'/>
<entry>
<title>Add external domain extop DS plugin</title>
<updated>2012-06-28T11:08:26+00:00</updated>
<author>
<name>Sumit Bose</name>
<email>sbose@redhat.com</email>
</author>
<published>2011-11-30T12:29:10+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/simo/public_git/freeipa.git/commit/?id=316aac5a8d03587872883a645ba6ff8443f062fe'/>
<id>316aac5a8d03587872883a645ba6ff8443f062fe</id>
<content type='text'>
This extop can be used by clients of the IPA domain, e.g. sssd, to
retrieve data from trusted external domains. It can be used e.g. to map
Windows SIDs to user or groups names and back.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This extop can be used by clients of the IPA domain, e.g. sssd, to
retrieve data from trusted external domains. It can be used e.g. to map
Windows SIDs to user or groups names and back.
</pre>
</div>
</content>
</entry>
</feed>
ue='7a0553ec1d296df83a2e6660aae44a1115f9ea2c'/><select name='h' onchange='this.form.submit();'>
<option value='master' selected='selected'>master</option>
<option value='master-krb5pkgconfig'>master-krb5pkgconfig</option>
<option value='master-mechdconf'>master-mechdconf</option>
<option value='proxymech'>proxymech</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Unnamed repository; edit this file 'description' to name the repository.</td><td class='sub right'>Günther Deschner</td></tr></table>
<table class='tabs'><tr><td>
<a href='/cgit/gd/public_git/krb5.git/'>summary</a><a href='/cgit/gd/public_git/krb5.git/refs/?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>refs</a><a href='/cgit/gd/public_git/krb5.git/log/src/lib/kadm5/admin.h'>log</a><a class='active' href='/cgit/gd/public_git/krb5.git/tree/src/lib/kadm5/admin.h?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>tree</a><a href='/cgit/gd/public_git/krb5.git/commit/src/lib/kadm5/admin.h?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>commit</a><a href='/cgit/gd/public_git/krb5.git/diff/src/lib/kadm5/admin.h?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>diff</a><a href='/cgit/gd/public_git/krb5.git/stats/src/lib/kadm5/admin.h'>stats</a></td><td class='form'><form class='right' method='get' action='/cgit/gd/public_git/krb5.git/log/src/lib/kadm5/admin.h'>
<input type='hidden' name='id' value='7a0553ec1d296df83a2e6660aae44a1115f9ea2c'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit/gd/public_git/krb5.git/tree/?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>root</a>/<a href='/cgit/gd/public_git/krb5.git/tree/src?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>src</a>/<a href='/cgit/gd/public_git/krb5.git/tree/src/lib?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>lib</a>/<a href='/cgit/gd/public_git/krb5.git/tree/src/lib/kadm5?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>kadm5</a>/<a href='/cgit/gd/public_git/krb5.git/tree/src/lib/kadm5/admin.h?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>admin.h</a></div><div class='content'>blob: d45e16e9cf375181640e8079a3fe8e7400b3a327 (<a href='/cgit/gd/public_git/krb5.git/plain/src/lib/kadm5/admin.h?id=7a0553ec1d296df83a2e6660aae44a1115f9ea2c'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
<a id='n32' href='#n32'>32</a>
<a id='n33' href='#n33'>33</a>
<a id='n34' href='#n34'>34</a>
<a id='n35' href='#n35'>35</a>
<a id='n36' href='#n36'>36</a>
<a id='n37' href='#n37'>37</a>
<a id='n38' href='#n38'>38</a>
<a id='n39' href='#n39'>39</a>
<a id='n40' href='#n40'>40</a>
<a id='n41' href='#n41'>41</a>
<a id='n42' href='#n42'>42</a>
<a id='n43' href='#n43'>43</a>
<a id='n44' href='#n44'>44</a>
<a id='n45' href='#n45'>45</a>
<a id='n46' href='#n46'>46</a>
<a id='n47' href='#n47'>47</a>
<a id='n48' href='#n48'>48</a>
<a id='n49' href='#n49'>49</a>
<a id='n50' href='#n50'>50</a>
<a id='n51' href='#n51'>51</a>
<a id='n52' href='#n52'>52</a>
<a id='n53' href='#n53'>53</a>
<a id='n54' href='#n54'>54</a>
<a id='n55' href='#n55'>55</a>
<a id='n56' href='#n56'>56</a>
<a id='n57' href='#n57'>57</a>
<a id='n58' href='#n58'>58</a>
<a id='n59' href='#n59'>59</a>
<a id='n60' href='#n60'>60</a>
<a id='n61' href='#n61'>61</a>
<a id='n62' href='#n62'>62</a>
<a id='n63' href='#n63'>63</a>
<a id='n64' href='#n64'>64</a>
<a id='n65' href='#n65'>65</a>
<a id='n66' href='#n66'>66</a>
<a id='n67' href='#n67'>67</a>
<a id='n68' href='#n68'>68</a>
<a id='n69' href='#n69'>69</a>
<a id='n70' href='#n70'>70</a>
<a id='n71' href='#n71'>71</a>
<a id='n72' href='#n72'>72</a>
<a id='n73' href='#n73'>73</a>
<a id='n74' href='#n74'>74</a>
<a id='n75' href='#n75'>75</a>
<a id='n76' href='#n76'>76</a>
<a id='n77' href='#n77'>77</a>
<a id='n78' href='#n78'>78</a>
<a id='n79' href='#n79'>79</a>
<a id='n80' href='#n80'>80</a>
<a id='n81' href='#n81'>81</a>
<a id='n82' href='#n82'>82</a>
<a id='n83' href='#n83'>83</a>
<a id='n84' href='#n84'>84</a>
<a id='n85' href='#n85'>85</a>
<a id='n86' href='#n86'>86</a>
<a id='n87' href='#n87'>87</a>
<a id='n88' href='#n88'>88</a>
<a id='n89' href='#n89'>89</a>
<a id='n90' href='#n90'>90</a>
<a id='n91' href='#n91'>91</a>
<a id='n92' href='#n92'>92</a>
<a id='n93' href='#n93'>93</a>
<a id='n94' href='#n94'>94</a>
<a id='n95' href='#n95'>95</a>
<a id='n96' href='#n96'>96</a>
<a id='n97' href='#n97'>97</a>
<a id='n98' href='#n98'>98</a>
<a id='n99' href='#n99'>99</a>
<a id='n100' href='#n100'>100</a>
<a id='n101' href='#n101'>101</a>
<a id='n102' href='#n102'>102</a>
<a id='n103' href='#n103'>103</a>
<a id='n104' href='#n104'>104</a>
<a id='n105' href='#n105'>105</a>
<a id='n106' href='#n106'>106</a>
<a id='n107' href='#n107'>107</a>
<a id='n108' href='#n108'>108</a>
<a id='n109' href='#n109'>109</a>
<a id='n110' href='#n110'>110</a>
<a id='n111' href='#n111'>111</a>
<a id='n112' href='#n112'>112</a>
<a id='n113' href='#n113'>113</a>
<a id='n114' href='#n114'>114</a>
<a id='n115' href='#n115'>115</a>
<a id='n116' href='#n116'>116</a>
<a id='n117' href='#n117'>117</a>
<a id='n118' href='#n118'>118</a>
<a id='n119' href='#n119'>119</a>
<a id='n120' href='#n120'>120</a>
<a id='n121' href='#n121'>121</a>
<a id='n122' href='#n122'>122</a>
<a id='n123' href='#n123'>123</a>
<a id='n124' href='#n124'>124</a>
<a id='n125' href='#n125'>125</a>
<a id='n126' href='#n126'>126</a>
<a id='n127' href='#n127'>127</a>
<a id='n128' href='#n128'>128</a>
<a id='n129' href='#n129'>129</a>
<a id='n130' href='#n130'>130</a>
<a id='n131' href='#n131'>131</a>
<a id='n132' href='#n132'>132</a>
<a id='n133' href='#n133'>133</a>
<a id='n134' href='#n134'>134</a>
<a id='n135' href='#n135'>135</a>
<a id='n136' href='#n136'>136</a>
<a id='n137' href='#n137'>137</a>
<a id='n138' href='#n138'>138</a>
<a id='n139' href='#n139'>139</a>
<a id='n140' href='#n140'>140</a>
<a id='n141' href='#n141'>141</a>
<a id='n142' href='#n142'>142</a>
<a id='n143' href='#n143'>143</a>
<a id='n144' href='#n144'>144</a>
<a id='n145' href='#n145'>145</a>
<a id='n146' href='#n146'>146</a>
<a id='n147' href='#n147'>147</a>
<a id='n148' href='#n148'>148</a>
<a id='n149' href='#n149'>149</a>
<a id='n150' href='#n150'>150</a>
<a id='n151' href='#n151'>151</a>
<a id='n152' href='#n152'>152</a>
<a id='n153' href='#n153'>153</a>
<a id='n154' href='#n154'>154</a>
<a id='n155' href='#n155'>155</a>
<a id='n156' href='#n156'>156</a>
<a id='n157' href='#n157'>157</a>
<a id='n158' href='#n158'>158</a>
<a id='n159' href='#n159'>159</a>
<a id='n160' href='#n160'>160</a>
<a id='n161' href='#n161'>161</a>
<a id='n162' href='#n162'>162</a>
<a id='n163' href='#n163'>163</a>
<a id='n164' href='#n164'>164</a>
<a id='n165' href='#n165'>165</a>
<a id='n166' href='#n166'>166</a>
<a id='n167' href='#n167'>167</a>
<a id='n168' href='#n168'>168</a>
<a id='n169' href='#n169'>169</a>
<a id='n170' href='#n170'>170</a>
<a id='n171' href='#n171'>171</a>
<a id='n172' href='#n172'>172</a>
<a id='n173' href='#n173'>173</a>
<a id='n174' href='#n174'>174</a>
<a id='n175' href='#n175'>175</a>
<a id='n176' href='#n176'>176</a>
<a id='n177' href='#n177'>177</a>
<a id='n178' href='#n178'>178</a>
<a id='n179' href='#n179'>179</a>
<a id='n180' href='#n180'>180</a>
<a id='n181' href='#n181'>181</a>
<a id='n182' href='#n182'>182</a>
<a id='n183' href='#n183'>183</a>
<a id='n184' href='#n184'>184</a>
<a id='n185' href='#n185'>185</a>
<a id='n186' href='#n186'>186</a>
<a id='n187' href='#n187'>187</a>
<a id='n188' href='#n188'>188</a>
<a id='n189' href='#n189'>189</a>
<a id='n190' href='#n190'>190</a>
<a id='n191' href='#n191'>191</a>
<a id='n192' href='#n192'>192</a>
<a id='n193' href='#n193'>193</a>
<a id='n194' href='#n194'>194</a>
<a id='n195' href='#n195'>195</a>
<a id='n196' href='#n196'>196</a>
<a id='n197' href='#n197'>197</a>
<a id='n198' href='#n198'>198</a>
<a id='n199' href='#n199'>199</a>
<a id='n200' href='#n200'>200</a>
<a id='n201' href='#n201'>201</a>
<a id='n202' href='#n202'>202</a>
<a id='n203' href='#n203'>203</a>
<a id='n204' href='#n204'>204</a>
<a id='n205' href='#n205'>205</a>
<a id='n206' href='#n206'>206</a>
<a id='n207' href='#n207'>207</a>
<a id='n208' href='#n208'>208</a>
<a id='n209' href='#n209'>209</a>
<a id='n210' href='#n210'>210</a>
<a id='n211' href='#n211'>211</a>
<a id='n212' href='#n212'>212</a>
<a id='n213' href='#n213'>213</a>
<a id='n214' href='#n214'>214</a>
<a id='n215' href='#n215'>215</a>
<a id='n216' href='#n216'>216</a>
<a id='n217' href='#n217'>217</a>
<a id='n218' href='#n218'>218</a>
<a id='n219' href='#n219'>219</a>
<a id='n220' href='#n220'>220</a>
<a id='n221' href='#n221'>221</a>
<a id='n222' href='#n222'>222</a>
<a id='n223' href='#n223'>223</a>
<a id='n224' href='#n224'>224</a>
<a id='n225' href='#n225'>225</a>
<a id='n226' href='#n226'>226</a>
<a id='n227' href='#n227'>227</a>
<a id='n228' href='#n228'>228</a>
<a id='n229' href='#n229'>229</a>
<a id='n230' href='#n230'>230</a>
<a id='n231' href='#n231'>231</a>
<a id='n232' href='#n232'>232</a>
<a id='n233' href='#n233'>233</a>
<a id='n234' href='#n234'>234</a>
<a id='n235' href='#n235'>235</a>
<a id='n236' href='#n236'>236</a>
<a id='n237' href='#n237'>237</a>
<a id='n238' href='#n238'>238</a>
<a id='n239' href='#n239'>239</a>
<a id='n240' href='#n240'>240</a>
<a id='n241' href='#n241'>241</a>
<a id='n242' href='#n242'>242</a>
<a id='n243' href='#n243'>243</a>
<a id='n244' href='#n244'>244</a>
<a id='n245' href='#n245'>245</a>
<a id='n246' href='#n246'>246</a>
<a id='n247' href='#n247'>247</a>
<a id='n248' href='#n248'>248</a>
<a id='n249' href='#n249'>249</a>
<a id='n250' href='#n250'>250</a>
<a id='n251' href='#n251'>251</a>
<a id='n252' href='#n252'>252</a>
<a id='n253' href='#n253'>253</a>
<a id='n254' href='#n254'>254</a>
<a id='n255' href='#n255'>255</a>
<a id='n256' href='#n256'>256</a>
<a id='n257' href='#n257'>257</a>
<a id='n258' href='#n258'>258</a>
<a id='n259' href='#n259'>259</a>
<a id='n260' href='#n260'>260</a>
<a id='n261' href='#n261'>261</a>
<a id='n262' href='#n262'>262</a>
<a id='n263' href='#n263'>263</a>
<a id='n264' href='#n264'>264</a>
<a id='n265' href='#n265'>265</a>
<a id='n266' href='#n266'>266</a>
<a id='n267' href='#n267'>267</a>
<a id='n268' href='#n268'>268</a>
<a id='n269' href='#n269'>269</a>
<a id='n270' href='#n270'>270</a>
<a id='n271' href='#n271'>271</a>
<a id='n272' href='#n272'>272</a>
<a id='n273' href='#n273'>273</a>
<a id='n274' href='#n274'>274</a>
<a id='n275' href='#n275'>275</a>
<a id='n276' href='#n276'>276</a>
<a id='n277' href='#n277'>277</a>
<a id='n278' href='#n278'>278</a>
<a id='n279' href='#n279'>279</a>
<a id='n280' href='#n280'>280</a>
<a id='n281' href='#n281'>281</a>
<a id='n282' href='#n282'>282</a>
<a id='n283' href='#n283'>283</a>
<a id='n284' href='#n284'>284</a>
<a id='n285' href='#n285'>285</a>
<a id='n286' href='#n286'>286</a>
<a id='n287' href='#n287'>287</a>
<a id='n288' href='#n288'>288</a>
<a id='n289' href='#n289'>289</a>
<a id='n290' href='#n290'>290</a>
<a id='n291' href='#n291'>291</a>
<a id='n292' href='#n292'>292</a>
<a id='n293' href='#n293'>293</a>
<a id='n294' href='#n294'>294</a>
<a id='n295' href='#n295'>295</a>
<a id='n296' href='#n296'>296</a>
<a id='n297' href='#n297'>297</a>
<a id='n298' href='#n298'>298</a>
<a id='n299' href='#n299'>299</a>
<a id='n300' href='#n300'>300</a>
<a id='n301' href='#n301'>301</a>
<a id='n302' href='#n302'>302</a>
<a id='n303' href='#n303'>303</a>
<a id='n304' href='#n304'>304</a>
<a id='n305' href='#n305'>305</a>
<a id='n306' href='#n306'>306</a>
<a id='n307' href='#n307'>307</a>
<a id='n308' href='#n308'>308</a>
<a id='n309' href='#n309'>309</a>
<a id='n310' href='#n310'>310</a>
<a id='n311' href='#n311'>311</a>
<a id='n312' href='#n312'>312</a>
<a id='n313' href='#n313'>313</a>
<a id='n314' href='#n314'>314</a>
<a id='n315' href='#n315'>315</a>
<a id='n316' href='#n316'>316</a>
<a id='n317' href='#n317'>317</a>
<a id='n318' href='#n318'>318</a>
<a id='n319' href='#n319'>319</a>
<a id='n320' href='#n320'>320</a>
<a id='n321' href='#n321'>321</a>
<a id='n322' href='#n322'>322</a>
<a id='n323' href='#n323'>323</a>
<a id='n324' href='#n324'>324</a>
<a id='n325' href='#n325'>325</a>
<a id='n326' href='#n326'>326</a>
<a id='n327' href='#n327'>327</a>
<a id='n328' href='#n328'>328</a>
<a id='n329' href='#n329'>329</a>
<a id='n330' href='#n330'>330</a>
<a id='n331' href='#n331'>331</a>
<a id='n332' href='#n332'>332</a>
<a id='n333' href='#n333'>333</a>
<a id='n334' href='#n334'>334</a>
<a id='n335' href='#n335'>335</a>
<a id='n336' href='#n336'>336</a>
<a id='n337' href='#n337'>337</a>
<a id='n338' href='#n338'>338</a>
<a id='n339' href='#n339'>339</a>
<a id='n340' href='#n340'>340</a>
<a id='n341' href='#n341'>341</a>
<a id='n342' href='#n342'>342</a>
<a id='n343' href='#n343'>343</a>
<a id='n344' href='#n344'>344</a>
<a id='n345' href='#n345'>345</a>
<a id='n346' href='#n346'>346</a>
<a id='n347' href='#n347'>347</a>
<a id='n348' href='#n348'>348</a>
<a id='n349' href='#n349'>349</a>
<a id='n350' href='#n350'>350</a>
<a id='n351' href='#n351'>351</a>
<a id='n352' href='#n352'>352</a>
<a id='n353' href='#n353'>353</a>
<a id='n354' href='#n354'>354</a>
<a id='n355' href='#n355'>355</a>
<a id='n356' href='#n356'>356</a>
<a id='n357' href='#n357'>357</a>
<a id='n358' href='#n358'>358</a>
<a id='n359' href='#n359'>359</a>
<a id='n360' href='#n360'>360</a>
<a id='n361' href='#n361'>361</a>
<a id='n362' href='#n362'>362</a>
<a id='n363' href='#n363'>363</a>
<a id='n364' href='#n364'>364</a>
<a id='n365' href='#n365'>365</a>
<a id='n366' href='#n366'>366</a>
<a id='n367' href='#n367'>367</a>
<a id='n368' href='#n368'>368</a>
<a id='n369' href='#n369'>369</a>
<a id='n370' href='#n370'>370</a>
<a id='n371' href='#n371'>371</a>
<a id='n372' href='#n372'>372</a>
<a id='n373' href='#n373'>373</a>
<a id='n374' href='#n374'>374</a>
<a id='n375' href='#n375'>375</a>
<a id='n376' href='#n376'>376</a>
<a id='n377' href='#n377'>377</a>
<a id='n378' href='#n378'>378</a>
<a id='n379' href='#n379'>379</a>
<a id='n380' href='#n380'>380</a>
<a id='n381' href='#n381'>381</a>
<a id='n382' href='#n382'>382</a>
<a id='n383' href='#n383'>383</a>
<a id='n384' href='#n384'>384</a>
<a id='n385' href='#n385'>385</a>
<a id='n386' href='#n386'>386</a>
<a id='n387' href='#n387'>387</a>
<a id='n388' href='#n388'>388</a>
<a id='n389' href='#n389'>389</a>
<a id='n390' href='#n390'>390</a>
<a id='n391' href='#n391'>391</a>
<a id='n392' href='#n392'>392</a>
<a id='n393' href='#n393'>393</a>
<a id='n394' href='#n394'>394</a>
<a id='n395' href='#n395'>395</a>
<a id='n396' href='#n396'>396</a>
<a id='n397' href='#n397'>397</a>
<a id='n398' href='#n398'>398</a>
<a id='n399' href='#n399'>399</a>
<a id='n400' href='#n400'>400</a>
<a id='n401' href='#n401'>401</a>
<a id='n402' href='#n402'>402</a>
<a id='n403' href='#n403'>403</a>
<a id='n404' href='#n404'>404</a>
<a id='n405' href='#n405'>405</a>
<a id='n406' href='#n406'>406</a>
<a id='n407' href='#n407'>407</a>
<a id='n408' href='#n408'>408</a>
<a id='n409' href='#n409'>409</a>
<a id='n410' href='#n410'>410</a>
<a id='n411' href='#n411'>411</a>
<a id='n412' href='#n412'>412</a>
<a id='n413' href='#n413'>413</a>
<a id='n414' href='#n414'>414</a>
<a id='n415' href='#n415'>415</a>
<a id='n416' href='#n416'>416</a>
<a id='n417' href='#n417'>417</a>
<a id='n418' href='#n418'>418</a>
<a id='n419' href='#n419'>419</a>
<a id='n420' href='#n420'>420</a>
<a id='n421' href='#n421'>421</a>
<a id='n422' href='#n422'>422</a>
<a id='n423' href='#n423'>423</a>
<a id='n424' href='#n424'>424</a>
<a id='n425' href='#n425'>425</a>
<a id='n426' href='#n426'>426</a>
<a id='n427' href='#n427'>427</a>
<a id='n428' href='#n428'>428</a>
<a id='n429' href='#n429'>429</a>
<a id='n430' href='#n430'>430</a>
<a id='n431' href='#n431'>431</a>
<a id='n432' href='#n432'>432</a>
<a id='n433' href='#n433'>433</a>
<a id='n434' href='#n434'>434</a>
<a id='n435' href='#n435'>435</a>
<a id='n436' href='#n436'>436</a>
<a id='n437' href='#n437'>437</a>
<a id='n438' href='#n438'>438</a>
<a id='n439' href='#n439'>439</a>
<a id='n440' href='#n440'>440</a>
<a id='n441' href='#n441'>441</a>
<a id='n442' href='#n442'>442</a>
<a id='n443' href='#n443'>443</a>
<a id='n444' href='#n444'>444</a>
<a id='n445' href='#n445'>445</a>
<a id='n446' href='#n446'>446</a>
<a id='n447' href='#n447'>447</a>
<a id='n448' href='#n448'>448</a>
<a id='n449' href='#n449'>449</a>
<a id='n450' href='#n450'>450</a>
<a id='n451' href='#n451'>451</a>
<a id='n452' href='#n452'>452</a>
<a id='n453' href='#n453'>453</a>
<a id='n454' href='#n454'>454</a>
<a id='n455' href='#n455'>455</a>
<a id='n456' href='#n456'>456</a>
<a id='n457' href='#n457'>457</a>
<a id='n458' href='#n458'>458</a>
<a id='n459' href='#n459'>459</a>
<a id='n460' href='#n460'>460</a>
<a id='n461' href='#n461'>461</a>
<a id='n462' href='#n462'>462</a>
<a id='n463' href='#n463'>463</a>
<a id='n464' href='#n464'>464</a>
<a id='n465' href='#n465'>465</a>
<a id='n466' href='#n466'>466</a>
<a id='n467' href='#n467'>467</a>
<a id='n468' href='#n468'>468</a>
<a id='n469' href='#n469'>469</a>
<a id='n470' href='#n470'>470</a>
<a id='n471' href='#n471'>471</a>
<a id='n472' href='#n472'>472</a>
<a id='n473' href='#n473'>473</a>
<a id='n474' href='#n474'>474</a>
<a id='n475' href='#n475'>475</a>
<a id='n476' href='#n476'>476</a>
<a id='n477' href='#n477'>477</a>
<a id='n478' href='#n478'>478</a>
<a id='n479' href='#n479'>479</a>
<a id='n480' href='#n480'>480</a>
<a id='n481' href='#n481'>481</a>
<a id='n482' href='#n482'>482</a>
<a id='n483' href='#n483'>483</a>
<a id='n484' href='#n484'>484</a>
<a id='n485' href='#n485'>485</a>
<a id='n486' href='#n486'>486</a>
<a id='n487' href='#n487'>487</a>
<a id='n488' href='#n488'>488</a>
<a id='n489' href='#n489'>489</a>
<a id='n490' href='#n490'>490</a>
<a id='n491' href='#n491'>491</a>
<a id='n492' href='#n492'>492</a>
<a id='n493' href='#n493'>493</a>
<a id='n494' href='#n494'>494</a>
<a id='n495' href='#n495'>495</a>
<a id='n496' href='#n496'>496</a>
<a id='n497' href='#n497'>497</a>
<a id='n498' href='#n498'>498</a>
<a id='n499' href='#n499'>499</a>
<a id='n500' href='#n500'>500</a>
<a id='n501' href='#n501'>501</a>
<a id='n502' href='#n502'>502</a>
<a id='n503' href='#n503'>503</a>
<a id='n504' href='#n504'>504</a>
<a id='n505' href='#n505'>505</a>
<a id='n506' href='#n506'>506</a>
<a id='n507' href='#n507'>507</a>
<a id='n508' href='#n508'>508</a>
<a id='n509' href='#n509'>509</a>
<a id='n510' href='#n510'>510</a>
<a id='n511' href='#n511'>511</a>
<a id='n512' href='#n512'>512</a>
<a id='n513' href='#n513'>513</a>
<a id='n514' href='#n514'>514</a>
<a id='n515' href='#n515'>515</a>
<a id='n516' href='#n516'>516</a>
<a id='n517' href='#n517'>517</a>
<a id='n518' href='#n518'>518</a>
<a id='n519' href='#n519'>519</a>
<a id='n520' href='#n520'>520</a>
<a id='n521' href='#n521'>521</a>
<a id='n522' href='#n522'>522</a>
<a id='n523' href='#n523'>523</a>
<a id='n524' href='#n524'>524</a>
<a id='n525' href='#n525'>525</a>
<a id='n526' href='#n526'>526</a>
<a id='n527' href='#n527'>527</a>
<a id='n528' href='#n528'>528</a>
<a id='n529' href='#n529'>529</a>
<a id='n530' href='#n530'>530</a>
<a id='n531' href='#n531'>531</a>
<a id='n532' href='#n532'>532</a>
<a id='n533' href='#n533'>533</a>
<a id='n534' href='#n534'>534</a>
<a id='n535' href='#n535'>535</a>
<a id='n536' href='#n536'>536</a>
<a id='n537' href='#n537'>537</a>
<a id='n538' href='#n538'>538</a>
<a id='n539' href='#n539'>539</a>
<a id='n540' href='#n540'>540</a>
<a id='n541' href='#n541'>541</a>
<a id='n542' href='#n542'>542</a>
<a id='n543' href='#n543'>543</a>
<a id='n544' href='#n544'>544</a>
<a id='n545' href='#n545'>545</a>
<a id='n546' href='#n546'>546</a>
<a id='n547' href='#n547'>547</a>
<a id='n548' href='#n548'>548</a>
<a id='n549' href='#n549'>549</a>
<a id='n550' href='#n550'>550</a>
<a id='n551' href='#n551'>551</a>
<a id='n552' href='#n552'>552</a>
<a id='n553' href='#n553'>553</a>
<a id='n554' href='#n554'>554</a>
<a id='n555' href='#n555'>555</a>
<a id='n556' href='#n556'>556</a>
<a id='n557' href='#n557'>557</a>
<a id='n558' href='#n558'>558</a>
<a id='n559' href='#n559'>559</a>
<a id='n560' href='#n560'>560</a>
<a id='n561' href='#n561'>561</a>
<a id='n562' href='#n562'>562</a>
<a id='n563' href='#n563'>563</a>
<a id='n564' href='#n564'>564</a>
<a id='n565' href='#n565'>565</a>
<a id='n566' href='#n566'>566</a>
<a id='n567' href='#n567'>567</a>
<a id='n568' href='#n568'>568</a>
<a id='n569' href='#n569'>569</a>
<a id='n570' href='#n570'>570</a>
<a id='n571' href='#n571'>571</a>
<a id='n572' href='#n572'>572</a>
<a id='n573' href='#n573'>573</a>
<a id='n574' href='#n574'>574</a>
<a id='n575' href='#n575'>575</a>
<a id='n576' href='#n576'>576</a>
<a id='n577' href='#n577'>577</a>
<a id='n578' href='#n578'>578</a>
<a id='n579' href='#n579'>579</a>
<a id='n580' href='#n580'>580</a>
<a id='n581' href='#n581'>581</a>
<a id='n582' href='#n582'>582</a>
<a id='n583' href='#n583'>583</a>
<a id='n584' href='#n584'>584</a>
<a id='n585' href='#n585'>585</a>
<a id='n586' href='#n586'>586</a>
<a id='n587' href='#n587'>587</a>
<a id='n588' href='#n588'>588</a>
<a id='n589' href='#n589'>589</a>
<a id='n590' href='#n590'>590</a>
<a id='n591' href='#n591'>591</a>
<a id='n592' href='#n592'>592</a>
<a id='n593' href='#n593'>593</a>
<a id='n594' href='#n594'>594</a>
<a id='n595' href='#n595'>595</a>
<a id='n596' href='#n596'>596</a>
<a id='n597' href='#n597'>597</a>
<a id='n598' href='#n598'>598</a>
<a id='n599' href='#n599'>599</a>
<a id='n600' href='#n600'>600</a>
<a id='n601' href='#n601'>601</a>
<a id='n602' href='#n602'>602</a>
<a id='n603' href='#n603'>603</a>
<a id='n604' href='#n604'>604</a>
<a id='n605' href='#n605'>605</a>
<a id='n606' href='#n606'>606</a>
<a id='n607' href='#n607'>607</a>
<a id='n608' href='#n608'>608</a>
<a id='n609' href='#n609'>609</a>
<a id='n610' href='#n610'>610</a>
<a id='n611' href='#n611'>611</a>
<a id='n612' href='#n612'>612</a>
<a id='n613' href='#n613'>613</a>
<a id='n614' href='#n614'>614</a>
<a id='n615' href='#n615'>615</a>
<a id='n616' href='#n616'>616</a>
<a id='n617' href='#n617'>617</a>
<a id='n618' href='#n618'>618</a>
<a id='n619' href='#n619'>619</a>
<a id='n620' href='#n620'>620</a>
<a id='n621' href='#n621'>621</a>
<a id='n622' href='#n622'>622</a>
<a id='n623' href='#n623'>623</a>
<a id='n624' href='#n624'>624</a>
<a id='n625' href='#n625'>625</a>
<a id='n626' href='#n626'>626</a>
<a id='n627' href='#n627'>627</a>
<a id='n628' href='#n628'>628</a>
<a id='n629' href='#n629'>629</a>
<a id='n630' href='#n630'>630</a>
<a id='n631' href='#n631'>631</a>
<a id='n632' href='#n632'>632</a>
<a id='n633' href='#n633'>633</a>
<a id='n634' href='#n634'>634</a>
<a id='n635' href='#n635'>635</a>
<a id='n636' href='#n636'>636</a>
<a id='n637' href='#n637'>637</a>
<a id='n638' href='#n638'>638</a>
<a id='n639' href='#n639'>639</a>
<a id='n640' href='#n640'>640</a>
<a id='n641' href='#n641'>641</a>
<a id='n642' href='#n642'>642</a>
</pre></td>
<td class='lines'><pre><code><span class="hl com">/*</span>
<span class="hl com"> * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved</span>
<span class="hl com"> *</span>
<span class="hl com"> * $Header$</span>
<span class="hl com"> */</span>

<span class="hl ppc">#ifndef __KADM5_ADMIN_H__</span>
<span class="hl ppc">#define __KADM5_ADMIN_H__</span>

<span class="hl ppc">#if !defined(USE_KADM5_API_VERSION)</span>
<span class="hl ppc">#define USE_KADM5_API_VERSION 2</span>
<span class="hl ppc">#endif</span>
     
<span class="hl ppc">#include	&lt;sys/types.h&gt;</span>
<span class="hl ppc">#include	&lt;rpc/rpc.h&gt;</span>
<span class="hl ppc">#include	&lt;krb5.h&gt;</span>
<span class="hl ppc">#include	&lt;k5-int.h&gt;</span>
<span class="hl ppc">#include	&lt;com_err.h&gt;</span>
<span class="hl ppc">#include	&lt;kadm5/kadm_err.h&gt;</span>
<span class="hl ppc">#include	&lt;kadm5/adb_err.h&gt;</span>
<span class="hl ppc">#include	&lt;kadm5/chpass_util_strings.h&gt;</span>

<span class="hl ppc">#define KADM5_ADMIN_SERVICE</span>	<span class="hl pps">&quot;kadmin/admin&quot;</span><span class="hl ppc"></span>
<span class="hl ppc">#define KADM5_CHANGEPW_SERVICE</span>	<span class="hl pps">&quot;kadmin/changepw&quot;</span><span class="hl ppc"></span>
<span class="hl ppc">#define KADM5_HIST_PRINCIPAL</span>	<span class="hl pps">&quot;kadmin/history&quot;</span><span class="hl ppc"></span>

<span class="hl kwc">typedef</span> krb5_principal	kadm5_princ_t<span class="hl opt">;</span>
<span class="hl kwc">typedef</span>	<span class="hl kwb">char</span>		<span class="hl opt">*</span>kadm5_policy_t<span class="hl opt">;</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">long</span>		kadm5_ret_t<span class="hl opt">;</span>

<span class="hl ppc">#define KADM5_PW_FIRST_PROMPT \</span>
<span class="hl ppc">	((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT))</span>
<span class="hl ppc">#define KADM5_PW_SECOND_PROMPT \</span>
<span class="hl ppc">	((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT))</span>

<span class="hl com">/*</span>
<span class="hl com"> * Succsessfull return code</span>
<span class="hl com"> */</span>
<span class="hl ppc">#define KADM5_OK	0</span>

<span class="hl com">/*</span>
<span class="hl com"> * Field masks</span>
<span class="hl com"> */</span>

<span class="hl com">/* kadm5_principal_ent_t */</span>
<span class="hl ppc">#define KADM5_PRINCIPAL		0x000001</span>
<span class="hl ppc">#define KADM5_PRINC_EXPIRE_TIME	0x000002</span>
<span class="hl ppc">#define KADM5_PW_EXPIRATION	0x000004</span>
<span class="hl ppc">#define KADM5_LAST_PWD_CHANGE	0x000008</span>
<span class="hl ppc">#define KADM5_ATTRIBUTES	0x000010</span>
<span class="hl ppc">#define KADM5_MAX_LIFE		0x000020</span>
<span class="hl ppc">#define KADM5_MOD_TIME		0x000040</span>
<span class="hl ppc">#define KADM5_MOD_NAME		0x000080</span>
<span class="hl ppc">#define KADM5_KVNO		0x000100</span>
<span class="hl ppc">#define KADM5_MKVNO		0x000200</span>
<span class="hl ppc">#define KADM5_AUX_ATTRIBUTES	0x000400</span>
<span class="hl ppc">#define KADM5_POLICY		0x000800</span>
<span class="hl ppc">#define KADM5_POLICY_CLR	0x001000</span>
<span class="hl com">/* version 2 masks */</span>
<span class="hl ppc">#define KADM5_MAX_RLIFE		0x002000</span>
<span class="hl ppc">#define KADM5_LAST_SUCCESS	0x004000</span>
<span class="hl ppc">#define KADM5_LAST_FAILED	0x008000</span>
<span class="hl ppc">#define KADM5_FAIL_AUTH_COUNT	0x010000</span>
<span class="hl ppc">#define KADM5_KEY_DATA		0x020000</span>
<span class="hl ppc">#define KADM5_TL_DATA		0x040000</span>
<span class="hl com">/* all but KEY_DATA and TL_DATA */</span>
<span class="hl ppc">#define KADM5_PRINCIPAL_NORMAL_MASK 0x01ffff</span>

<span class="hl com">/* kadm5_policy_ent_t */</span>
<span class="hl ppc">#define KADM5_PW_MAX_LIFE	0x004000</span>
<span class="hl ppc">#define KADM5_PW_MIN_LIFE	0x008000</span>
<span class="hl ppc">#define KADM5_PW_MIN_LENGTH	0x010000</span>
<span class="hl ppc">#define KADM5_PW_MIN_CLASSES	0x020000</span>
<span class="hl ppc">#define KADM5_PW_HISTORY_NUM	0x040000</span>
<span class="hl ppc">#define KADM5_REF_COUNT		0x080000</span>

<span class="hl com">/* kadm5_config_params */</span>
<span class="hl ppc">#define KADM5_CONFIG_REALM		0x000001</span>
<span class="hl ppc">#define KADM5_CONFIG_DBNAME		0x000002</span>
<span class="hl ppc">#define KADM5_CONFIG_MKEY_NAME		0x000004</span>
<span class="hl ppc">#define KADM5_CONFIG_MAX_LIFE		0x000008</span>
<span class="hl ppc">#define KADM5_CONFIG_MAX_RLIFE		0x000010</span>
<span class="hl ppc">#define KADM5_CONFIG_EXPIRATION		0x000020</span>
<span class="hl ppc">#define KADM5_CONFIG_FLAGS		0x000040</span>
<span class="hl ppc">#define KADM5_CONFIG_ADMIN_KEYTAB	0x000080</span>
<span class="hl ppc">#define KADM5_CONFIG_STASH_FILE		0x000100</span>
<span class="hl ppc">#define KADM5_CONFIG_ENCTYPE		0x000200</span>
<span class="hl ppc">#define KADM5_CONFIG_ADBNAME		0x000400</span>
<span class="hl ppc">#define KADM5_CONFIG_ADB_LOCKFILE	0x000800</span>
<span class="hl ppc">#define KADM5_CONFIG_PROFILE		0x001000</span>
<span class="hl ppc">#define KADM5_CONFIG_ACL_FILE		0x002000</span>
<span class="hl ppc">#define KADM5_CONFIG_KADMIND_PORT	0x004000</span>
<span class="hl ppc">#define KADM5_CONFIG_ENCTYPES		0x008000</span>
<span class="hl ppc">#define KADM5_CONFIG_ADMIN_SERVER	0x010000</span>
<span class="hl ppc">#define KADM5_CONFIG_DICT_FILE		0x020000</span>
<span class="hl ppc">#define KADM5_CONFIG_MKEY_FROM_KBD	0x040000</span>
   
<span class="hl com">/*</span>
<span class="hl com"> * permission bits</span>
<span class="hl com"> */</span>
<span class="hl ppc">#define KADM5_PRIV_GET		0x01</span>
<span class="hl ppc">#define KADM5_PRIV_ADD		0x02</span>
<span class="hl ppc">#define KADM5_PRIV_MODIFY	0x04</span>
<span class="hl ppc">#define KADM5_PRIV_DELETE	0x08</span>

<span class="hl com">/*</span>
<span class="hl com"> * API versioning constants</span>
<span class="hl com"> */</span>
<span class="hl ppc">#define KADM5_MASK_BITS		0xffffff00</span>

<span class="hl ppc">#define KADM5_STRUCT_VERSION_MASK	0x12345600</span>
<span class="hl ppc">#define KADM5_STRUCT_VERSION_1	(KADM5_STRUCT_VERSION_MASK|0x01)</span>
<span class="hl ppc">#define KADM5_STRUCT_VERSION	KADM5_STRUCT_VERSION_1</span>

<span class="hl ppc">#define KADM5_API_VERSION_MASK	0x12345700</span>
<span class="hl ppc">#define KADM5_API_VERSION_1	(KADM5_API_VERSION_MASK|0x01)</span>
<span class="hl ppc">#define KADM5_API_VERSION_2	(KADM5_API_VERSION_MASK|0x02)</span>

<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _kadm5_principal_ent_t_v2 <span class="hl opt">{</span>
	krb5_principal	principal<span class="hl opt">;</span>
	krb5_timestamp	princ_expire_time<span class="hl opt">;</span>
	krb5_timestamp	last_pwd_change<span class="hl opt">;</span>
	krb5_timestamp	pw_expiration<span class="hl opt">;</span>
	krb5_deltat	max_life<span class="hl opt">;</span>
	krb5_principal	mod_name<span class="hl opt">;</span>
	krb5_timestamp	mod_date<span class="hl opt">;</span>
	krb5_flags	attributes<span class="hl opt">;</span>
	krb5_kvno	kvno<span class="hl opt">;</span>
	krb5_kvno	mkvno<span class="hl opt">;</span>
	<span class="hl kwb">char</span>		<span class="hl opt">*</span>policy<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		aux_attributes<span class="hl opt">;</span>

	<span class="hl com">/* version 2 fields */</span>
	krb5_deltat max_renewable_life<span class="hl opt">;</span>
        krb5_timestamp last_success<span class="hl opt">;</span>
        krb5_timestamp last_failed<span class="hl opt">;</span>
        krb5_kvno fail_auth_count<span class="hl opt">;</span>
	krb5_int16 n_key_data<span class="hl opt">;</span>
	krb5_int16 n_tl_data<span class="hl opt">;</span>
        krb5_tl_data <span class="hl opt">*</span>tl_data<span class="hl opt">;</span>
	krb5_key_data <span class="hl opt">*</span>key_data<span class="hl opt">;</span>
<span class="hl opt">}</span> kadm5_principal_ent_rec_v2<span class="hl opt">, *</span>kadm5_principal_ent_t_v2<span class="hl opt">;</span>

<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _kadm5_principal_ent_t_v1 <span class="hl opt">{</span>
	krb5_principal	principal<span class="hl opt">;</span>
	krb5_timestamp	princ_expire_time<span class="hl opt">;</span>
	krb5_timestamp	last_pwd_change<span class="hl opt">;</span>
	krb5_timestamp	pw_expiration<span class="hl opt">;</span>
	krb5_deltat	max_life<span class="hl opt">;</span>
	krb5_principal	mod_name<span class="hl opt">;</span>
	krb5_timestamp	mod_date<span class="hl opt">;</span>
	krb5_flags	attributes<span class="hl opt">;</span>
	krb5_kvno	kvno<span class="hl opt">;</span>
	krb5_kvno	mkvno<span class="hl opt">;</span>
	<span class="hl kwb">char</span>		<span class="hl opt">*</span>policy<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		aux_attributes<span class="hl opt">;</span>
<span class="hl opt">}</span> kadm5_principal_ent_rec_v1<span class="hl opt">, *</span>kadm5_principal_ent_t_v1<span class="hl opt">;</span>

<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _kadm5_principal_ent_t_v1
     kadm5_principal_ent_rec<span class="hl opt">, *</span>kadm5_principal_ent_t<span class="hl opt">;</span>
<span class="hl ppc">#else</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _kadm5_principal_ent_t_v2
     kadm5_principal_ent_rec<span class="hl opt">, *</span>kadm5_principal_ent_t<span class="hl opt">;</span>
<span class="hl ppc">#endif</span>

<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _kadm5_policy_ent_t <span class="hl opt">{</span>
	<span class="hl kwb">char</span>		<span class="hl opt">*</span>policy<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_min_life<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_max_life<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_min_length<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_min_classes<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_history_num<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		policy_refcnt<span class="hl opt">;</span>
<span class="hl opt">}</span> kadm5_policy_ent_rec<span class="hl opt">, *</span>kadm5_policy_ent_t<span class="hl opt">;</span>

<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> __krb5_key_salt_tuple <span class="hl opt">{</span>
     krb5_enctype	ks_enctype<span class="hl opt">;</span>
     krb5_int32		ks_salttype<span class="hl opt">;</span>
<span class="hl opt">}</span> krb5_key_salt_tuple<span class="hl opt">;</span>

<span class="hl com">/*</span>
<span class="hl com"> * Data structure returned by kadm5_get_config_params()</span>
<span class="hl com"> */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _kadm5_config_params <span class="hl opt">{</span>
     <span class="hl kwb">long</span>		mask<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		realm<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		profile<span class="hl opt">;</span>
     <span class="hl kwb">int</span>		kadmind_port<span class="hl opt">;</span>

     <span class="hl kwb">char</span> <span class="hl opt">*</span>		admin_server<span class="hl opt">;</span>

     <span class="hl kwb">char</span> <span class="hl opt">*</span>		dbname<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		admin_dbname<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		admin_lockfile<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		admin_keytab<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		acl_file<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		dict_file<span class="hl opt">;</span>

     <span class="hl kwb">int</span>		mkey_from_kbd<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		stash_file<span class="hl opt">;</span>
     <span class="hl kwb">char</span> <span class="hl opt">*</span>		mkey_name<span class="hl opt">;</span>
     krb5_enctype	enctype<span class="hl opt">;</span>
     krb5_deltat	max_life<span class="hl opt">;</span>
     krb5_deltat	max_rlife<span class="hl opt">;</span>
     krb5_timestamp	expiration<span class="hl opt">;</span>
     krb5_flags		flags<span class="hl opt">;</span>
     krb5_key_salt_tuple <span class="hl opt">*</span>keysalts<span class="hl opt">;</span>
     krb5_int32		num_keysalts<span class="hl opt">;</span>
<span class="hl opt">}</span> kadm5_config_params<span class="hl opt">;</span>

<span class="hl com">/***********************************************************************</span>
<span class="hl com"> * This is the old krb5_realm_read_params, which I mutated into</span>
<span class="hl com"> * kadm5_get_config_params but which old code (kdb5_* and krb5kdc)</span>
<span class="hl com"> * still uses.</span>
<span class="hl com"> ***********************************************************************/</span>

<span class="hl com">/*</span>
<span class="hl com"> * Data structure returned by krb5_read_realm_params()</span>
<span class="hl com"> */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> __krb5_realm_params <span class="hl opt">{</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>		realm_profile<span class="hl opt">;</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>		realm_dbname<span class="hl opt">;</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>		realm_mkey_name<span class="hl opt">;</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>		realm_stash_file<span class="hl opt">;</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>		realm_kdc_ports<span class="hl opt">;</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>		realm_acl_file<span class="hl opt">;</span>
    krb5_int32		realm_kadmind_port<span class="hl opt">;</span>
    krb5_enctype	realm_enctype<span class="hl opt">;</span>
    krb5_deltat		realm_max_life<span class="hl opt">;</span>
    krb5_deltat		realm_max_rlife<span class="hl opt">;</span>
    krb5_timestamp	realm_expiration<span class="hl opt">;</span>
    krb5_flags		realm_flags<span class="hl opt">;</span>
    krb5_key_salt_tuple	<span class="hl opt">*</span>realm_keysalts<span class="hl opt">;</span>
    <span class="hl kwb">unsigned int</span>	realm_kadmind_port_valid<span class="hl opt">:</span><span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwb">unsigned int</span>	realm_enctype_valid<span class="hl opt">:</span><span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwb">unsigned int</span>	realm_max_life_valid<span class="hl opt">:</span><span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwb">unsigned int</span>	realm_max_rlife_valid<span class="hl opt">:</span><span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwb">unsigned int</span>	realm_expiration_valid<span class="hl opt">:</span><span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwb">unsigned int</span>	realm_flags_valid<span class="hl opt">:</span><span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwb">unsigned int</span>	realm_filler<span class="hl opt">:</span><span class="hl num">7</span><span class="hl opt">;</span>
    krb5_int32		realm_num_keysalts<span class="hl opt">;</span>
<span class="hl opt">}</span> krb5_realm_params<span class="hl opt">;</span>

<span class="hl com">/*</span>
<span class="hl com"> * functions</span>
<span class="hl com"> */</span>

<span class="hl ppc">#if USE_KADM5_API_VERSION &gt; 1</span>
krb5_error_code <span class="hl kwd">kadm5_get_config_params</span><span class="hl opt">(</span>krb5_context context<span class="hl opt">,</span>
					<span class="hl kwb">char</span> <span class="hl opt">*</span>kdcprofile<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">*</span>kdcenv<span class="hl opt">,</span>
					kadm5_config_params <span class="hl opt">*</span>params_in<span class="hl opt">,</span>
					kadm5_config_params <span class="hl opt">*</span>params_out<span class="hl opt">);</span>
krb5_error_code <span class="hl kwd">kadm5_free_realm_params</span><span class="hl opt">(</span>krb5_context kcontext<span class="hl opt">,</span>
					kadm5_config_params <span class="hl opt">*</span>params<span class="hl opt">);</span>
<span class="hl ppc">#endif</span>

kadm5_ret_t    <span class="hl kwd">kadm5_init</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>client_name<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">,</span>
			  <span class="hl kwb">char</span> <span class="hl opt">*</span>service_name<span class="hl opt">,</span>
<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
			  <span class="hl kwb">char</span> <span class="hl opt">*</span>realm<span class="hl opt">,</span>
<span class="hl ppc">#else</span>
			  kadm5_config_params <span class="hl opt">*</span>params<span class="hl opt">,</span>
<span class="hl ppc">#endif</span>
			  krb5_ui_4 struct_version<span class="hl opt">,</span>
			  krb5_ui_4 api_version<span class="hl opt">,</span>
			  <span class="hl kwb">void</span> <span class="hl opt">**</span>server_handle<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_init_with_password</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>client_name<span class="hl opt">,</span>
					<span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">,</span> 
					<span class="hl kwb">char</span> <span class="hl opt">*</span>service_name<span class="hl opt">,</span>
<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
					<span class="hl kwb">char</span> <span class="hl opt">*</span>realm<span class="hl opt">,</span>
<span class="hl ppc">#else</span>
					kadm5_config_params <span class="hl opt">*</span>params<span class="hl opt">,</span>
<span class="hl ppc">#endif</span>
					krb5_ui_4 struct_version<span class="hl opt">,</span>
					krb5_ui_4 api_version<span class="hl opt">,</span>
					<span class="hl kwb">void</span> <span class="hl opt">**</span>server_handle<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_init_with_skey</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>client_name<span class="hl opt">,</span>
				    <span class="hl kwb">char</span> <span class="hl opt">*</span>keytab<span class="hl opt">,</span>
				    <span class="hl kwb">char</span> <span class="hl opt">*</span>service_name<span class="hl opt">,</span>
<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
				    <span class="hl kwb">char</span> <span class="hl opt">*</span>realm<span class="hl opt">,</span>
<span class="hl ppc">#else</span>
				    kadm5_config_params <span class="hl opt">*</span>params<span class="hl opt">,</span>
<span class="hl ppc">#endif</span>
				    krb5_ui_4 struct_version<span class="hl opt">,</span>
				    krb5_ui_4 api_version<span class="hl opt">,</span>
				    <span class="hl kwb">void</span> <span class="hl opt">**</span>server_handle<span class="hl opt">);</span>
<span class="hl ppc">#if USE_KADM5_API_VERSION &gt; 1</span>
kadm5_ret_t    <span class="hl kwd">kadm5_init_with_creds</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>client_name<span class="hl opt">,</span>
				     krb5_ccache cc<span class="hl opt">,</span>
				     <span class="hl kwb">char</span> <span class="hl opt">*</span>service_name<span class="hl opt">,</span>
				     kadm5_config_params <span class="hl opt">*</span>params<span class="hl opt">,</span>
				     krb5_ui_4 struct_version<span class="hl opt">,</span>
				     krb5_ui_4 api_version<span class="hl opt">,</span>
				     <span class="hl kwb">void</span> <span class="hl opt">**</span>server_handle<span class="hl opt">);</span>
<span class="hl ppc">#endif</span>
kadm5_ret_t    <span class="hl kwd">kadm5_flush</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_destroy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_create_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				      kadm5_principal_ent_t ent<span class="hl opt">,</span>
				      <span class="hl kwb">long</span> mask<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_delete_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				      krb5_principal principal<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_modify_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				      kadm5_principal_ent_t ent<span class="hl opt">,</span>
				      <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_rename_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				      krb5_principal<span class="hl opt">,</span>krb5_principal<span class="hl opt">);</span>
<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
kadm5_ret_t    <span class="hl kwd">kadm5_get_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				   krb5_principal principal<span class="hl opt">,</span>
				   kadm5_principal_ent_t <span class="hl opt">*</span>ent<span class="hl opt">);</span>
<span class="hl ppc">#else</span>
kadm5_ret_t    <span class="hl kwd">kadm5_get_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				   krb5_principal principal<span class="hl opt">,</span>
				   kadm5_principal_ent_t ent<span class="hl opt">,</span>
				   <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
<span class="hl ppc">#endif</span>
kadm5_ret_t    <span class="hl kwd">kadm5_chpass_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				      krb5_principal principal<span class="hl opt">,</span>
				      <span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">);</span>
<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
kadm5_ret_t    <span class="hl kwd">kadm5_randkey_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				       krb5_principal principal<span class="hl opt">,</span>
				       krb5_keyblock <span class="hl opt">**</span>keyblock<span class="hl opt">);</span>
<span class="hl ppc">#else</span>
kadm5_ret_t    <span class="hl kwd">kadm5_randkey_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				       krb5_principal principal<span class="hl opt">,</span>
				       krb5_keyblock <span class="hl opt">**</span>keyblocks<span class="hl opt">,</span>
				       <span class="hl kwb">int</span> <span class="hl opt">*</span>n_keys<span class="hl opt">);</span>
<span class="hl ppc">#endif</span>
kadm5_ret_t    <span class="hl kwd">kadm5_create_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				   kadm5_policy_ent_t ent<span class="hl opt">,</span>
				   <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
<span class="hl com">/*</span>
<span class="hl com"> * kadm5_create_policy_internal is not part of the supported,</span>
<span class="hl com"> * exposed API.  It is available only in the server library, and you</span>
<span class="hl com"> * shouldn&#39;t use it unless you know why it&#39;s there and how it&#39;s</span>
<span class="hl com"> * different from kadm5_create_policy.</span>
<span class="hl com"> */</span>
kadm5_ret_t    <span class="hl kwd">kadm5_create_policy_internal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					    kadm5_policy_ent_t
					    entry<span class="hl opt">,</span> <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_delete_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				   kadm5_policy_t policy<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_modify_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				   kadm5_policy_ent_t ent<span class="hl opt">,</span>
				   <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
<span class="hl com">/*</span>
<span class="hl com"> * kadm5_modify_policy_internal is not part of the supported,</span>
<span class="hl com"> * exposed API.  It is available only in the server library, and you</span>
<span class="hl com"> * shouldn&#39;t use it unless you know why it&#39;s there and how it&#39;s</span>
<span class="hl com"> * different from kadm5_modify_policy.</span>
<span class="hl com"> */</span>
kadm5_ret_t    <span class="hl kwd">kadm5_modify_policy_internal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					    kadm5_policy_ent_t
					    entry<span class="hl opt">,</span> <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
kadm5_ret_t    <span class="hl kwd">kadm5_get_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				kadm5_policy_t policy<span class="hl opt">,</span>
				kadm5_policy_ent_t <span class="hl opt">*</span>ent<span class="hl opt">);</span>
<span class="hl ppc">#else</span>
kadm5_ret_t    <span class="hl kwd">kadm5_get_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				kadm5_policy_t policy<span class="hl opt">,</span>
				kadm5_policy_ent_t ent<span class="hl opt">);</span>
<span class="hl ppc">#endif</span>
kadm5_ret_t    <span class="hl kwd">kadm5_get_privs</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
			       <span class="hl kwb">long</span> <span class="hl opt">*</span>privs<span class="hl opt">);</span>

kadm5_ret_t    <span class="hl kwd">kadm5_chpass_principal_util</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					   krb5_principal princ<span class="hl opt">,</span>
					   <span class="hl kwb">char</span> <span class="hl opt">*</span>new_pw<span class="hl opt">,</span> 
					   <span class="hl kwb">char</span> <span class="hl opt">**</span>ret_pw<span class="hl opt">,</span>
					   <span class="hl kwb">char</span> <span class="hl opt">*</span>msg_ret<span class="hl opt">);</span>

kadm5_ret_t    <span class="hl kwd">kadm5_free_principal_ent</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					kadm5_principal_ent_t
					ent<span class="hl opt">);</span>
kadm5_ret_t    <span class="hl kwd">kadm5_free_policy_ent</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				     kadm5_policy_ent_t ent<span class="hl opt">);</span>

kadm5_ret_t    <span class="hl kwd">kadm5_get_principals</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				    <span class="hl kwb">char</span> <span class="hl opt">*</span>exp<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">***</span>princs<span class="hl opt">,</span>
				    <span class="hl kwb">int</span> <span class="hl opt">*</span>count<span class="hl opt">);</span>

kadm5_ret_t    <span class="hl kwd">kadm5_get_policies</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				  <span class="hl kwb">char</span> <span class="hl opt">*</span>exp<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">***</span>pols<span class="hl opt">,</span>
				  <span class="hl kwb">int</span> <span class="hl opt">*</span>count<span class="hl opt">);</span>

<span class="hl ppc">#if USE_KADM5_API_VERSION &gt; 1</span>
kadm5_ret_t    <span class="hl kwd">kadm5_free_key_data</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
				   krb5_int16 <span class="hl opt">*</span>n_key_data<span class="hl opt">,</span>
				   krb5_key_data <span class="hl opt">*</span>key_data<span class="hl opt">);</span>
<span class="hl ppc">#endif</span>

<span class="hl ppc">#if USE_KADM5_API_VERSION == 1</span>
<span class="hl com">/*</span>
<span class="hl com"> * OVSEC_KADM_API_VERSION_1 should be, if possible, compile-time</span>
<span class="hl com"> * compatible with KADM5_API_VERSION_2.  Basically, this means we have</span>
<span class="hl com"> * to continue to provide all the old ovsec_kadm function and symbol</span>
<span class="hl com"> * names.</span>
<span class="hl com"> */</span>

<span class="hl ppc">#define OVSEC_KADM_ACLFILE</span>		<span class="hl pps">&quot;/krb5/ovsec_adm.acl&quot;</span><span class="hl ppc"></span>
<span class="hl ppc">#define	OVSEC_KADM_WORDFILE</span>		<span class="hl pps">&quot;/krb5/ovsec_adm.dict&quot;</span><span class="hl ppc"></span>

<span class="hl ppc">#define OVSEC_KADM_ADMIN_SERVICE</span>	<span class="hl pps">&quot;ovsec_adm/admin&quot;</span><span class="hl ppc"></span>
<span class="hl ppc">#define OVSEC_KADM_CHANGEPW_SERVICE</span>	<span class="hl pps">&quot;ovsec_adm/changepw&quot;</span><span class="hl ppc"></span>
<span class="hl ppc">#define OVSEC_KADM_HIST_PRINCIPAL</span>	<span class="hl pps">&quot;ovsec_adm/history&quot;</span><span class="hl ppc"></span>

<span class="hl kwc">typedef</span> krb5_principal	ovsec_kadm_princ_t<span class="hl opt">;</span>
<span class="hl kwc">typedef</span> krb5_keyblock	ovsec_kadm_keyblock<span class="hl opt">;</span>
<span class="hl kwc">typedef</span>	<span class="hl kwb">char</span>		<span class="hl opt">*</span>ovsec_kadm_policy_t<span class="hl opt">;</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">long</span>		ovsec_kadm_ret_t<span class="hl opt">;</span>

<span class="hl kwb">enum</span>	ovsec_kadm_salttype <span class="hl opt">{</span> OVSEC_KADM_SALT_V4<span class="hl opt">,</span> OVSEC_KADM_SALT_NORMAL <span class="hl opt">};</span>
<span class="hl kwb">enum</span>	ovsec_kadm_saltmod  <span class="hl opt">{</span> OVSEC_KADM_MOD_KEEP<span class="hl opt">,</span> OVSEC_KADM_MOD_V4<span class="hl opt">,</span> OVSEC_KADM_MOD_NORMAL <span class="hl opt">};</span>

<span class="hl ppc">#define OVSEC_KADM_PW_FIRST_PROMPT \</span>
<span class="hl ppc">	((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_PROMPT))</span>
<span class="hl ppc">#define OVSEC_KADM_PW_SECOND_PROMPT \</span>
<span class="hl ppc">	((char *) error_message(CHPASS_UTIL_NEW_PASSWORD_AGAIN_PROMPT))</span>

<span class="hl com">/*</span>
<span class="hl com"> * Succsessfull return code</span>
<span class="hl com"> */</span>
<span class="hl ppc">#define OVSEC_KADM_OK	0</span>
 
<span class="hl com">/*</span>
<span class="hl com"> * Create/Modify masks</span>
<span class="hl com"> */</span>
<span class="hl com">/* principal */</span>
<span class="hl ppc">#define OVSEC_KADM_PRINCIPAL		0x000001</span>
<span class="hl ppc">#define OVSEC_KADM_PRINC_EXPIRE_TIME	0x000002</span>
<span class="hl ppc">#define OVSEC_KADM_PW_EXPIRATION	0x000004</span>
<span class="hl ppc">#define OVSEC_KADM_LAST_PWD_CHANGE	0x000008</span>
<span class="hl ppc">#define OVSEC_KADM_ATTRIBUTES		0x000010</span>
<span class="hl ppc">#define OVSEC_KADM_MAX_LIFE		0x000020</span>
<span class="hl ppc">#define OVSEC_KADM_MOD_TIME		0x000040</span>
<span class="hl ppc">#define OVSEC_KADM_MOD_NAME		0x000080</span>
<span class="hl ppc">#define OVSEC_KADM_KVNO			0x000100</span>
<span class="hl ppc">#define OVSEC_KADM_MKVNO		0x000200</span>
<span class="hl ppc">#define OVSEC_KADM_AUX_ATTRIBUTES	0x000400</span>
<span class="hl ppc">#define OVSEC_KADM_POLICY		0x000800</span>
<span class="hl ppc">#define OVSEC_KADM_POLICY_CLR		0x001000</span>
<span class="hl com">/* policy */</span>
<span class="hl ppc">#define OVSEC_KADM_PW_MAX_LIFE		0x004000</span>
<span class="hl ppc">#define OVSEC_KADM_PW_MIN_LIFE		0x008000</span>
<span class="hl ppc">#define OVSEC_KADM_PW_MIN_LENGTH	0x010000</span>
<span class="hl ppc">#define OVSEC_KADM_PW_MIN_CLASSES	0x020000</span>
<span class="hl ppc">#define OVSEC_KADM_PW_HISTORY_NUM	0x040000</span>
<span class="hl ppc">#define OVSEC_KADM_REF_COUNT		0x080000</span>

<span class="hl com">/*</span>
<span class="hl com"> * permission bits</span>
<span class="hl com"> */</span>
<span class="hl ppc">#define OVSEC_KADM_PRIV_GET	0x01</span>
<span class="hl ppc">#define OVSEC_KADM_PRIV_ADD	0x02</span>
<span class="hl ppc">#define OVSEC_KADM_PRIV_MODIFY	0x04</span>
<span class="hl ppc">#define OVSEC_KADM_PRIV_DELETE	0x08</span>

<span class="hl com">/*</span>
<span class="hl com"> * API versioning constants</span>
<span class="hl com"> */</span>
<span class="hl ppc">#define OVSEC_KADM_MASK_BITS		0xffffff00</span>

<span class="hl ppc">#define OVSEC_KADM_STRUCT_VERSION_MASK	0x12345600</span>
<span class="hl ppc">#define OVSEC_KADM_STRUCT_VERSION_1	(OVSEC_KADM_STRUCT_VERSION_MASK|0x01)</span>
<span class="hl ppc">#define OVSEC_KADM_STRUCT_VERSION	OVSEC_KADM_STRUCT_VERSION_1</span>

<span class="hl ppc">#define OVSEC_KADM_API_VERSION_MASK	0x12345700</span>
<span class="hl ppc">#define OVSEC_KADM_API_VERSION_1	(OVSEC_KADM_API_VERSION_MASK|0x01)</span>


<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _ovsec_kadm_principal_ent_t <span class="hl opt">{</span>
	krb5_principal	principal<span class="hl opt">;</span>
	krb5_timestamp	princ_expire_time<span class="hl opt">;</span>
	krb5_timestamp	last_pwd_change<span class="hl opt">;</span>
	krb5_timestamp	pw_expiration<span class="hl opt">;</span>
	krb5_deltat	max_life<span class="hl opt">;</span>
	krb5_principal	mod_name<span class="hl opt">;</span>
	krb5_timestamp	mod_date<span class="hl opt">;</span>
	krb5_flags	attributes<span class="hl opt">;</span>
	krb5_kvno	kvno<span class="hl opt">;</span>
	krb5_kvno	mkvno<span class="hl opt">;</span>
	<span class="hl kwb">char</span>		<span class="hl opt">*</span>policy<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		aux_attributes<span class="hl opt">;</span>
<span class="hl opt">}</span> ovsec_kadm_principal_ent_rec<span class="hl opt">, *</span>ovsec_kadm_principal_ent_t<span class="hl opt">;</span>

<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> _ovsec_kadm_policy_ent_t <span class="hl opt">{</span>
	<span class="hl kwb">char</span>		<span class="hl opt">*</span>policy<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_min_life<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_max_life<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_min_length<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_min_classes<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		pw_history_num<span class="hl opt">;</span>
	<span class="hl kwb">long</span>		policy_refcnt<span class="hl opt">;</span>
<span class="hl opt">}</span> ovsec_kadm_policy_ent_rec<span class="hl opt">, *</span>ovsec_kadm_policy_ent_t<span class="hl opt">;</span>

<span class="hl com">/*</span>
<span class="hl com"> * functions</span>
<span class="hl com"> */</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_init</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>client_name<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">,</span>
				    <span class="hl kwb">char</span> <span class="hl opt">*</span>service_name<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">*</span>realm<span class="hl opt">,</span>
				    krb5_ui_4 struct_version<span class="hl opt">,</span>
				    krb5_ui_4 api_version<span class="hl opt">,</span>
				    <span class="hl kwb">void</span> <span class="hl opt">**</span>server_handle<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_init_with_password</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>client_name<span class="hl opt">,</span>
						  <span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">,</span> 
						  <span class="hl kwb">char</span> <span class="hl opt">*</span>service_name<span class="hl opt">,</span>
						  <span class="hl kwb">char</span> <span class="hl opt">*</span>realm<span class="hl opt">,</span> 
						  krb5_ui_4 struct_version<span class="hl opt">,</span>
						  krb5_ui_4 api_version<span class="hl opt">,</span>
						  <span class="hl kwb">void</span> <span class="hl opt">**</span>server_handle<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_init_with_skey</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>client_name<span class="hl opt">,</span>
					      <span class="hl kwb">char</span> <span class="hl opt">*</span>keytab<span class="hl opt">,</span>
					      <span class="hl kwb">char</span> <span class="hl opt">*</span>service_name<span class="hl opt">,</span>
					      <span class="hl kwb">char</span> <span class="hl opt">*</span>realm<span class="hl opt">,</span>
					      krb5_ui_4 struct_version<span class="hl opt">,</span>
					      krb5_ui_4 api_version<span class="hl opt">,</span>
					      <span class="hl kwb">void</span> <span class="hl opt">**</span>server_handle<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_flush</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_destroy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_create_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						ovsec_kadm_principal_ent_t ent<span class="hl opt">,</span>
						<span class="hl kwb">long</span> mask<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_delete_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						krb5_principal principal<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_modify_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						ovsec_kadm_principal_ent_t ent<span class="hl opt">,</span>
						<span class="hl kwb">long</span> mask<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_rename_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						krb5_principal<span class="hl opt">,</span>krb5_principal<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_get_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					     krb5_principal principal<span class="hl opt">,</span>
					     ovsec_kadm_principal_ent_t <span class="hl opt">*</span>ent<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_chpass_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						krb5_principal principal<span class="hl opt">,</span>
						<span class="hl kwb">char</span> <span class="hl opt">*</span>pass<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_randkey_principal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						 krb5_principal principal<span class="hl opt">,</span>
						 krb5_keyblock <span class="hl opt">**</span>keyblock<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_create_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					     ovsec_kadm_policy_ent_t ent<span class="hl opt">,</span>
					     <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
<span class="hl com">/*</span>
<span class="hl com"> * ovsec_kadm_create_policy_internal is not part of the supported,</span>
<span class="hl com"> * exposed API.  It is available only in the server library, and you</span>
<span class="hl com"> * shouldn&#39;t use it unless you know why it&#39;s there and how it&#39;s</span>
<span class="hl com"> * different from ovsec_kadm_create_policy.</span>
<span class="hl com"> */</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_create_policy_internal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						      ovsec_kadm_policy_ent_t
						      entry<span class="hl opt">,</span> <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_delete_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					     ovsec_kadm_policy_t policy<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_modify_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					     ovsec_kadm_policy_ent_t ent<span class="hl opt">,</span>
					     <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
<span class="hl com">/*</span>
<span class="hl com"> * ovsec_kadm_modify_policy_internal is not part of the supported,</span>
<span class="hl com"> * exposed API.  It is available only in the server library, and you</span>
<span class="hl com"> * shouldn&#39;t use it unless you know why it&#39;s there and how it&#39;s</span>
<span class="hl com"> * different from ovsec_kadm_modify_policy.</span>
<span class="hl com"> */</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_modify_policy_internal</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						      ovsec_kadm_policy_ent_t
						      entry<span class="hl opt">,</span> <span class="hl kwb">long</span> mask<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_get_policy</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					  ovsec_kadm_policy_t policy<span class="hl opt">,</span>
					  ovsec_kadm_policy_ent_t <span class="hl opt">*</span>ent<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_get_privs</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					 <span class="hl kwb">long</span> <span class="hl opt">*</span>privs<span class="hl opt">);</span>

ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_chpass_principal_util</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						     krb5_principal princ<span class="hl opt">,</span>
						     <span class="hl kwb">char</span> <span class="hl opt">*</span>new_pw<span class="hl opt">,</span> 
						     <span class="hl kwb">char</span> <span class="hl opt">**</span>ret_pw<span class="hl opt">,</span>
						     <span class="hl kwb">char</span> <span class="hl opt">*</span>msg_ret<span class="hl opt">);</span>

ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_free_principal_ent</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
						  ovsec_kadm_principal_ent_t
						  ent<span class="hl opt">);</span>
ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_free_policy_ent</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					       ovsec_kadm_policy_ent_t ent<span class="hl opt">);</span>

ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_get_principals</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					      <span class="hl kwb">char</span> <span class="hl opt">*</span>exp<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">***</span>princs<span class="hl opt">,</span>
					      <span class="hl kwb">int</span> <span class="hl opt">*</span>count<span class="hl opt">);</span>

ovsec_kadm_ret_t    <span class="hl kwd">ovsec_kadm_get_policies</span><span class="hl opt">(</span><span class="hl kwb">void</span> <span class="hl opt">*</span>server_handle<span class="hl opt">,</span>
					    <span class="hl kwb">char</span> <span class="hl opt">*</span>exp<span class="hl opt">,</span> <span class="hl kwb">char</span> <span class="hl opt">***</span>pols<span class="hl opt">,</span>
					    <span class="hl kwb">int</span> <span class="hl opt">*</span>count<span class="hl opt">);</span>

<span class="hl ppc">#define OVSEC_KADM_FAILURE KADM5_FAILURE</span>
<span class="hl ppc">#define OVSEC_KADM_AUTH_GET KADM5_AUTH_GET</span>
<span class="hl ppc">#define OVSEC_KADM_AUTH_ADD KADM5_AUTH_ADD</span>
<span class="hl ppc">#define OVSEC_KADM_AUTH_MODIFY KADM5_AUTH_MODIFY</span>
<span class="hl ppc">#define OVSEC_KADM_AUTH_DELETE KADM5_AUTH_DELETE</span>
<span class="hl ppc">#define OVSEC_KADM_AUTH_INSUFFICIENT KADM5_AUTH_INSUFFICIENT</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_DB KADM5_BAD_DB</span>
<span class="hl ppc">#define OVSEC_KADM_DUP KADM5_DUP</span>
<span class="hl ppc">#define OVSEC_KADM_RPC_ERROR KADM5_RPC_ERROR</span>
<span class="hl ppc">#define OVSEC_KADM_NO_SRV KADM5_NO_SRV</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_HIST_KEY KADM5_BAD_HIST_KEY</span>
<span class="hl ppc">#define OVSEC_KADM_NOT_INIT KADM5_NOT_INIT</span>
<span class="hl ppc">#define OVSEC_KADM_UNK_PRINC KADM5_UNK_PRINC</span>
<span class="hl ppc">#define OVSEC_KADM_UNK_POLICY KADM5_UNK_POLICY</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_MASK KADM5_BAD_MASK</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_CLASS KADM5_BAD_CLASS</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_LENGTH KADM5_BAD_LENGTH</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_POLICY KADM5_BAD_POLICY</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_PRINCIPAL KADM5_BAD_PRINCIPAL</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_AUX_ATTR KADM5_BAD_AUX_ATTR</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_HISTORY KADM5_BAD_HISTORY</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_MIN_PASS_LIFE KADM5_BAD_MIN_PASS_LIFE</span>
<span class="hl ppc">#define OVSEC_KADM_PASS_Q_TOOSHORT KADM5_PASS_Q_TOOSHORT</span>
<span class="hl ppc">#define OVSEC_KADM_PASS_Q_CLASS KADM5_PASS_Q_CLASS</span>
<span class="hl ppc">#define OVSEC_KADM_PASS_Q_DICT KADM5_PASS_Q_DICT</span>
<span class="hl ppc">#define OVSEC_KADM_PASS_REUSE KADM5_PASS_REUSE</span>
<span class="hl ppc">#define OVSEC_KADM_PASS_TOOSOON KADM5_PASS_TOOSOON</span>
<span class="hl ppc">#define OVSEC_KADM_POLICY_REF KADM5_POLICY_REF</span>
<span class="hl ppc">#define OVSEC_KADM_INIT KADM5_INIT</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_PASSWORD KADM5_BAD_PASSWORD</span>
<span class="hl ppc">#define OVSEC_KADM_PROTECT_PRINCIPAL KADM5_PROTECT_PRINCIPAL</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_SERVER_HANDLE KADM5_BAD_SERVER_HANDLE</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_STRUCT_VERSION KADM5_BAD_STRUCT_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_OLD_STRUCT_VERSION KADM5_OLD_STRUCT_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_NEW_STRUCT_VERSION KADM5_NEW_STRUCT_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_BAD_API_VERSION KADM5_BAD_API_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_OLD_LIB_API_VERSION KADM5_OLD_LIB_API_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_OLD_SERVER_API_VERSION KADM5_OLD_SERVER_API_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_NEW_LIB_API_VERSION KADM5_NEW_LIB_API_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_NEW_SERVER_API_VERSION KADM5_NEW_SERVER_API_VERSION</span>
<span class="hl ppc">#define OVSEC_KADM_SECURE_PRINC_MISSING KADM5_SECURE_PRINC_MISSING</span>
<span class="hl ppc">#define OVSEC_KADM_NO_RENAME_SALT KADM5_NO_RENAME_SALT</span>

<span class="hl ppc">#endif</span> <span class="hl com">/* USE_KADM5_API_VERSION == 1 */</span><span class="hl ppc"></span>

<span class="hl ppc">#endif</span> <span class="hl com">/* __KADM5_ADMIN_H__ */</span><span class="hl ppc"></span>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit </a> (<a href='https://git-scm.com/'>git 2.34.1</a>) at 2026-04-04 11:56:42 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
