1 /*
2  * Copyright (C) 2005 William Pitcock, et al.
3  * Rights to this code are as documented in doc/LICENSE.
4  *
5  * Data structures related to network servers.
6  *
7  */
8 
9 #ifndef SERVERS_H
10 #define SERVERS_H
11 
12 typedef struct tld_ tld_t;
13 
14 /* servers struct */
15 struct server_
16 {
17 	char *name;
18 	char *desc;
19 	char *sid;
20 
21 	unsigned int hops;
22 	unsigned int users;
23 	unsigned int invis;
24 	unsigned int opers;
25 	unsigned int away;
26 
27 	time_t connected_since;
28 
29 	unsigned int flags;
30 
31 	server_t *uplink; /* uplink server */
32 	mowgli_list_t children;  /* children linked to me */
33 	mowgli_list_t userlist;  /* users attached to me */
34 };
35 
36 #define SF_HIDE        0x00000001
37 #define SF_EOB         0x00000002 /* Burst finished (we have all users/channels) -- jilles */
38 #define SF_EOB2        0x00000004 /* Is EOB but an uplink is not (for P10) */
39 #define SF_JUPE_PENDING 0x00000008 /* Sent SQUIT request, will introduce jupe when it dies (unconnect semantics) */
40 #define SF_MASKED      0x00000010 /* Is masked, has no own name (for ircnet) */
41 
42 /* tld list struct */
43 struct tld_ {
44   char *name;
45 };
46 
47 /* server related hooks */
48 typedef struct {
49 	server_t *s;
50 	/* space for reason etc here */
51 } hook_server_delete_t;
52 
53 #define SERVER_NAME(serv)	((serv)->sid ? (serv)->sid : (serv)->name)
54 #define ME			(ircd->uses_uid ? me.numeric : me.name)
55 
56 /* servers.c */
57 E mowgli_patricia_t *servlist;
58 E mowgli_list_t tldlist;
59 
60 E void init_servers(void);
61 
62 E tld_t *tld_add(const char *name);
63 E void tld_delete(const char *name);
64 E tld_t *tld_find(const char *name);
65 
66 E server_t *server_add(const char *name, unsigned int hops, server_t *uplink, const char *id, const char *desc);
67 E void server_delete(const char *name);
68 E server_t *server_find(const char *name);
69 
70 #endif
71 
72 /* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs
73  * vim:ts=8
74  * vim:sw=8
75  * vim:noexpandtab
76  */
77