diff options
author | John Kohl <jtkohl@mit.edu> | 1987-07-14 13:13:18 +0000 |
---|---|---|
committer | John Kohl <jtkohl@mit.edu> | 1987-07-14 13:13:18 +0000 |
commit | c72c6a9af1ad29b46dc0d461a6106cb0d3ffbb89 (patch) | |
tree | b0cada329feae3ff36361d48ee9d722d9d5baf45 /server/zserver.h | |
parent | 6ea374cae5e25b47a573d075568c63a23004e4c5 (diff) |
generalize not acked; add more dfn's of functions; globalize
brain-dump useful variables; adjust TIMO's; add ADMIN opcodes,
and class inst's; make appropriate defines for magic server indexes etc.
Diffstat (limited to 'server/zserver.h')
-rw-r--r-- | server/zserver.h | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/server/zserver.h b/server/zserver.h index ee32e8c..f2934c0 100644 --- a/server/zserver.h +++ b/server/zserver.h @@ -23,6 +23,7 @@ <stdio.h> */ #include <arpa/inet.h> #include <zephyr/acl.h> +#include <sys/file.h> #include <syslog.h> #include <strings.h> @@ -102,7 +103,12 @@ typedef struct _ZNotAcked_t { caddr_t na_packet; /* ptr to packet */ int na_packsz; /* size of packet */ ZUnique_Id_t na_uid; /* uid of packet */ - ZClient_t *na_client; /* address to send to */ + union { /* address to send to */ + ZClient_t *na_clt; /* client descr */ + int srv_idx; /* index of server */ + } dest; +#define na_client dest.na_clt +#define na_srv_idx dest.srv_idx } ZNotAcked_t; typedef enum _ZSentType { @@ -111,6 +117,7 @@ typedef enum _ZSentType { AUTH_FAILED, /* authentication failed */ NOT_FOUND /* user not found for uloc */ } ZSentType; + /* this is just for lint */ struct qelem { struct qelem *q_forw; @@ -123,7 +130,8 @@ struct qelem { extern int access_check(); /* found in brain_dump.c */ -extern void get_brain_dump(), send_brain_dump(); +extern void get_brain_dump(), send_brain_dump(), offer_brain_dump(); +extern void bdump_send_list_tcp(); /* found in class_s.c */ extern Code_t class_register(), class_deregister(), class_restrict(); @@ -154,20 +162,25 @@ extern void hostm_transfer(); extern void server_timo(), server_dispatch(), server_recover(); extern void server_adispatch(), server_init(), server_shutdown(); extern void server_forward(); +extern int is_server(); +extern ZServerDesc_t *server_which_server(); /* found in subscr_s.c */ extern Code_t subscr_cancel(), subscr_subscribe(); extern ZClientList_t *subscr_match_list(); -extern void subscr_list_free(), subscr_cancel_client(); +extern void subscr_list_free(), subscr_cancel_client(), subscr_sendlist(); +extern void subscr_send_subs(); /* found in uloc_s.c */ extern void ulogin_dispatch(), ulocate_dispatch(), uloc_hflush(); +extern void uloc_send_locations(); /* found in zctl.c */ extern void control_dispatch(); /* found in libc.a */ char *malloc(), *realloc(); +long random(); /* global identifiers */ @@ -176,6 +189,13 @@ extern struct in_addr my_addr; /* my inet address */ extern struct sockaddr_in sock_sin; /* socket descriptors */ extern int srv_socket; /* dgram sockets for clients and other servers */ +extern int bdump_socket; /* brain dump socket + (closed most of the time) */ +extern struct sockaddr_in bdump_sin; /* addr of brain dump socket */ + +extern fd_set interesting; /* the file descrips we are listening + to right now */ +extern int nfildes; /* number to look at in select() */ extern int zdebug; extern char myname[]; /* domain name of this host */ extern ZNotAcked_t *nacklist; /* list of not ack'ed packets */ @@ -196,11 +216,11 @@ extern int nservers; /* number of other servers*/ must respond to a ping */ /* server-server defines */ -#define TIMO_UP ((long) 20) /* timeout between up and tardy */ -#define TIMO_TARDY ((long) 30) /* timeout btw tardy hellos */ +#define TIMO_UP ((long) 60) /* timeout between up and tardy */ +#define TIMO_TARDY ((long) 60) /* timeout btw tardy hellos */ #define TIMO_DEAD ((long)(15*60)) /* timeout between hello's for dead */ -#define H_NUM_TARDY 5 /* num hello's before going dead +#define H_NUM_TARDY 3 /* num hello's before going dead when tardy */ #define H_NUM_STARTING 2 /* num hello's before going dead when starting */ @@ -208,6 +228,13 @@ extern int nservers; /* number of other servers*/ #define ADMIN_HELLO "HELLO" /* Opcode: hello, are you there */ #define ADMIN_IMHERE "IHEARDYOU" /* Opcode: yes, I am here */ #define ADMIN_SHUTDOWN "GOODBYE" /* Opcode: I am shutting down */ +#define ADMIN_BDUMP "DUMP_AVAIL" /* Opcode: I will give you a dump */ +#define ADMIN_DONE "DUMP_DONE" /* Opcode: brain dump for this server + is complete */ +#define ADMIN_NEWCLT "NEXT_CLIENT" /* Opcode: this is a new client */ + +#define ADMIN_LIMBO "LIMBO" /* Class inst: please send limbo info*/ +#define ADMIN_YOU "YOUR_STATE" /* Class inst: please send your state*/ #define NULLZCT ((ZClass_t *) 0) #define NULLZCNT ((ZClient_t *) 0) @@ -223,12 +250,15 @@ extern int nservers; /* number of other servers*/ /* me_server_idx is the index into otherservers of this server descriptor. */ /* the 'limbo' server is always the first server */ -#define me_server &otherservers[me_server_idx] -#define limbo_server otherservers +#define me_server (&otherservers[me_server_idx]) +#define limbo_server_idx() (0) +#define limbo_server (&otherservers[limbo_server_idx()]) #define ack(a,b) clt_ack(a,b,SENT) #define nack(a,b) clt_ack(a,b,NOT_SENT) +#define max(a,b) ((a) > (b) ? (a) : (b)) + /* these are to keep lint happy */ #define xfree(foo) free((caddr_t) (foo)) #define xinsque(a,b) insque((struct qelem *)(a), (struct qelem *)(b)) |