aboutsummaryrefslogtreecommitdiff
path: root/general_network.h
diff options
context:
space:
mode:
authorTest_User <hax@andrewyu.org>2024-06-10 23:20:14 -0400
committerTest_User <hax@andrewyu.org>2024-06-10 23:20:14 -0400
commit47d7e30f6acb1c170c8e5e15f2656b89a33384f7 (patch)
treed5b8c7e0641b77647b6e44c4c37ed4664e468299 /general_network.h
parent5534441086cee3130c95460e22ed29bff44cbaef (diff)
downloadhaxircd-47d7e30f6acb1c170c8e5e15f2656b89a33384f7.tar.gz
haxircd-47d7e30f6acb1c170c8e5e15f2656b89a33384f7.zip
Mostly complete user tracking added
Diffstat (limited to 'general_network.h')
-rw-r--r--general_network.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/general_network.h b/general_network.h
index 202f877..6b76256 100644
--- a/general_network.h
+++ b/general_network.h
@@ -45,10 +45,57 @@ struct network {
void (*close)(int fd, void *handle);
};
+struct server_info {
+ struct string sid;
+ struct string name;
+ struct string fullname;
+
+ struct string next; // Self for self, else which server we should send a message to to get to this server
+
+ struct table connected_to; // List of servers that this server is connected to
+
+ struct table user_list;
+
+ void *handle;
+
+ size_t protocol;
+ size_t net;
+
+ size_t distance;
+};
+
+struct user_info {
+ struct string uid;
+ struct string nick;
+ struct string fullname;
+
+ struct string ident;
+
+ struct string vhost;
+ struct string host;
+ struct string address;
+
+ size_t user_ts;
+ size_t nick_ts;
+
+ struct string server;
+
+ struct table channel_list;
+
+ void *handle;
+
+ size_t protocol;
+ size_t net;
+};
+
int resolve(struct string address, struct string port, struct sockaddr *sockaddr);
int init_general_network(void);
+int add_user(struct string from, struct string attached_to, struct string uid, struct string nick, struct string fullname, struct string ident, struct string vhost, struct string host, struct string address, size_t user_ts, size_t nick_ts, void *handle, size_t protocol, size_t net);
+// Does not propagate, but will inform local clients about it
+void remove_user(struct string from, struct user_info *user, struct string reason, char propagate);
+
extern char casemap[UCHAR_MAX+1];
#define CASEMAP(x) (casemap[(unsigned char)x])
@@ -64,3 +111,6 @@ extern char casemap[UCHAR_MAX+1];
#define NUM_NET_TYPES 3
extern struct network networks[NUM_NET_TYPES];
+
+extern struct table server_list;
+extern struct table user_list;