]>
Commit | Line | Data |
---|---|---|
3d8d4b36 | 1 | /* |
2 | * $Source$ | |
3 | * $Author$ | |
4 | * $Header$ | |
5 | * | |
6 | * Copyright 1988 by the Massachusetts Institute of Technology. | |
7 | * | |
8 | * For copying and distribution information, please see the file | |
9 | * <mit-copyright.h>. | |
10 | * | |
11 | * Definitions for Kerberos administration server & client | |
12 | */ | |
13 | ||
14 | #ifndef KADM_DEFS | |
15 | #define KADM_DEFS | |
16 | ||
17 | #include <mit-copyright.h> | |
18 | /* | |
19 | * kadm.h | |
20 | * Header file for the fourth attempt at an admin server | |
21 | * Doug Church, December 28, 1989, MIT Project Athena | |
22 | */ | |
23 | ||
24 | /* for those broken Unixes without this defined... should be in sys/param.h */ | |
25 | #ifndef MAXHOSTNAMELEN | |
26 | #define MAXHOSTNAMELEN 64 | |
27 | #endif | |
28 | ||
29 | #include <sys/types.h> | |
30 | #include <netinet/in.h> | |
31 | #include <krb.h> | |
32 | #include <des.h> | |
33 | ||
34 | /* The global structures for the client and server */ | |
35 | typedef struct { | |
36 | struct sockaddr_in admin_addr; | |
37 | struct sockaddr_in my_addr; | |
38 | int my_addr_len; | |
39 | int admin_fd; /* file descriptor for link to admin server */ | |
40 | char sname[ANAME_SZ]; /* the service name */ | |
41 | char sinst[INST_SZ]; /* the services instance */ | |
42 | char krbrlm[REALM_SZ]; | |
43 | } Kadm_Client; | |
44 | ||
45 | typedef struct { /* status of the server, i.e the parameters */ | |
46 | int inter; /* Space for command line flags */ | |
47 | char *sysfile; /* filename of server */ | |
48 | } admin_params; /* Well... it's the admin's parameters */ | |
49 | ||
50 | /* Largest password length to be supported */ | |
51 | #define MAX_KPW_LEN 128 | |
52 | ||
53 | /* Largest packet the admin server will ever allow itself to return */ | |
54 | #define KADM_RET_MAX 2048 | |
55 | ||
56 | /* That's right, versions are 8 byte strings */ | |
57 | #define KADM_VERSTR "KADM0.0A" | |
58 | #define KADM_ULOSE "KYOULOSE" /* sent back when server can't | |
59 | decrypt client's msg */ | |
60 | #define KADM_VERSIZE strlen(KADM_VERSTR) | |
61 | ||
62 | /* the lookups for the server instances */ | |
63 | #define PWSERV_NAME "changepw" | |
64 | #define KADM_SNAME "kerberos_master" | |
65 | #define KADM_SINST "kerberos" | |
66 | ||
67 | /* Attributes fields constants and macros */ | |
68 | #define ALLOC 2 | |
69 | #define RESERVED 3 | |
70 | #define DEALLOC 4 | |
71 | #define DEACTIVATED 5 | |
72 | #define ACTIVE 6 | |
73 | ||
74 | /* Kadm_vals structure for passing db fields into the server routines */ | |
75 | #define FLDSZ 4 | |
76 | ||
77 | typedef struct { | |
78 | u_char fields[FLDSZ]; /* The active fields in this struct */ | |
79 | char name[ANAME_SZ]; | |
80 | char instance[INST_SZ]; | |
81 | unsigned long key_low; | |
82 | unsigned long key_high; | |
83 | unsigned long exp_date; | |
84 | unsigned short attributes; | |
85 | unsigned char max_life; | |
86 | } Kadm_vals; /* The basic values structure in Kadm */ | |
87 | ||
88 | /* Kadm_vals structure for passing db fields into the server routines */ | |
89 | #define FLDSZ 4 | |
90 | ||
91 | /* Need to define fields types here */ | |
92 | #define KADM_NAME 31 | |
93 | #define KADM_INST 30 | |
94 | #define KADM_EXPDATE 29 | |
95 | #define KADM_ATTR 28 | |
96 | #define KADM_MAXLIFE 27 | |
97 | #define KADM_DESKEY 26 | |
98 | ||
99 | /* To set a field entry f in a fields structure d */ | |
100 | #define SET_FIELD(f,d) (d[3-(f/8)]|=(1<<(f%8))) | |
101 | ||
102 | /* To set a field entry f in a fields structure d */ | |
103 | #define CLEAR_FIELD(f,d) (d[3-(f/8)]&=(~(1<<(f%8)))) | |
104 | ||
105 | /* Is field f in fields structure d */ | |
106 | #define IS_FIELD(f,d) (d[3-(f/8)]&(1<<(f%8))) | |
107 | ||
108 | /* Various return codes */ | |
109 | #define KADM_SUCCESS 0 | |
110 | ||
111 | #define WILDCARD_STR "*" | |
112 | ||
113 | enum acl_types { | |
114 | ADDACL, | |
115 | GETACL, | |
116 | MODACL | |
117 | }; | |
118 | ||
119 | /* Various opcodes for the admin server's functions */ | |
120 | #define CHANGE_PW 2 | |
121 | #define ADD_ENT 3 | |
122 | #define MOD_ENT 4 | |
123 | #define GET_ENT 5 | |
124 | ||
125 | extern long kdb_get_master_key(); /* XXX should be in krb_db.h */ | |
126 | extern long kdb_verify_master_key(); /* XXX ditto */ | |
127 | ||
128 | extern long krb_mk_priv(), krb_rd_priv(); /* XXX should be in krb.h */ | |
129 | extern void krb_set_tkt_string(); /* XXX ditto */ | |
130 | ||
131 | extern unsigned long quad_cksum(); /* XXX should be in des.h */ | |
132 | ||
133 | /* XXX This doesn't belong here!!! */ | |
134 | char *malloc(), *realloc(); | |
135 | #ifdef POSIX | |
136 | typedef void sigtype; | |
137 | #else | |
138 | typedef int sigtype; | |
139 | #endif | |
140 | ||
141 | #endif KADM_DEFS |