]> asedeno.scripts.mit.edu Git - 1ts-debian.git/blob - zhm/zhm.h
a09b581bd31311eca2498d4879c4c6a73088f8e7
[1ts-debian.git] / zhm / zhm.h
1 #ifndef __HM_H__
2 #define __HM_H__
3 /* This file is part of the Project Athena Zephyr Notification System.
4  * It contains the hostmanager header file.
5  *
6  *      Created by:     David C. Jedlinsky
7  *
8  *      $Id: zhm.h,v 1.22 1999/01/22 23:20:03 ghudson Exp $
9  *      $Zephyr: /mit/zephyr/src.rw/zhm/RCS/zhm.h,v 1.13 90/10/19 07:11:48 raeburn Exp $
10  *
11  *      Copyright (c) 1987, 1991 by the Massachusetts Institute of Technology.
12  *      For copying and distribution information, see the file
13  *      "mit-copyright.h". 
14  */
15
16 #include <zephyr/mit-copyright.h>
17 #include <internal.h>
18 #include <sys/socket.h>
19 #include <sys/time.h>
20 #include "timer.h"
21
22 /* These macros are for insertion into and deletion from a singly-linked list
23  * with back pointers to the previous element's next pointer.  In order to
24  * make these macros act like expressions, they use the comma operator for
25  * sequenced evaluations of assignment, and "a && b" for "evaluate assignment
26  * b if expression a is true". */
27 #define LIST_INSERT(head, elem) \
28         ((elem)->next = *(head), \
29          (*head) && ((*(head))->prev_p = &(elem)->next), \
30          (*head) = (elem), (elem)->prev_p = (head))
31 #define LIST_DELETE(elem) \
32         (*(elem)->prev_p = (elem)->next, \
33          (elem)->next && ((elem)->next->prev_p = (elem)->prev_p))
34
35 #ifdef DEBUG
36 #define DPR(a) fprintf(stderr, a); fflush(stderr)
37 #define DPR2(a,b) fprintf(stderr, a, b); fflush(stderr)
38 #define Zperr(e) fprintf(stderr, "Error = %d\n", e)
39 #else
40 #define DPR(a)
41 #define DPR2(a,b)
42 #define Zperr(e)
43 #endif
44
45 #define ever (;;)
46
47 #define SERV_TIMEOUT 5
48 #define BOOTING 1
49 #define NOTICES 2
50
51 /* main.c */
52 void die_gracefully __P((void));
53
54 /* zhm_client.c */
55 void transmission_tower __P((ZNotice_t *, char *, int));
56 Code_t send_outgoing __P((ZNotice_t *));
57
58 /* queue.c */
59 void init_queue __P((void));
60 Code_t add_notice_to_queue __P((ZNotice_t *, char *, struct sockaddr_in *,
61                                 int));
62 Code_t remove_notice_from_queue __P((ZNotice_t *, ZNotice_Kind_t *,
63                                      struct sockaddr_in *));
64 void retransmit_queue __P((struct sockaddr_in *));
65 void disable_queue_retransmits __P((void));
66 int queue_len __P((void));
67
68 struct sockaddr_in serv_sin;
69 extern int rexmit_times[];
70
71 #ifdef vax
72 #define use_etext
73 #endif /* vax */
74
75 #ifdef ibm032
76 #define adjust_size(size)       size -= 0x10000000
77 #endif /* ibm032 */
78
79 #if defined(sun) && (defined (SUN4_ARCH) || defined (sparc))
80 #define use_etext
81 #endif
82
83 #ifdef _AIX
84 #ifdef i386
85 #define adjust_size(size)       size -= 0x400000
86 #endif
87 #ifdef _IBMR2
88 #define adjust_size(size)       size -= 0x20000000
89 #endif
90 #endif
91
92 #if (defined(ultrix) || defined(sgi)) && defined(mips)
93 #define adjust_size(size)       size -= 0x10000000
94 #endif /* (ultrix || sgi) && mips */
95
96 #if defined(__alpha)
97 #define adjust_size(size)       size -= 0x140000000
98 #endif /* alpha */
99
100 #ifdef use_etext
101 extern int etext;
102 #define adjust_size(size)       size -= (unsigned int) &etext;
103 #undef use_etext
104 #endif
105
106 #endif