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