1 #ifndef __INTERNAL_H__
2 #define __INTERNAL_H__
3 
4 #include <sysdep.h>
5 
6 #ifdef LIBZEPHYR_EXT
7 #include <zephyr/zephyr.h>
8 #else
9 #include <zephyr_internal.h>
10 #endif
11 
12 #ifndef WIN32
13 #include <netdb.h>
14 #endif
15 
16 
17 
18 #ifdef WIN32
19 
20 #ifndef MAXHOSTNAMELEN
21 #define MAXHOSTNAMELEN 512
22 #endif
23 
24 #define ETIMEDOUT WSAETIMEDOUT
25 #define EADDRINUSE WSAEADDRINUSE
26 #else /* !WIN32 */
27 
28 #ifndef MAXHOSTNAMELEN
29 #define MAXHOSTNAMELEN 4096
30 #endif
31 
32 #endif
33 
34 #ifdef ZEPHYR_USES_HESIOD
35 #include <hesiod.h>
36 #endif
37 
38 #ifndef ZEPHYR_USES_KERBEROS
39 #define REALM_SZ	MAXHOSTNAMELEN
40 #define INST_SZ		0		/* no instances w/o Kerberos */
41 #define ANAME_SZ	9		/* size of a username + null */
42 #define CLOCK_SKEW	300		/* max time to cache packet ids */
43 #endif
44 
45 #define SERVER_SVC_FALLBACK	htons((unsigned short) 2103)
46 #define HM_SVC_FALLBACK		htons((unsigned short) 2104)
47 #define HM_SRV_SVC_FALLBACK	htons((unsigned short) 2105)
48 
49 #define ZAUTH_CKSUM_FAILED	(-2) /* Used only by server. */
50 #define ZAUTH_UNSET		(-3) /* Internal to client library. */
51 #define Z_MAXFRAGS		500	/* Max number of packet fragments */
52 #define Z_MAXNOTICESIZE		400000	/* Max size of incoming notice */
53 #define Z_MAXQUEUESIZE		1500000	/* Max size of input queue notices */
54 #define Z_FRAGFUDGE		13	/* Room to for multinotice field */
55 #define Z_NOTICETIMELIMIT	30	/* Time to wait for fragments */
56 #define Z_INITFILTERSIZE	30	/* Starting size of uid filter */
57 
58 struct _Z_Hole {
59     struct _Z_Hole	*next;
60     int			first;
61     int			last;
62 };
63 
64 struct _Z_InputQ {
65     struct _Z_InputQ	*next;
66     struct _Z_InputQ	*prev;
67     ZNotice_Kind_t	kind;
68     unsigned ZEPHYR_INT32 timep;
69     int			packet_len;
70     char		*packet;
71     int			complete;
72     struct sockaddr_in	from;
73     struct _Z_Hole	*holelist;
74     ZUnique_Id_t	uid;
75     int			auth;
76     int			header_len;
77     char		*header;
78     int			msg_len;
79     char		*msg;
80 };
81 
82 extern struct _Z_InputQ *__Q_Head, *__Q_Tail;
83 
84 extern int __Zephyr_open;	/* 0 if FD opened, 1 otherwise */
85 extern int __HM_set;		/* 0 if dest addr set, 1 otherwise */
86 extern int __Zephyr_server;	/* 0 if normal client, 1 if server or zhm */
87 
88 extern ZLocations_t *__locate_list;
89 extern int __locate_num;
90 extern int __locate_next;
91 
92 extern ZSubscription_t *__subscriptions_list;
93 extern int __subscriptions_num;
94 extern int __subscriptions_next;
95 
96 extern int __Zephyr_port;		/* Port number */
97 extern struct in_addr __My_addr;
98 
99 typedef Code_t (*Z_SendProc) __P((ZNotice_t *, char *, int, int));
100 
101 struct _Z_InputQ *Z_GetFirstComplete __P((void));
102 struct _Z_InputQ *Z_GetNextComplete __P((struct _Z_InputQ *));
103 Code_t Z_XmitFragment __P((ZNotice_t*, char *,int,int));
104 void Z_RemQueue __P((struct _Z_InputQ *));
105 Code_t Z_AddNoticeToEntry __P((struct _Z_InputQ*, ZNotice_t*, int));
106 Code_t Z_FormatAuthHeader __P((ZNotice_t *, char *, int, int *, Z_AuthProc));
107 Code_t Z_FormatHeader __P((ZNotice_t *, char *, int, int *, Z_AuthProc));
108 Code_t Z_FormatRawHeader __P((ZNotice_t *, char*, gsize,
109 			      int*, char **, char **));
110 Code_t Z_ReadEnqueue __P((void));
111 Code_t Z_ReadWait __P((void));
112 Code_t Z_SendLocation __P((char*, char*, Z_AuthProc, char*));
113 Code_t Z_SendFragmentedNotice __P((ZNotice_t *notice, int len,
114 				   Z_AuthProc cert_func,
115 				   Z_SendProc send_func));
116 Code_t Z_WaitForComplete __P((void));
117 Code_t Z_WaitForNotice __P((ZNotice_t *notice,
118 			    int (*pred) __P((ZNotice_t *, void *)), void *arg,
119 			    int timeout));
120 
121 #endif /* __INTERNAL_H__ */
122 
123