1/*
2 * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
3 *
4 *	Openvision retains the copyright to derivative works of
5 *	this source code.  Do *NOT* create a derivative of this
6 *	source code before consulting with your legal department.
7 *	Do *NOT* integrate *ANY* of this source code into another
8 *	product before consulting with your legal department.
9 *
10 *	For further information, read the top-level Openvision
11 *	copyright which is contained in the top-level MIT Kerberos
12 *	copyright.
13 *
14 * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
15 *
16 */
17
18#ifndef __KADM_RPC_H__
19#define __KADM_RPC_H__
20
21#include <rpc/types.h>
22
23#include	<kadm5/admin.h>
24#include	<krb5.h>
25
26struct cprinc_arg {
27	krb5_ui_4 api_version;
28	kadm5_principal_ent_rec rec;
29	long mask;
30	char *passwd;
31};
32typedef struct cprinc_arg cprinc_arg;
33
34struct cprinc3_arg {
35	krb5_ui_4 api_version;
36	kadm5_principal_ent_rec rec;
37	long mask;
38	int n_ks_tuple;
39	krb5_key_salt_tuple *ks_tuple;
40	char *passwd;
41};
42typedef struct cprinc3_arg cprinc3_arg;
43
44struct generic_ret {
45	krb5_ui_4 api_version;
46	kadm5_ret_t code;
47};
48typedef struct generic_ret generic_ret;
49
50struct dprinc_arg {
51	krb5_ui_4 api_version;
52	krb5_principal princ;
53};
54typedef struct dprinc_arg dprinc_arg;
55
56struct mprinc_arg {
57	krb5_ui_4 api_version;
58	kadm5_principal_ent_rec rec;
59	long mask;
60};
61typedef struct mprinc_arg mprinc_arg;
62
63struct rprinc_arg {
64	krb5_ui_4 api_version;
65	krb5_principal src;
66	krb5_principal dest;
67};
68typedef struct rprinc_arg rprinc_arg;
69
70struct gprincs_arg {
71        krb5_ui_4 api_version;
72	char *exp;
73};
74typedef struct gprincs_arg gprincs_arg;
75
76struct gprincs_ret {
77        krb5_ui_4 api_version;
78	kadm5_ret_t code;
79	char **princs;
80	int count;
81};
82typedef struct gprincs_ret gprincs_ret;
83
84struct chpass_arg {
85	krb5_ui_4 api_version;
86	krb5_principal princ;
87	char *pass;
88};
89typedef struct chpass_arg chpass_arg;
90
91struct chpass3_arg {
92	krb5_ui_4 api_version;
93	krb5_principal princ;
94	krb5_boolean keepold;
95	int n_ks_tuple;
96	krb5_key_salt_tuple *ks_tuple;
97	char *pass;
98};
99typedef struct chpass3_arg chpass3_arg;
100
101struct setv4key_arg {
102	krb5_ui_4 api_version;
103	krb5_principal princ;
104        krb5_keyblock *keyblock;
105};
106typedef struct setv4key_arg setv4key_arg;
107
108struct setkey_arg {
109	krb5_ui_4 api_version;
110	krb5_principal princ;
111        krb5_keyblock *keyblocks;
112        int n_keys;
113};
114typedef struct setkey_arg setkey_arg;
115
116struct setkey3_arg {
117	krb5_ui_4 api_version;
118	krb5_principal princ;
119	krb5_boolean keepold;
120	int n_ks_tuple;
121	krb5_key_salt_tuple *ks_tuple;
122        krb5_keyblock *keyblocks;
123        int n_keys;
124};
125typedef struct setkey3_arg setkey3_arg;
126
127struct chrand_arg {
128	krb5_ui_4 api_version;
129	krb5_principal princ;
130};
131typedef struct chrand_arg chrand_arg;
132
133struct chrand3_arg {
134	krb5_ui_4 api_version;
135	krb5_principal princ;
136	krb5_boolean keepold;
137	int n_ks_tuple;
138	krb5_key_salt_tuple *ks_tuple;
139};
140typedef struct chrand3_arg chrand3_arg;
141
142struct chrand_ret {
143	krb5_ui_4 api_version;
144	kadm5_ret_t code;
145	krb5_keyblock key;
146	krb5_keyblock *keys;
147	int n_keys;
148};
149typedef struct chrand_ret chrand_ret;
150
151struct gprinc_arg {
152	krb5_ui_4 api_version;
153	krb5_principal princ;
154	long mask;
155};
156typedef struct gprinc_arg gprinc_arg;
157
158struct gprinc_ret {
159	krb5_ui_4 api_version;
160	kadm5_ret_t code;
161	kadm5_principal_ent_rec rec;
162};
163typedef struct gprinc_ret gprinc_ret;
164
165struct cpol_arg {
166	krb5_ui_4 api_version;
167	kadm5_policy_ent_rec rec;
168	long mask;
169};
170typedef struct cpol_arg cpol_arg;
171
172struct dpol_arg {
173	krb5_ui_4 api_version;
174	char *name;
175};
176typedef struct dpol_arg dpol_arg;
177
178struct mpol_arg {
179	krb5_ui_4 api_version;
180	kadm5_policy_ent_rec rec;
181	long mask;
182};
183typedef struct mpol_arg mpol_arg;
184
185struct gpol_arg {
186	krb5_ui_4 api_version;
187	char *name;
188};
189typedef struct gpol_arg gpol_arg;
190
191struct gpol_ret {
192	krb5_ui_4 api_version;
193	kadm5_ret_t code;
194	kadm5_policy_ent_rec rec;
195};
196typedef struct gpol_ret gpol_ret;
197
198struct gpols_arg {
199        krb5_ui_4 api_version;
200	char *exp;
201};
202typedef struct gpols_arg gpols_arg;
203
204struct gpols_ret {
205        krb5_ui_4 api_version;
206	kadm5_ret_t code;
207	char **pols;
208	int count;
209};
210typedef struct gpols_ret gpols_ret;
211
212struct getprivs_ret {
213	krb5_ui_4 api_version;
214	kadm5_ret_t code;
215	long privs;
216};
217typedef struct getprivs_ret getprivs_ret;
218
219#define KADM 2112
220#define KADMVERS 2
221#define CREATE_PRINCIPAL 1
222extern  generic_ret * create_principal_2(cprinc_arg *, CLIENT *);
223extern  generic_ret * create_principal_2_svc(cprinc_arg *, struct svc_req *);
224#define DELETE_PRINCIPAL 2
225extern  generic_ret * delete_principal_2(dprinc_arg *, CLIENT *);
226extern  generic_ret * delete_principal_2_svc(dprinc_arg *, struct svc_req *);
227#define MODIFY_PRINCIPAL 3
228extern  generic_ret * modify_principal_2(mprinc_arg *, CLIENT *);
229extern  generic_ret * modify_principal_2_svc(mprinc_arg *, struct svc_req *);
230#define RENAME_PRINCIPAL 4
231extern  generic_ret * rename_principal_2(rprinc_arg *, CLIENT *);
232extern  generic_ret * rename_principal_2_svc(rprinc_arg *, struct svc_req *);
233#define GET_PRINCIPAL 5
234extern  gprinc_ret * get_principal_2(gprinc_arg *, CLIENT *);
235extern  gprinc_ret * get_principal_2_svc(gprinc_arg *, struct svc_req *);
236#define CHPASS_PRINCIPAL 6
237extern  generic_ret * chpass_principal_2(chpass_arg *, CLIENT *);
238extern  generic_ret * chpass_principal_2_svc(chpass_arg *, struct svc_req *);
239#define CHRAND_PRINCIPAL 7
240extern  chrand_ret * chrand_principal_2(chrand_arg *, CLIENT *);
241extern  chrand_ret * chrand_principal_2_svc(chrand_arg *, struct svc_req *);
242#define CREATE_POLICY 8
243extern  generic_ret * create_policy_2(cpol_arg *, CLIENT *);
244extern  generic_ret * create_policy_2_svc(cpol_arg *, struct svc_req *);
245#define DELETE_POLICY 9
246extern  generic_ret * delete_policy_2(dpol_arg *, CLIENT *);
247extern  generic_ret * delete_policy_2_svc(dpol_arg *, struct svc_req *);
248#define MODIFY_POLICY 10
249extern  generic_ret * modify_policy_2(mpol_arg *, CLIENT *);
250extern  generic_ret * modify_policy_2_svc(mpol_arg *, struct svc_req *);
251#define GET_POLICY 11
252extern  gpol_ret * get_policy_2(gpol_arg *, CLIENT *);
253extern  gpol_ret * get_policy_2_svc(gpol_arg *, struct svc_req *);
254#define GET_PRIVS 12
255extern  getprivs_ret * get_privs_2(void *, CLIENT *);
256extern  getprivs_ret * get_privs_2_svc(krb5_ui_4 *, struct svc_req *);
257#define INIT 13
258extern  generic_ret * init_2(void *, CLIENT *);
259extern  generic_ret * init_2_svc(krb5_ui_4 *, struct svc_req *);
260#define GET_PRINCS 14
261extern  gprincs_ret * get_princs_2(gprincs_arg *, CLIENT *);
262extern  gprincs_ret * get_princs_2_svc(gprincs_arg *, struct svc_req *);
263#define GET_POLS 15
264extern  gpols_ret * get_pols_2(gpols_arg *, CLIENT *);
265extern  gpols_ret * get_pols_2_svc(gpols_arg *, struct svc_req *);
266#define SETKEY_PRINCIPAL 16
267extern  generic_ret * setkey_principal_2(setkey_arg *, CLIENT *);
268extern  generic_ret * setkey_principal_2_svc(setkey_arg *, struct svc_req *);
269#define SETV4KEY_PRINCIPAL 17
270extern  generic_ret * setv4key_principal_2(setv4key_arg *, CLIENT *);
271extern  generic_ret * setv4key_principal_2_svc(setv4key_arg *, struct svc_req *);
272#define CREATE_PRINCIPAL3 18
273extern  generic_ret * create_principal3_2(cprinc3_arg *, CLIENT *);
274extern  generic_ret * create_principal3_2_svc(cprinc3_arg *, struct svc_req *);
275#define CHPASS_PRINCIPAL3 19
276extern  generic_ret * chpass_principal3_2(chpass3_arg *, CLIENT *);
277extern  generic_ret * chpass_principal3_2_svc(chpass3_arg *, struct svc_req *);
278#define CHRAND_PRINCIPAL3 20
279extern  chrand_ret * chrand_principal3_2(chrand3_arg *, CLIENT *);
280extern  chrand_ret * chrand_principal3_2_svc(chrand3_arg *, struct svc_req *);
281#define SETKEY_PRINCIPAL3 21
282extern  generic_ret * setkey_principal3_2(setkey3_arg *, CLIENT *);
283extern  generic_ret * setkey_principal3_2_svc(setkey3_arg *, struct svc_req *);
284
285extern bool_t xdr_cprinc_arg ();
286extern bool_t xdr_cprinc3_arg ();
287extern bool_t xdr_generic_ret ();
288extern bool_t xdr_dprinc_arg ();
289extern bool_t xdr_mprinc_arg ();
290extern bool_t xdr_rprinc_arg ();
291extern bool_t xdr_gprincs_arg ();
292extern bool_t xdr_gprincs_ret ();
293extern bool_t xdr_chpass_arg ();
294extern bool_t xdr_chpass3_arg ();
295extern bool_t xdr_setv4key_arg ();
296extern bool_t xdr_setkey_arg ();
297extern bool_t xdr_setkey3_arg ();
298extern bool_t xdr_chrand_arg ();
299extern bool_t xdr_chrand3_arg ();
300extern bool_t xdr_chrand_ret ();
301extern bool_t xdr_gprinc_arg ();
302extern bool_t xdr_gprinc_ret ();
303extern bool_t xdr_kadm5_ret_t ();
304extern bool_t xdr_kadm5_principal_ent_rec ();
305extern bool_t xdr_kadm5_policy_ent_rec ();
306extern bool_t	xdr_krb5_keyblock ();
307extern bool_t	xdr_krb5_principal ();
308extern bool_t	xdr_krb5_enctype ();
309extern bool_t	xdr_krb5_octet ();
310extern bool_t	xdr_krb5_int32 ();
311extern bool_t	xdr_u_int32 ();
312extern bool_t xdr_cpol_arg ();
313extern bool_t xdr_dpol_arg ();
314extern bool_t xdr_mpol_arg ();
315extern bool_t xdr_gpol_arg ();
316extern bool_t xdr_gpol_ret ();
317extern bool_t xdr_gpols_arg ();
318extern bool_t xdr_gpols_ret ();
319extern bool_t xdr_getprivs_ret ();
320
321
322#endif /* __KADM_RPC_H__ */
323