6 #include <zephyr/zephyr.h>
23 #define CLOCK_SKEW 300 /* max time to cache packet ids */
26 #ifndef REALM_SZ /* XXX */
27 #include <arpa/nameser.h>
28 #define REALM_SZ NS_MAXDNAME
30 #define MAX_PRINCIPAL_SIZE 1024
32 #define SERVER_SVC_FALLBACK htons((unsigned short) 2103)
33 #define HM_SVC_FALLBACK htons((unsigned short) 2104)
34 #define HM_SRV_SVC_FALLBACK htons((unsigned short) 2105)
36 #define ZAUTH_UNSET (-3) /* Internal to client library. */
37 #define Z_MAXFRAGS 500 /* Max number of packet fragments */
38 #define Z_MAXNOTICESIZE 400000 /* Max size of incoming notice */
39 #define Z_MAXQUEUESIZE 1500000 /* Max size of input queue notices */
40 #define Z_FRAGFUDGE 13 /* Room to for multinotice field */
41 #define Z_NOTICETIMELIMIT 30 /* Time to wait for fragments */
42 #define Z_INITFILTERSIZE 30 /* Starting size of uid filter */
44 #define Z_AUTHMODE_NONE 0 /* no authentication */
45 #define Z_AUTHMODE_KRB4 1 /* authenticate using Kerberos V4 */
46 #define Z_AUTHMODE_KRB5 2 /* authenticate using Kerberos V5 */
48 #define Z_KEYUSAGE_CLT_CKSUM 1027 /* client->server notice checksum */
49 #define Z_KEYUSAGE_SRV_CKSUM 1029 /* server->client notice checksum */
58 struct _Z_InputQ *next;
59 struct _Z_InputQ *prev;
61 unsigned ZEPHYR_INT32 timep;
65 struct sockaddr_in from;
66 struct _Z_Hole *holelist;
75 extern struct _Z_InputQ *__Q_Head, *__Q_Tail;
77 extern int __Zephyr_open; /* 0 if FD opened, 1 otherwise */
78 extern int __HM_set; /* 0 if dest addr set, 1 otherwise */
79 extern int __Zephyr_server; /* 0 if normal client, 1 if server or zhm */
82 extern krb5_context Z_krb5_ctx;
83 Code_t Z_krb5_lookup_cksumtype(krb5_enctype, krb5_cksumtype *);
86 extern ZLocations_t *__locate_list;
87 extern int __locate_num;
88 extern int __locate_next;
90 extern ZSubscription_t *__subscriptions_list;
91 extern int __subscriptions_num;
92 extern int __subscriptions_next;
94 extern int __Zephyr_port; /* Port number */
95 extern struct in_addr __My_addr;
96 extern int __Zephyr_fd;
97 extern int __Q_CompleteLength;
98 extern struct sockaddr_in __HM_addr;
99 extern char __Zephyr_realm[];
101 typedef Code_t (*Z_SendProc) (ZNotice_t *, char *, int, int);
103 struct _Z_InputQ *Z_GetFirstComplete (void);
104 struct _Z_InputQ *Z_GetNextComplete (struct _Z_InputQ *);
105 Code_t Z_XmitFragment (ZNotice_t*, char *,int,int);
106 void Z_RemQueue (struct _Z_InputQ *);
107 Code_t Z_AddNoticeToEntry (struct _Z_InputQ*, ZNotice_t*, int);
108 Code_t Z_FormatAuthHeader (ZNotice_t *, char *, int, int *, Z_AuthProc);
109 Code_t Z_FormatHeader (ZNotice_t *, char *, int, int *, Z_AuthProc);
110 Code_t Z_FormatRawHeader (ZNotice_t *, char*, int,
111 int*, char **, char **);
112 Code_t Z_ReadEnqueue (void);
113 Code_t Z_ReadWait (void);
114 Code_t Z_SendLocation (char*, char*, Z_AuthProc, char*);
115 Code_t Z_SendFragmentedNotice (ZNotice_t *notice, int len,
116 Z_AuthProc cert_func,
117 Z_SendProc send_func);
118 Code_t Z_WaitForComplete (void);
119 Code_t Z_WaitForNotice (ZNotice_t *notice,
120 int (*pred)(ZNotice_t *, void *), void *arg,
124 Code_t Z_NewFormatHeader (ZNotice_t *, char *, int, int *, Z_AuthProc);
125 Code_t Z_NewFormatAuthHeader (ZNotice_t *, char *, int, int *, Z_AuthProc);
126 Code_t Z_NewFormatRawHeader (ZNotice_t *, char *, int, int *, char **,
127 int *, char **, char **);
128 Code_t Z_AsciiFormatRawHeader (ZNotice_t *, char *, int, int *, char **,
129 int *, char **, char **);
131 void Z_gettimeofday(struct _ZTimeval *ztv, struct timezone *tz);
134 int ZGetCreds(krb5_creds **creds_out);
135 int ZGetCredsRealm(krb5_creds **creds_out, char *realm);
136 Code_t Z_Checksum(krb5_data *cksumbuf, krb5_keyblock *keyblock,
137 krb5_cksumtype cksumtype, char **asn1_data,
138 unsigned int *asn1_len);
139 Code_t Z_ExtractEncCksum(krb5_keyblock *keyblock, krb5_enctype *enctype,
140 krb5_cksumtype *cksumtype);
141 int Z_krb5_verify_cksum(krb5_keyblock *keyblock, krb5_data *cksumbuf,
142 krb5_cksumtype cksumtype, unsigned char *asn1_data,
144 Code_t Z_InsertZcodeChecksum(krb5_keyblock *keyblock, ZNotice_t *notice,
146 char *cksum_start, int cksum_len,
147 char *cstart, char *cend, int buffer_len,
149 unsigned long z_quad_cksum(const unsigned char *, u_int32_t *, long,
150 int, unsigned char *);
153 #ifdef HAVE_KRB5_CREDS_KEYBLOCK_ENCTYPE
154 #define Z_keydata(keyblock) ((keyblock)->contents)
155 #define Z_keylen(keyblock) ((keyblock)->length)
156 #define Z_credskey(creds) (&(creds)->keyblock)
157 #define Z_enctype(keyblock) ((keyblock)->enctype)
159 #define Z_keydata(keyblock) ((keyblock)->keyvalue.data)
160 #define Z_keylen(keyblock) ((keyblock)->keyvalue.length)
161 #define Z_credskey(creds) (&(creds)->session)
162 #define Z_enctype(keyblock) ((keyblock)->keytype)
165 #ifdef HAVE_KRB5_TICKET_ENC_PART2
166 #define Z_tktprincp(tkt) ((tkt)->enc_part2 != 0)
167 #define Z_tktprinc(tkt) ((tkt)->enc_part2->client)
169 #define Z_tktprincp(tkt) ((tkt)->client != 0)
170 #define Z_tktprinc(tkt) ((tkt)->client)
173 #endif /* __INTERNAL_H__ */