--- /dev/null
+--- a/src/auth.c
++++ b/src/auth.c
+@@ -70,7 +70,7 @@
+ {
+ char* data;
+ char* data_extra;
+- struct user_access_info* info = 0;
++ struct uhub_user_access_info* info = 0;
+
+ if (!strncmp(line, cmd, strlen(cmd)))
+ {
+@@ -86,7 +86,7 @@
+ return -1;
+ }
+
+- info = hub_malloc_zero(sizeof(struct user_access_info));
++ info = hub_malloc_zero(sizeof(struct uhub_user_access_info));
+
+ if (!info)
+ {
+@@ -340,7 +340,7 @@
+
+ static void acl_free_access_info(void* ptr)
+ {
+- struct user_access_info* info = (struct user_access_info*) ptr;
++ struct uhub_user_access_info* info = (struct uhub_user_access_info*) ptr;
+ if (info)
+ {
+ hub_free(info->username);
+@@ -404,16 +404,16 @@
+ }
+
+
+-struct user_access_info* acl_get_access_info(struct acl_handle* handle, const char* name)
++struct uhub_user_access_info* acl_get_access_info(struct acl_handle* handle, const char* name)
+ {
+- struct user_access_info* info = (struct user_access_info*) list_get_first(handle->users);
++ struct uhub_user_access_info* info = (struct uhub_user_access_info*) list_get_first(handle->users);
+ while (info)
+ {
+ if (strcasecmp(info->username, name) == 0)
+ {
+ return info;
+ }
+- info = (struct user_access_info*) list_get_next(handle->users);
++ info = (struct uhub_user_access_info*) list_get_next(handle->users);
+ }
+ return NULL;
+ }
+@@ -492,7 +492,7 @@
+ * seconds since the unix epoch (modulus 1 million)
+ * and the SID of the user (0-1 million).
+ */
+-const char* password_generate_challenge(struct user* user)
++const char* password_generate_challenge(struct uhub_user* user)
+ {
+ char buf[32];
+ uint64_t tiger_res[3];
+@@ -511,10 +511,10 @@
+ }
+
+
+-int password_verify(struct user* user, const char* password)
++int password_verify(struct uhub_user* user, const char* password)
+ {
+ char buf[1024];
+- struct user_access_info* access;
++ struct uhub_user_access_info* access;
+ const char* challenge;
+ char raw_challenge[64];
+ char password_calc[64];
+--- a/src/auth.h
++++ b/src/auth.h
+@@ -21,7 +21,7 @@
+ #define HAVE_UHUB_ACL_H
+
+ struct hub_config;
+-struct user;
++struct uhub_user;
+ struct ip_addr_encap;
+
+ enum password_status
+@@ -50,7 +50,7 @@
+
+ const char* get_user_credential_string(enum user_credentials cred);
+
+-struct user_access_info
++struct uhub_user_access_info
+ {
+ char* username; /* name of user, cid or IP range */
+ char* password; /* password */
+@@ -77,7 +77,7 @@
+ extern int acl_initialize(struct hub_config* config, struct acl_handle* handle);
+ extern int acl_shutdown(struct acl_handle* handle);
+
+-extern struct user_access_info* acl_get_access_info(struct acl_handle* handle, const char* name);
++extern struct uhub_user_access_info* acl_get_access_info(struct acl_handle* handle, const char* name);
+ extern int acl_is_cid_banned(struct acl_handle* handle, const char* cid);
+ extern int acl_is_ip_banned(struct acl_handle* handle, const char* ip_address);
+ extern int acl_is_ip_nat_override(struct acl_handle* handle, const char* ip_address);
+@@ -87,7 +87,7 @@
+
+ extern int acl_check_ip_range(struct ip_addr_encap* addr, struct ip_ban_record* info);
+
+-extern const char* password_generate_challenge(struct user* user);
+-extern int password_verify(struct user* user, const char* password);
++extern const char* password_generate_challenge(struct uhub_user* user);
++extern int password_verify(struct uhub_user* user, const char* password);
+
+ #endif /* HAVE_UHUB_ACL_H */
+--- a/src/commands.c
++++ b/src/commands.c
+@@ -19,7 +19,7 @@
+
+ #include "uhub.h"
+
+-typedef int (*command_handler)(struct user* user, const char* message);
++typedef int (*command_handler)(struct uhub_user* user, const char* message);
+
+ struct commands_handler
+ {
+@@ -32,7 +32,7 @@
+
+ static struct commands_handler command_handlers[];
+
+-static void send_message(struct user* user, const char* message)
++static void send_message(struct uhub_user* user, const char* message)
+ {
+ char* buffer = adc_msg_escape(message);
+ struct adc_message* command = adc_msg_construct(ADC_CMD_IMSG, strlen(buffer) + 6);
+@@ -42,7 +42,7 @@
+ hub_free(buffer);
+ }
+
+-static int command_access_denied(struct user* user, const char* command)
++static int command_access_denied(struct uhub_user* user, const char* command)
+ {
+ char temp[64];
+ snprintf(temp, 64, "*** Access denied: \"%s\"", command);
+@@ -51,7 +51,7 @@
+ }
+
+
+-static int command_stats(struct user* user, const char* message)
++static int command_stats(struct uhub_user* user, const char* message)
+ {
+ char temp[128];
+ snprintf(temp, 128, "*** Stats: %zu users, peak: %zu. Network (up/down): %d/%d KB/s, peak: %d/%d KB/s",
+@@ -67,7 +67,7 @@
+ }
+
+
+-static int command_help(struct user* user, const char* message)
++static int command_help(struct uhub_user* user, const char* message)
+ {
+ #define MAX_HELP_MSG 1024
+ size_t n;
+@@ -89,7 +89,7 @@
+ return 0;
+ }
+
+-static int command_uptime(struct user* user, const char* message)
++static int command_uptime(struct uhub_user* user, const char* message)
+ {
+ char tmp[128];
+ size_t d;
+@@ -124,20 +124,20 @@
+ return 0;
+ }
+
+-static int command_kick(struct user* user, const char* message)
++static int command_kick(struct uhub_user* user, const char* message)
+ {
+ send_message(user, "*** Kick not implemented!");
+ return 0;
+ }
+
+-static int command_reload(struct user* user, const char* message)
++static int command_reload(struct uhub_user* user, const char* message)
+ {
+ send_message(user, "*** Reloading configuration");
+ user->hub->status = hub_status_restart;
+ return 0;
+ }
+
+-static int command_shutdown(struct user* user, const char* message)
++static int command_shutdown(struct uhub_user* user, const char* message)
+ {
+ send_message(user, "*** Hub shuting down...");
+ user->hub->status = hub_status_shutdown;
+@@ -145,13 +145,13 @@
+ }
+
+
+-static int command_version(struct user* user, const char* message)
++static int command_version(struct uhub_user* user, const char* message)
+ {
+ send_message(user, "*** Powered by " PRODUCT "/" VERSION);
+ return 0;
+ }
+
+-static int command_myip(struct user* user, const char* message)
++static int command_myip(struct uhub_user* user, const char* message)
+ {
+ char tmp[128];
+ snprintf(tmp, 128, "*** Your IP: %s", ip_convert_to_string(&user->ipaddr));
+@@ -159,7 +159,7 @@
+ return 0;
+ }
+
+-int command_dipatcher(struct user* user, const char* message)
++int command_dipatcher(struct uhub_user* user, const char* message)
+ {
+ size_t n = 0;
+ for (n = 0; command_handlers[n].prefix; n++)
+--- a/src/commands.h
++++ b/src/commands.h
+@@ -23,7 +23,7 @@
+ #define CHAT_MSG_IGNORED 0
+ #define CHAT_MSG_INVALID -1
+
+-typedef int (*plugin_event_chat_message)(struct hub_info*, struct user*, struct adc_message*);
++typedef int (*plugin_event_chat_message)(struct hub_info*, struct uhub_user*, struct adc_message*);
+
+ struct command_info
+ {
+@@ -32,4 +32,4 @@
+ plugin_event_chat_message function;
+ };
+
+-int command_dipatcher(struct user* user, const char* message);
++int command_dipatcher(struct uhub_user* user, const char* message);
+--- a/src/hub.c
++++ b/src/hub.c
+@@ -19,7 +19,7 @@
+
+ #include "uhub.h"
+
+-int hub_handle_message(struct user* u, const char* line, size_t length)
++int hub_handle_message(struct uhub_user* u, const char* line, size_t length)
+ {
+ int ret = 0;
+ struct adc_message* cmd = 0;
+@@ -96,7 +96,7 @@
+ }
+
+
+-int hub_handle_support(struct user* u, struct adc_message* cmd)
++int hub_handle_support(struct uhub_user* u, struct adc_message* cmd)
+ {
+ int ret = 0;
+ int index = 0;
+@@ -161,7 +161,7 @@
+ }
+
+
+-int hub_handle_password(struct user* u, struct adc_message* cmd)
++int hub_handle_password(struct uhub_user* u, struct adc_message* cmd)
+ {
+ char* password = adc_msg_get_argument(cmd, 0);
+ int ret = 0;
+@@ -184,7 +184,7 @@
+ }
+
+
+-int hub_handle_chat_message(struct user* u, struct adc_message* cmd)
++int hub_handle_chat_message(struct uhub_user* u, struct adc_message* cmd)
+ {
+ char* message = adc_msg_get_argument(cmd, 0);
+ int ret = 0;
+@@ -206,14 +206,14 @@
+ return ret;
+ }
+
+-int on_kick(struct user* u, struct adc_message* cmd)
++int on_kick(struct uhub_user* u, struct adc_message* cmd)
+ {
+ hub_log(log_error, "on_kick() not implemented");
+ return -1;
+ }
+
+ #ifdef ADC_UDP_OPERATION
+-int hub_handle_autocheck(struct user* u, struct adc_message* cmd)
++int hub_handle_autocheck(struct uhub_user* u, struct adc_message* cmd)
+ {
+ char* port_str = adc_msg_get_argument(cmd, 0);
+ char* token = adc_msg_get_argument(cmd, 1);
+@@ -245,13 +245,13 @@
+ #endif
+
+
+-void hub_send_autocheck(struct user* u, uint16_t port, const char* token)
++void hub_send_autocheck(struct uhub_user* u, uint16_t port, const char* token)
+ {
+
+ }
+
+
+-void hub_send_support(struct user* u)
++void hub_send_support(struct uhub_user* u)
+ {
+ if (user_is_connecting(u) || user_is_logged_in(u))
+ {
+@@ -260,7 +260,7 @@
+ }
+
+
+-void hub_send_sid(struct user* u)
++void hub_send_sid(struct uhub_user* u)
+ {
+ struct adc_message* command;
+ if (user_is_connecting(u))
+@@ -274,7 +274,7 @@
+ }
+
+
+-void hub_send_ping(struct user* user)
++void hub_send_ping(struct uhub_user* user)
+ {
+ /* This will just send a newline, despite appearing to do more below. */
+ struct adc_message* ping = adc_msg_construct(0, 0);
+@@ -287,7 +287,7 @@
+ }
+
+
+-void hub_send_hubinfo(struct user* u)
++void hub_send_hubinfo(struct uhub_user* u)
+ {
+ struct adc_message* info = adc_msg_copy(u->hub->command_info);
+ int value = 0;
+@@ -356,7 +356,7 @@
+ }
+
+
+-void hub_send_handshake(struct user* u)
++void hub_send_handshake(struct uhub_user* u)
+ {
+ hub_send_support(u);
+ hub_send_sid(u);
+@@ -369,7 +369,7 @@
+ }
+
+
+-void hub_send_motd(struct user* u)
++void hub_send_motd(struct uhub_user* u)
+ {
+ if (u->hub->command_motd)
+ {
+@@ -378,7 +378,7 @@
+ }
+
+
+-void hub_send_password_challenge(struct user* u)
++void hub_send_password_challenge(struct uhub_user* u)
+ {
+ struct adc_message* igpa;
+ igpa = adc_msg_construct(ADC_CMD_IGPA, 38);
+@@ -399,33 +399,33 @@
+ {
+ case UHUB_EVENT_USER_JOIN:
+ {
+- if (user_is_disconnecting((struct user*) message->ptr))
++ if (user_is_disconnecting((struct uhub_user*) message->ptr))
+ break;
+
+ if (message->flags)
+ {
+- hub_send_password_challenge((struct user*) message->ptr);
++ hub_send_password_challenge((struct uhub_user*) message->ptr);
+ }
+ else
+ {
+- on_login_success((struct user*) message->ptr);
++ on_login_success((struct uhub_user*) message->ptr);
+ }
+ break;
+ }
+
+ case UHUB_EVENT_USER_QUIT:
+ {
+- user_manager_remove((struct user*) message->ptr);
+- send_quit_message((struct user*) message->ptr);
+- on_logout_user((struct user*) message->ptr);
+- user_schedule_destroy((struct user*) message->ptr);
++ user_manager_remove((struct uhub_user*) message->ptr);
++ send_quit_message((struct uhub_user*) message->ptr);
++ on_logout_user((struct uhub_user*) message->ptr);
++ user_schedule_destroy((struct uhub_user*) message->ptr);
+ break;
+ }
+
+ case UHUB_EVENT_USER_DESTROY:
+ {
+ hub_log(log_trace, "hub_event_dispatcher: UHUB_EVENT_USER_DESTROY (ptr=%p)", message->ptr);
+- user_destroy((struct user*) message->ptr);
++ user_destroy((struct uhub_user*) message->ptr);
+ break;
+ }
+
+@@ -757,7 +757,7 @@
+ */
+ static inline int is_nick_in_use(struct hub_info* hub, const char* nick)
+ {
+- struct user* lookup = get_user_by_nick(hub, nick);
++ struct uhub_user* lookup = get_user_by_nick(hub, nick);
+ if (lookup)
+ {
+ return 1;
+@@ -771,7 +771,7 @@
+ */
+ static inline int is_cid_in_use(struct hub_info* hub, const char* cid)
+ {
+- struct user* lookup = get_user_by_cid(hub, cid);
++ struct uhub_user* lookup = get_user_by_cid(hub, cid);
+ if (lookup)
+ {
+ return 1;
+@@ -796,7 +796,7 @@
+ * @param msg See enum status_message
+ * @param level See enum status_level
+ */
+-void hub_send_status(struct user* user, enum status_message msg, enum msg_status_level level)
++void hub_send_status(struct uhub_user* user, enum status_message msg, enum msg_status_level level)
+ {
+ struct hub_config* cfg = user->hub->config;
+ struct adc_message* cmd = adc_msg_construct(ADC_CMD_ISTA, 6);
+--- a/src/hubevent.c
++++ b/src/hubevent.c
+@@ -19,27 +19,27 @@
+
+ #include "uhub.h"
+
+-static void log_user_login(struct user* u)
++static void log_user_login(struct uhub_user* u)
+ {
+ const char* cred = get_user_credential_string(u->credentials);
+ const char* addr = ip_convert_to_string(&u->ipaddr);
+ hub_log(log_user, "LoginOK %s/%s %s \"%s\" (%s) \"%s\"", sid_to_string(u->id.sid), u->id.cid, addr, u->id.nick, cred, u->user_agent);
+ }
+
+-static void log_user_login_error(struct user* u, enum status_message msg)
++static void log_user_login_error(struct uhub_user* u, enum status_message msg)
+ {
+ const char* addr = ip_convert_to_string(&u->ipaddr);
+ const char* message = hub_get_status_message_log(u->hub, msg);
+ hub_log(log_user, "LoginError %s/%s %s \"%s\" (%s) \"%s\"", sid_to_string(u->id.sid), u->id.cid, addr, u->id.nick, message, u->user_agent);
+ }
+
+-static void log_user_logout(struct user* u, const char* message)
++static void log_user_logout(struct uhub_user* u, const char* message)
+ {
+ const char* addr = ip_convert_to_string(&u->ipaddr);
+ hub_log(log_user, "Logout %s/%s %s \"%s\" (%s)", sid_to_string(u->id.sid), u->id.cid, addr, u->id.nick, message);
+ }
+
+-static void log_user_nick_change(struct user* u, const char* nick)
++static void log_user_nick_change(struct uhub_user* u, const char* nick)
+ {
+ const char* addr = ip_convert_to_string(&u->ipaddr);
+ hub_log(log_user, "NickChange %s/%s %s \"%s\" -> \"%s\"", sid_to_string(u->id.sid), u->id.cid, addr, u->id.nick, nick);
+@@ -47,7 +47,7 @@
+
+
+ /* Send MOTD, do logging etc */
+-void on_login_success(struct user* u)
++void on_login_success(struct uhub_user* u)
+ {
+ struct timeval timeout = { TIMEOUT_IDLE, 0 };
+
+@@ -75,14 +75,14 @@
+ event_add(u->ev_read, &timeout);
+ }
+
+-void on_login_failure(struct user* u, enum status_message msg)
++void on_login_failure(struct uhub_user* u, enum status_message msg)
+ {
+ log_user_login_error(u, msg);
+ hub_send_status(u, msg, status_level_fatal);
+ user_disconnect(u, quit_logon_error);
+ }
+
+-void on_nick_change(struct user* u, const char* nick)
++void on_nick_change(struct uhub_user* u, const char* nick)
+ {
+ if (user_is_logged_in(u))
+ {
+@@ -90,7 +90,7 @@
+ }
+ }
+
+-void on_logout_user(struct user* user)
++void on_logout_user(struct uhub_user* user)
+ {
+ const char* reason = "";
+
+--- a/src/hubevent.h
++++ b/src/hubevent.h
+@@ -23,22 +23,22 @@
+ /**
+ * This event is triggered whenever a user successfully logs in to the hub.
+ */
+-extern void on_login_success(struct user* u);
++extern void on_login_success(struct uhub_user* u);
+
+ /**
+ * This event is triggered whenever a user failed to log in to the hub.
+ */
+-extern void on_login_failure(struct user* u, enum status_message msg);
++extern void on_login_failure(struct uhub_user* u, enum status_message msg);
+
+ /**
+ * This event is triggered whenever a previously logged in user leaves the hub.
+ */
+-extern void on_logout_user(struct user* u);
++extern void on_logout_user(struct uhub_user* u);
+
+ /**
+ * This event is triggered whenever a user changes his/her nickname.
+ */
+-extern void on_nick_change(struct user* u, const char* nick);
++extern void on_nick_change(struct uhub_user* u, const char* nick);
+
+
+ #endif /* HAVE_UHUB_HUB_EVENT_H */
+--- a/src/hub.h
++++ b/src/hub.h
+@@ -94,7 +94,7 @@
+ struct event_queue* queue;
+ struct event_base* evbase;
+ struct hub_config* config;
+- struct user_manager* users;
++ struct uhub_user_manager* users;
+ struct acl_handle* acl;
+ struct adc_message* command_info; /* The hub's INF command */
+ struct adc_message* command_support; /* The hub's SUP command */
+@@ -116,103 +116,103 @@
+ *
+ * @return 0 on success, -1 on error
+ */
+-extern int hub_handle_message(struct user* u, const char* message, size_t length);
++extern int hub_handle_message(struct uhub_user* u, const char* message, size_t length);
+
+ /**
+ * Handle protocol support/subscription messages received clients.
+ *
+ * @return 0 on success, -1 on error
+ */
+-extern int hub_handle_support(struct user* u, struct adc_message* cmd);
++extern int hub_handle_support(struct uhub_user* u, struct adc_message* cmd);
+
+ /**
+ * Handle password messages received from clients.
+ *
+ * @return 0 on success, -1 on error
+ */
+-extern int hub_handle_password(struct user* u, struct adc_message* cmd);
++extern int hub_handle_password(struct uhub_user* u, struct adc_message* cmd);
+
+ /**
+ * Handle chat messages received from clients.
+ * @return 0 on success, -1 on error.
+ */
+-extern int hub_handle_chat_message(struct user* u, struct adc_message* cmd);
++extern int hub_handle_chat_message(struct uhub_user* u, struct adc_message* cmd);
+
+ /**
+ * Used internally by hub_handle_info
+ * @return 1 if nickname is OK, or 0 if nickname is not accepted.
+ */
+-extern int hub_handle_info_check_nick(struct user* u, struct adc_message* cmd);
++extern int hub_handle_info_check_nick(struct uhub_user* u, struct adc_message* cmd);
+
+ /**
+ * Used internally by hub_handle_info
+ * @return 1 if CID/PID is OK, or 0 if not valid.
+ */
+-extern int hub_handle_info_check_cid(struct user* u, struct adc_message* cmd);
++extern int hub_handle_info_check_cid(struct uhub_user* u, struct adc_message* cmd);
+
+ /**
+ * Can only be used by administrators or operators.
+ *
+ * @return 0 on success, -1 on error
+ */
+-extern int hub_handle_kick(struct user* u, struct adc_message* cmd);
++extern int hub_handle_kick(struct uhub_user* u, struct adc_message* cmd);
+
+ #ifdef ADC_UDP_OPERATION
+ /**
+ * Handle incoming autocheck message.
+ */
+-extern int hub_handle_autocheck(struct user* u, struct adc_message* cmd);
++extern int hub_handle_autocheck(struct uhub_user* u, struct adc_message* cmd);
+ #endif
+
+ /**
+ * Send the support line for the hub to a particular user.
+ * Only used during the initial handshake.
+ */
+-extern void hub_send_support(struct user* u);
++extern void hub_send_support(struct uhub_user* u);
+
+ /**
+ * Send a message assigning a SID for a user.
+ * This is only sent after hub_send_support() during initial handshake.
+ */
+-extern void hub_send_sid(struct user* u);
++extern void hub_send_sid(struct uhub_user* u);
+
+ /**
+ * Send a 'ping' message to user.
+ */
+-extern void hub_send_ping(struct user* user);
++extern void hub_send_ping(struct uhub_user* user);
+
+ /**
+ * Send a message containing hub information to a particular user.
+ * This is sent during user connection, but can safely be sent at any
+ * point later.
+ */
+-extern void hub_send_hubinfo(struct user* u);
++extern void hub_send_hubinfo(struct uhub_user* u);
+
+ /**
+ * Send handshake. This basically calls
+ * hub_send_support() and hub_send_sid()
+ */
+-extern void hub_send_handshake(struct user* u);
++extern void hub_send_handshake(struct uhub_user* u);
+
+ /**
+ * Send a welcome message containing the message of the day to
+ * one particular user. This can be sent in any point in time.
+ */
+-extern void hub_send_motd(struct user* u);
++extern void hub_send_motd(struct uhub_user* u);
+
+ /**
+ * Send a password challenge to a user.
+ * This is only used if the user tries to access the hub using a
+ * password protected nick name.
+ */
+-extern void hub_send_password_challenge(struct user* u);
++extern void hub_send_password_challenge(struct uhub_user* u);
+
+ /**
+ * Send an autocheck message to a user.
+ * This is basically a UDP message. The user's client can then determine
+ * if UDP communication works by either hole punching or configuring UPnP.
+ */
+-extern void hub_send_autocheck(struct user* u, uint16_t port, const char* token);
++extern void hub_send_autocheck(struct uhub_user* u, uint16_t port, const char* token);
+
+ /**
+ * This starts the hub.
+@@ -244,7 +244,7 @@
+ /**
+ * Sends a status_message to a user.
+ */
+-extern void hub_send_status(struct user* user, enum status_message msg, enum msg_status_level level);
++extern void hub_send_status(struct uhub_user* user, enum status_message msg, enum msg_status_level level);
+
+ /**
+ * Returns the number of logged in users on the hub.
+--- a/src/inf.c
++++ b/src/inf.c
+@@ -39,9 +39,9 @@
+ adc_msg_remove_named_argument(cmd, ADC_INF_FLAG_REFERER);
+ }
+
+-static int user_is_protected(struct user* user);
++static int user_is_protected(struct uhub_user* user);
+
+-static int set_feature_cast_supports(struct user* u, struct adc_message* cmd)
++static int set_feature_cast_supports(struct uhub_user* u, struct adc_message* cmd)
+ {
+ char *it, *tmp;
+
+@@ -89,7 +89,7 @@
+ /*
+ * FIXME: Only works for tiger hash. If a client doesnt support tiger we cannot let it in!
+ */
+-static int check_cid(struct user* user, struct adc_message* cmd)
++static int check_cid(struct uhub_user* user, struct adc_message* cmd)
+ {
+ size_t pos;
+ char* cid = adc_msg_get_named_argument(cmd, ADC_INF_FLAG_CLIENT_ID);
+@@ -150,7 +150,7 @@
+ }
+
+
+-static int check_required_login_flags(struct user* user, struct adc_message* cmd)
++static int check_required_login_flags(struct uhub_user* user, struct adc_message* cmd)
+ {
+ int num = 0;
+
+@@ -186,7 +186,7 @@
+ * remove any wrong address, and replace it with the correct one
+ * as seen by the hub.
+ */
+-int check_network(struct user* user, struct adc_message* cmd)
++int check_network(struct uhub_user* user, struct adc_message* cmd)
+ {
+ const char* address = ip_convert_to_string(&user->ipaddr);
+
+@@ -269,7 +269,7 @@
+ }
+
+
+-static int check_nick(struct user* user, struct adc_message* cmd)
++static int check_nick(struct uhub_user* user, struct adc_message* cmd)
+ {
+ char* nick;
+ char* tmp;
+@@ -317,10 +317,10 @@
+ }
+
+
+-static int check_logged_in(struct user* user, struct adc_message* cmd)
++static int check_logged_in(struct uhub_user* user, struct adc_message* cmd)
+ {
+- struct user* lookup1 = get_user_by_nick(user->hub, user->id.nick);
+- struct user* lookup2 = get_user_by_cid(user->hub, user->id.cid);
++ struct uhub_user* lookup1 = get_user_by_nick(user->hub, user->id.nick);
++ struct uhub_user* lookup2 = get_user_by_cid(user->hub, user->id.cid);
+
+ if (lookup1 == user)
+ {
+@@ -358,7 +358,7 @@
+ * But this is not something we want to do, and is deprecated in the ADC specification.
+ * One should rather look at capabilities/features.
+ */
+-static int check_user_agent(struct user* user, struct adc_message* cmd)
++static int check_user_agent(struct uhub_user* user, struct adc_message* cmd)
+ {
+ char* ua_encoded = 0;
+ char* ua = 0;
+@@ -379,7 +379,7 @@
+ }
+
+
+-static int check_acl(struct user* user, struct adc_message* cmd)
++static int check_acl(struct uhub_user* user, struct adc_message* cmd)
+ {
+ if (acl_is_cid_banned(user->hub->acl, user->id.cid))
+ {
+@@ -399,7 +399,7 @@
+ return 0;
+ }
+
+-static int check_limits(struct user* user, struct adc_message* cmd)
++static int check_limits(struct uhub_user* user, struct adc_message* cmd)
+ {
+ char* arg = adc_msg_get_named_argument(cmd, ADC_INF_FLAG_SHARED_SIZE);
+ if (arg)
+@@ -525,10 +525,10 @@
+ * If the hub is configured to allow only registered users and the user
+ * is not recognized this will return 1.
+ */
+-static int set_credentials(struct user* user, struct adc_message* cmd)
++static int set_credentials(struct uhub_user* user, struct adc_message* cmd)
+ {
+ int ret = 0;
+- struct user_access_info* info = acl_get_access_info(user->hub->acl, user->id.nick);
++ struct uhub_user_access_info* info = acl_get_access_info(user->hub->acl, user->id.nick);
+
+ if (info)
+ {
+@@ -580,7 +580,7 @@
+ /**
+ * Determines if a user is to be let into the hub even if the hub is "full".
+ */
+-static int user_is_protected(struct user* user)
++static int user_is_protected(struct uhub_user* user)
+ {
+ switch (user->credentials)
+ {
+@@ -601,7 +601,7 @@
+ * Only registered users will be let in if the hub is configured for registered
+ * users only.
+ */
+-static int user_is_registered(struct user* user)
++static int user_is_registered(struct uhub_user* user)
+ {
+ switch (user->credentials)
+ {
+@@ -619,7 +619,7 @@
+ }
+
+
+-void update_user_info(struct user* u, struct adc_message* cmd)
++void update_user_info(struct uhub_user* u, struct adc_message* cmd)
+ {
+ char prefix[2];
+ char* argument;
+@@ -649,7 +649,7 @@
+ }
+
+
+-static int check_is_hub_full(struct user* user)
++static int check_is_hub_full(struct uhub_user* user)
+ {
+ /*
+ * If hub is full, don't let users in, but we still want to allow
+@@ -663,7 +663,7 @@
+ }
+
+
+-static int check_registered_users_only(struct user* user)
++static int check_registered_users_only(struct uhub_user* user)
+ {
+ if (user->hub->config->registered_users_only && !user_is_registered(user))
+ {
+@@ -679,7 +679,7 @@
+ return ret; \
+ } while(0)
+
+-static int hub_handle_info_common(struct user* user, struct adc_message* cmd)
++static int hub_handle_info_common(struct uhub_user* user, struct adc_message* cmd)
+ {
+ /* Remove server restricted flags */
+ remove_server_restricted_flags(cmd);
+@@ -690,7 +690,7 @@
+ return 0;
+ }
+
+-static int hub_handle_info_low_bandwidth(struct user* user, struct adc_message* cmd)
++static int hub_handle_info_low_bandwidth(struct uhub_user* user, struct adc_message* cmd)
+ {
+ if (user->hub->config->low_bandwidth_mode)
+ {
+@@ -711,7 +711,7 @@
+ return 0;
+ }
+
+-int hub_handle_info_login(struct user* user, struct adc_message* cmd)
++int hub_handle_info_login(struct uhub_user* user, struct adc_message* cmd)
+ {
+ int need_auth = 0;
+
+@@ -765,7 +765,7 @@
+ * - CID/PID (valid, not taken, etc).
+ * - IP addresses (IPv4 and IPv6)
+ */
+-int hub_handle_info(struct user* user, const struct adc_message* cmd_unmodified)
++int hub_handle_info(struct uhub_user* user, const struct adc_message* cmd_unmodified)
+ {
+ struct adc_message* cmd = adc_msg_copy(cmd_unmodified);
+ if (!cmd) return -1; /* OOM */
+--- a/src/inf.h
++++ b/src/inf.h
+@@ -47,7 +47,7 @@
+ *
+ * @return 0 on success, -1 on error
+ */
+-extern int hub_handle_info(struct user* u, const struct adc_message* cmd);
++extern int hub_handle_info(struct uhub_user* u, const struct adc_message* cmd);
+
+
+ #endif /* HAVE_UHUB_INF_PARSER_H */
+--- a/src/message.c
++++ b/src/message.c
+@@ -234,7 +234,7 @@
+ }
+
+
+-struct adc_message* adc_msg_parse_verify(struct user* u, const char* line, size_t length)
++struct adc_message* adc_msg_parse_verify(struct uhub_user* u, const char* line, size_t length)
+ {
+ struct adc_message* command = adc_msg_parse(line, length);
+
+--- a/src/message.h
++++ b/src/message.h
+@@ -20,7 +20,7 @@
+ #ifndef HAVE_UHUB_COMMAND_H
+ #define HAVE_UHUB_COMMAND_H
+
+-struct user;
++struct uhub_user;
+
+ struct adc_message
+ {
+@@ -70,7 +70,7 @@
+ * The message is only considered valid if the user who sent it
+ * is the rightful origin of the message.
+ */
+-extern struct adc_message* adc_msg_parse_verify(struct user* u, const char* string, size_t length);
++extern struct adc_message* adc_msg_parse_verify(struct uhub_user* u, const char* string, size_t length);
+
+ /**
+ * This will parse 'string' and return it as a adc_message struct, or
+--- a/src/netevent.c
++++ b/src/netevent.c
+@@ -23,7 +23,7 @@
+ void net_on_read(int fd, short ev, void *arg)
+ {
+ static char buf[MAX_RECV_BUF];
+- struct user* user = (struct user*) arg;
++ struct uhub_user* user = (struct uhub_user*) arg;
+ char* pos;
+ size_t offset;
+ size_t buflen;
+@@ -168,7 +168,7 @@
+
+ void net_on_write(int fd, short ev, void *arg)
+ {
+- struct user* user = (struct user*) arg;
++ struct uhub_user* user = (struct uhub_user*) arg;
+ struct adc_message* msg;
+ int ret;
+ int length;
+@@ -259,7 +259,7 @@
+ void net_on_accept(int server_fd, short ev, void *arg)
+ {
+ struct hub_info* hub = (struct hub_info*) arg;
+- struct user* user = 0;
++ struct uhub_user* user = 0;
+ struct ip_addr_encap ipaddr;
+ const char* addr;
+ struct timeval timeout = { TIMEOUT_CONNECTED, 0 };
+@@ -320,7 +320,7 @@
+ {
+ static char buffer[1024] = {0,};
+ // struct hub_info* hub = (struct hub_info*) arg;
+- // struct user* user = 0;
++ // struct uhub_user* user = 0;
+ ssize_t size;
+ struct sockaddr_storage from;
+ socklen_t fromlen;
+--- a/src/plugin.h
++++ b/src/plugin.h
+@@ -19,12 +19,12 @@
+
+ typedef void (*plugin_event_startup)(struct hub*);
+ typedef void (*plugin_event_shutdown)(struct hub*);
+-typedef void (*plugin_event_user_login)(struct hub*, struct user*);
+-typedef void (*plugin_event_user_logout)(struct hub*, struct user*);
++typedef void (*plugin_event_user_login)(struct hub*, struct uhub_user*);
++typedef void (*plugin_event_user_logout)(struct hub*, struct uhub_user*);
+ typedef int (*plugin_event_connect)(struct hub*, struct ip_addr_encap);
+-typedef void (*plugin_event_disconnect)(struct hub*, struct user*);
+-typedef int (*plugin_event_message)(struct hub*, struct user*, struct adc_message*);
+-typedef void (*plugin_event_support)(struct hub*, struct user*, int);
++typedef void (*plugin_event_disconnect)(struct hub*, struct uhub_user*);
++typedef int (*plugin_event_message)(struct hub*, struct uhub_user*, struct adc_message*);
++typedef void (*plugin_event_support)(struct hub*, struct uhub_user*, int);
+
+ struct uhub_plugin
+ {
+--- a/src/route.c
++++ b/src/route.c
+@@ -20,9 +20,9 @@
+ #include "uhub.h"
+
+
+-int route_message(struct user* u, struct adc_message* msg)
++int route_message(struct uhub_user* u, struct adc_message* msg)
+ {
+- struct user* target = NULL;
++ struct uhub_user* target = NULL;
+
+ switch (msg->cache[0])
+ {
+@@ -59,7 +59,7 @@
+ }
+
+
+-static void queue_command(struct user* user, struct adc_message* msg__, int offset)
++static void queue_command(struct uhub_user* user, struct adc_message* msg__, int offset)
+ {
+ struct adc_message* msg = adc_msg_incref(msg__);
+ list_append(user->send_queue, msg);
+@@ -97,7 +97,7 @@
+ * -1 if send queue is overflowed
+ * 0 if soft send queue is overflowed (not implemented at the moment)
+ */
+-static int check_send_queue(struct user* user, struct adc_message* msg)
++static int check_send_queue(struct uhub_user* user, struct adc_message* msg)
+ {
+ if (user_flag_get(user, flag_user_list))
+ return 1;
+@@ -111,7 +111,7 @@
+ return 1;
+ }
+
+-int route_to_user(struct user* user, struct adc_message* msg)
++int route_to_user(struct uhub_user* user, struct adc_message* msg)
+ {
+ int ret;
+
+@@ -174,11 +174,11 @@
+
+ int route_to_all(struct hub_info* hub, struct adc_message* command) /* iterate users */
+ {
+- struct user* user = (struct user*) list_get_first(hub->users->list);
++ struct uhub_user* user = (struct uhub_user*) list_get_first(hub->users->list);
+ while (user)
+ {
+ route_to_user(user, command);
+- user = (struct user*) list_get_next(hub->users->list);
++ user = (struct uhub_user*) list_get_next(hub->users->list);
+ }
+
+ return 0;
+@@ -190,7 +190,7 @@
+ int do_send;
+ char* tmp;
+
+- struct user* user = (struct user*) list_get_first(hub->users->list);
++ struct uhub_user* user = (struct uhub_user*) list_get_first(hub->users->list);
+ while (user)
+ {
+ if (user->feature_cast)
+@@ -209,7 +209,7 @@
+ }
+
+ if (!do_send) {
+- user = (struct user*) list_get_next(hub->users->list);
++ user = (struct uhub_user*) list_get_next(hub->users->list);
+ continue;
+ }
+
+@@ -229,13 +229,13 @@
+ route_to_user(user, command);
+ }
+ }
+- user = (struct user*) list_get_next(hub->users->list);
++ user = (struct uhub_user*) list_get_next(hub->users->list);
+ }
+
+ return 0;
+ }
+
+-int route_info_message(struct user* u)
++int route_info_message(struct uhub_user* u)
+ {
+ if (!user_is_nat_override(u))
+ {
+@@ -245,12 +245,12 @@
+ {
+ struct adc_message* cmd = adc_msg_copy(u->info);
+ const char* address = ip_convert_to_string(&u->ipaddr);
+- struct user* user = 0;
++ struct uhub_user* user = 0;
+
+ adc_msg_remove_named_argument(cmd, ADC_INF_FLAG_IPV4_ADDR);
+ adc_msg_add_named_argument(cmd, ADC_INF_FLAG_IPV4_ADDR, address);
+
+- user = (struct user*) list_get_first(u->hub->users->list);
++ user = (struct uhub_user*) list_get_first(u->hub->users->list);
+ while (user)
+ {
+ if (user_is_nat_override(user))
+@@ -258,7 +258,7 @@
+ else
+ route_to_user(user, u->info);
+
+- user = (struct user*) list_get_next(u->hub->users->list);
++ user = (struct uhub_user*) list_get_next(u->hub->users->list);
+ }
+ adc_msg_free(cmd);
+ }
+--- a/src/route.h
++++ b/src/route.h
+@@ -23,12 +23,12 @@
+ /**
+ * Route a message by sending it to it's final destination.
+ */
+-extern int route_message(struct user* u, struct adc_message* msg);
++extern int route_message(struct uhub_user* u, struct adc_message* msg);
+
+ /**
+ * Transmit message directly to one user.
+ */
+-extern int route_to_user(struct user*, struct adc_message* command);
++extern int route_to_user(struct uhub_user*, struct adc_message* command);
+
+ /**
+ * Broadcast message to all users.
+@@ -45,7 +45,7 @@
+ * This will ensure the correct IP is seen by other users
+ * in case nat override is in use.
+ */
+-extern int route_info_message(struct user* user);
++extern int route_info_message(struct uhub_user* user);
+
+
+ #endif /* HAVE_UHUB_ROUTE_H */
+--- a/src/sid.h
++++ b/src/sid.h
+@@ -28,7 +28,7 @@
+
+ struct sid_map
+ {
+- struct user* ptr;
++ struct uhub_user* ptr;
+ struct sid_map* next;
+ };
+
+@@ -58,7 +58,7 @@
+
+
+ extern void sid_initialize(struct sid_pool*);
+-extern sid_t sid_alloc(struct sid_pool*, struct user*);
++extern sid_t sid_alloc(struct sid_pool*, struct uhub_user*);
+ extern void sid_free(struct sid_pool*, sid_t);
+
+
+--- a/src/user.c
++++ b/src/user.c
+@@ -19,13 +19,13 @@
+
+ #include "uhub.h"
+
+-struct user* user_create(struct hub_info* hub, int sd)
++struct uhub_user* user_create(struct hub_info* hub, int sd)
+ {
+- struct user* user = NULL;
++ struct uhub_user* user = NULL;
+
+ hub_log(log_trace, "user_create(), hub=%p, sd=%d", hub, sd);
+
+- user = (struct user*) hub_malloc_zero(sizeof(struct user));
++ user = (struct uhub_user*) hub_malloc_zero(sizeof(struct uhub_user));
+
+ if (user == NULL)
+ return NULL; /* OOM */
+@@ -61,7 +61,7 @@
+ adc_msg_free((struct adc_message*) ptr);
+ }
+
+-void user_destroy(struct user* user)
++void user_destroy(struct uhub_user* user)
+ {
+ hub_log(log_trace, "user_destroy(), user=%p", user);
+
+@@ -98,7 +98,7 @@
+ hub_free(user);
+ }
+
+-void user_set_state(struct user* user, enum user_state state)
++void user_set_state(struct uhub_user* user, enum user_state state)
+ {
+ if ((user->state == state_cleanup && state != state_disconnected) || (user->state == state_disconnected))
+ {
+@@ -109,7 +109,7 @@
+ user->state = state;
+ }
+
+-void user_set_info(struct user* user, struct adc_message* cmd)
++void user_set_info(struct uhub_user* user, struct adc_message* cmd)
+ {
+ adc_msg_free(user->info);
+ user->info = adc_msg_incref(cmd);
+@@ -156,44 +156,44 @@
+ }
+ }
+
+-void user_support_add(struct user* user, int fourcc)
++void user_support_add(struct uhub_user* user, int fourcc)
+ {
+ int feature_mask = convert_support_fourcc(fourcc);
+ user->flags |= feature_mask;
+ }
+
+-int user_flag_get(struct user* user, enum user_flags flag)
++int user_flag_get(struct uhub_user* user, enum user_flags flag)
+ {
+ return user->flags & flag;
+ }
+
+-void user_flag_set(struct user* user, enum user_flags flag)
++void user_flag_set(struct uhub_user* user, enum user_flags flag)
+ {
+ user->flags |= flag;
+ }
+
+-void user_flag_unset(struct user* user, enum user_flags flag)
++void user_flag_unset(struct uhub_user* user, enum user_flags flag)
+ {
+ user->flags &= ~flag;
+ }
+
+-void user_set_nat_override(struct user* user)
++void user_set_nat_override(struct uhub_user* user)
+ {
+ user_flag_set(user, flag_nat);
+ }
+
+-int user_is_nat_override(struct user* user)
++int user_is_nat_override(struct uhub_user* user)
+ {
+ return user_flag_get(user, flag_nat);
+ }
+
+-void user_support_remove(struct user* user, int fourcc)
++void user_support_remove(struct uhub_user* user, int fourcc)
+ {
+ int feature_mask = convert_support_fourcc(fourcc);
+ user->flags &= ~feature_mask;
+ }
+
+-void user_schedule_destroy(struct user* user)
++void user_schedule_destroy(struct uhub_user* user)
+ {
+ struct event_data post;
+ memset(&post, 0, sizeof(post));
+@@ -202,7 +202,7 @@
+ event_queue_post(user->hub->queue, &post);
+ }
+
+-void user_disconnect(struct user* user, int reason)
++void user_disconnect(struct uhub_user* user, int reason)
+ {
+ struct event_data post;
+ int need_notify = 0;
+@@ -242,7 +242,7 @@
+
+ }
+
+-int user_have_feature_cast_support(struct user* user, char feature[4])
++int user_have_feature_cast_support(struct uhub_user* user, char feature[4])
+ {
+ char* tmp = list_get_first(user->feature_cast);
+ while (tmp)
+@@ -256,7 +256,7 @@
+ return 0;
+ }
+
+-int user_set_feature_cast_support(struct user* u, char feature[4])
++int user_set_feature_cast_support(struct uhub_user* u, char feature[4])
+ {
+ if (!u->feature_cast)
+ {
+@@ -272,7 +272,7 @@
+ return 1;
+ }
+
+-void user_clear_feature_cast_support(struct user* u)
++void user_clear_feature_cast_support(struct uhub_user* u)
+ {
+ if (u->feature_cast)
+ {
+@@ -282,21 +282,21 @@
+ }
+ }
+
+-int user_is_logged_in(struct user* user)
++int user_is_logged_in(struct uhub_user* user)
+ {
+ if (user->state == state_normal)
+ return 1;
+ return 0;
+ }
+
+-int user_is_connecting(struct user* user)
++int user_is_connecting(struct uhub_user* user)
+ {
+ if (user->state == state_protocol || user->state == state_identify || user->state == state_verify)
+ return 1;
+ return 0;
+ }
+
+-int user_is_disconnecting(struct user* user)
++int user_is_disconnecting(struct uhub_user* user)
+ {
+ if (user->state == state_cleanup || user->state == state_disconnected)
+ return 1;
+--- a/src/user.h
++++ b/src/user.h
+@@ -73,7 +73,7 @@
+ };
+
+
+-struct user_info
++struct uhub_user_info
+ {
+ sid_t sid; /** session ID */
+ char cid[MAX_CID_LEN+1]; /** global client ID */
+@@ -85,7 +85,7 @@
+ * as the number of bytes and files shared, and the number of hubs the
+ * user is connected to, etc.
+ */
+-struct user_counts
++struct uhub_user_counts
+ {
+ uint64_t shared_size; /** Shared size in bytes */
+ size_t shared_files; /** The number of shared files */
+@@ -96,14 +96,14 @@
+ size_t hub_count_total; /** The number of hubs connected to in total */
+ };
+
+-struct user
++struct uhub_user
+ {
+ int sd; /** socket descriptor */
+ struct event* ev_read; /** libevent struct for read events */
+ struct event* ev_write; /** libevent struct for write events */
+ enum user_state state; /** see enum user_state */
+ enum user_credentials credentials; /** see enum user_credentials */
+- struct user_info id; /** Contains nick name and CID */
++ struct uhub_user_info id; /** Contains nick name and CID */
+ int flags; /** see enum user_features */
+ char user_agent[MAX_UA_LEN+1];/** User agent string */
+ time_t tm_connected; /** time when user connected */
+@@ -120,7 +120,7 @@
+ struct hub_info* hub; /** The hub instance this user belong to */
+ int quit_reason; /** Quit reason (see user_quit_reason) */
+ struct ip_addr_encap ipaddr; /** IP address of connected user */
+- struct user_counts limits; /** Data used for limitation */
++ struct uhub_user_counts limits; /** Data used for limitation */
+ #ifdef SSL_SUPPORT
+ SSL* ssl; /** SSL handle */
+ #endif /* SSL_SUPPORT */
+@@ -137,19 +137,19 @@
+ * @param sd socket descriptor associated with the user
+ * @return User object or NULL if not enough memory is available.
+ */
+-extern struct user* user_create(struct hub_info* hub, int sd);
++extern struct uhub_user* user_create(struct hub_info* hub, int sd);
+
+ /**
+ * Delete a user.
+ *
+ * !WRONG! If the user is logged in a quit message is issued.
+ */
+-extern void user_destroy(struct user* user);
++extern void user_destroy(struct uhub_user* user);
+
+ /**
+ * Will post a message that will delete the user later.
+ */
+-extern void user_schedule_destroy(struct user* user);
++extern void user_schedule_destroy(struct uhub_user* user);
+
+ /**
+ * Disconnect a user.
+@@ -165,36 +165,36 @@
+ * @param user User to disconnect
+ * @param reason See enum user_quit_reason
+ */
+-extern void user_disconnect(struct user* user, int reason);
++extern void user_disconnect(struct uhub_user* user, int reason);
+
+ /**
+ * This associates a INF message to the user.
+ * If the user already has a INF message associated, then this is
+ * released before setting the new one.
+ */
+-extern void user_set_info(struct user* user, struct adc_message* info);
++extern void user_set_info(struct uhub_user* user, struct adc_message* info);
+
+ /**
+ * Specify a user's state.
+ * NOTE: DON'T, unless you know what you are doing.
+ */
+-extern void user_set_state(struct user* user, enum user_state);
++extern void user_set_state(struct uhub_user* user, enum user_state);
+
+ /**
+ * Returns 1 if the user is in state state_normal, or 0 otherwise.
+ */
+-extern int user_is_logged_in(struct user* user);
++extern int user_is_logged_in(struct uhub_user* user);
+
+ /**
+ * Returns 1 if the user is in state_protocol, state_identify or state_verify.
+ * Returns 0 otherwise.
+ */
+-extern int user_is_connecting(struct user* user);
++extern int user_is_connecting(struct uhub_user* user);
+
+ /**
+ * Returns 1 only if the user is in state_cleanup or state_disconnected.
+ */
+-extern int user_is_disconnecting(struct user* user);
++extern int user_is_disconnecting(struct uhub_user* user);
+
+ /**
+ * User supports the protocol extension as given in fourcc.
+@@ -204,7 +204,7 @@
+ *
+ * @see enum user_flags
+ */
+-extern void user_support_add(struct user* user, int fourcc);
++extern void user_support_add(struct uhub_user* user, int fourcc);
+
+ /**
+ * User no longer supports the protocol extension as given in fourcc.
+@@ -212,26 +212,26 @@
+ * the hub.
+ * @see enum user_flags
+ */
+-extern void user_support_remove(struct user* user, int fourcc);
++extern void user_support_remove(struct uhub_user* user, int fourcc);
+
+ /**
+ * Sets the nat override flag for a user, this allows users on the same
+ * subnet as a natted hub to spoof their IP in order to use active mode
+ * on a natted hub.
+ */
+-extern void user_set_nat_override(struct user* user);
+-extern int user_is_nat_override(struct user* user);
++extern void user_set_nat_override(struct uhub_user* user);
++extern int user_is_nat_override(struct uhub_user* user);
+
+ /**
+ * Set a flag. @see enum user_flags
+ */
+-extern void user_flag_set(struct user* user, enum user_flags flag);
+-extern void user_flag_unset(struct user* user, enum user_flags flag);
++extern void user_flag_set(struct uhub_user* user, enum user_flags flag);
++extern void user_flag_unset(struct uhub_user* user, enum user_flags flag);
+
+ /**
+ * Get a flag. @see enum user_flags
+ */
+-extern int user_flag_get(struct user* user, enum user_flags flag);
++extern int user_flag_get(struct uhub_user* user, enum user_flags flag);
+
+ /**
+ * Check if a user supports 'feature' for feature casting (basis for 'Fxxx' messages)
+@@ -241,7 +241,7 @@
+ * @param feature a feature to lookup (example: 'TCP4' or 'UDP4')
+ * @return 1 if 'feature' supported, or 0 otherwise
+ */
+-extern int user_have_feature_cast_support(struct user* user, char feature[4]);
++extern int user_have_feature_cast_support(struct uhub_user* user, char feature[4]);
+
+ /**
+ * Set feature cast support for feature.
+@@ -249,12 +249,12 @@
+ * @param feature a feature to lookup (example: 'TCP4' or 'UDP4')
+ * @return 1 if 'feature' supported, or 0 otherwise
+ */
+-extern int user_set_feature_cast_support(struct user* u, char feature[4]);
++extern int user_set_feature_cast_support(struct uhub_user* u, char feature[4]);
+
+ /**
+ * Remove all feature cast support features.
+ */
+-extern void user_clear_feature_cast_support(struct user* u);
++extern void user_clear_feature_cast_support(struct uhub_user* u);
+
+
+
+--- a/src/usermanager.c
++++ b/src/usermanager.c
+@@ -27,7 +27,7 @@
+ {
+ if (ptr)
+ {
+- struct user* u = (struct user*) ptr;
++ struct uhub_user* u = (struct uhub_user*) ptr;
+
+ /* Mark the user as already being disconnected.
+ * This prevents the hub from trying to send
+@@ -81,10 +81,10 @@
+
+ int user_manager_init(struct hub_info* hub)
+ {
+- struct user_manager* users = NULL;
++ struct uhub_user_manager* users = NULL;
+ struct timeval timeout = { TIMEOUT_STATS, 0 };
+
+- users = (struct user_manager*) hub_malloc_zero(sizeof(struct user_manager));
++ users = (struct uhub_user_manager*) hub_malloc_zero(sizeof(struct uhub_user_manager));
+
+ users->list = list_create();
+ users->free_sid = 1;
+@@ -106,7 +106,7 @@
+
+ void user_manager_shutdown(struct hub_info* hub)
+ {
+- struct user_manager* users = hub->users;
++ struct uhub_user_manager* users = hub->users;
+ event_del(&hub->ev_timer);
+
+ list_clear(users->list, &clear_user_list_callback);
+@@ -115,7 +115,7 @@
+ }
+
+
+-void user_manager_add(struct user* user)
++void user_manager_add(struct uhub_user* user)
+ {
+ list_append(user->hub->users->list, user);
+ user->hub->users->count++;
+@@ -125,7 +125,7 @@
+ user->hub->users->shared_files += user->limits.shared_files;
+ }
+
+-void user_manager_remove(struct user* user)
++void user_manager_remove(struct uhub_user* user)
+ {
+ list_remove(user->hub->users->list, user);
+ user->hub->users->count--;
+@@ -135,50 +135,50 @@
+ }
+
+
+-struct user* get_user_by_sid(struct hub_info* hub, sid_t sid)
++struct uhub_user* get_user_by_sid(struct hub_info* hub, sid_t sid)
+ {
+- struct user* user = (struct user*) list_get_first(hub->users->list); /* iterate users */
++ struct uhub_user* user = (struct uhub_user*) list_get_first(hub->users->list); /* iterate users */
+ while (user)
+ {
+ if (user->id.sid == sid)
+ return user;
+- user = (struct user*) list_get_next(hub->users->list);
++ user = (struct uhub_user*) list_get_next(hub->users->list);
+ }
+ return NULL;
+ }
+
+
+-struct user* get_user_by_cid(struct hub_info* hub, const char* cid)
++struct uhub_user* get_user_by_cid(struct hub_info* hub, const char* cid)
+ {
+- struct user* user = (struct user*) list_get_first(hub->users->list); /* iterate users - only on incoming INF msg */
++ struct uhub_user* user = (struct uhub_user*) list_get_first(hub->users->list); /* iterate users - only on incoming INF msg */
+ while (user)
+ {
+ if (strcmp(user->id.cid, cid) == 0)
+ return user;
+- user = (struct user*) list_get_next(hub->users->list);
++ user = (struct uhub_user*) list_get_next(hub->users->list);
+ }
+ return NULL;
+ }
+
+
+-struct user* get_user_by_nick(struct hub_info* hub, const char* nick)
++struct uhub_user* get_user_by_nick(struct hub_info* hub, const char* nick)
+ {
+- struct user* user = (struct user*) list_get_first(hub->users->list); /* iterate users - only on incoming INF msg */
++ struct uhub_user* user = (struct uhub_user*) list_get_first(hub->users->list); /* iterate users - only on incoming INF msg */
+ while (user)
+ {
+ if (strcmp(user->id.nick, nick) == 0)
+ return user;
+- user = (struct user*) list_get_next(hub->users->list);
++ user = (struct uhub_user*) list_get_next(hub->users->list);
+ }
+ return NULL;
+ }
+
+
+-int send_user_list(struct user* target)
++int send_user_list(struct uhub_user* target)
+ {
+ int ret = 1;
+ user_flag_set(target, flag_user_list);
+- struct user* user = (struct user*) list_get_first(target->hub->users->list); /* iterate users - only on INF or PAS msg */
++ struct uhub_user* user = (struct uhub_user*) list_get_first(target->hub->users->list); /* iterate users - only on INF or PAS msg */
+ while (user)
+ {
+ if (user_is_logged_in(user))
+@@ -187,7 +187,7 @@
+ if (!ret)
+ break;
+ }
+- user = (struct user*) list_get_next(user->hub->users->list);
++ user = (struct uhub_user*) list_get_next(user->hub->users->list);
+ }
+
+ if (!target->send_queue_size)
+@@ -198,7 +198,7 @@
+ }
+
+
+-void send_quit_message(struct user* leaving)
++void send_quit_message(struct uhub_user* leaving)
+ {
+ struct adc_message* command = adc_msg_construct(ADC_CMD_IQUI, 6);
+ adc_msg_add_argument(command, (const char*) sid_to_string(leaving->id.sid));
+@@ -216,8 +216,8 @@
+ sid_t user_manager_get_free_sid(struct hub_info* hub)
+ {
+ #if 0
+- struct user* user;
+- user = (struct user*) list_get_first(hub->users->list); /* iterate normal users */
++ struct uhub_user* user;
++ user = (struct uhub_user*) list_get_first(hub->users->list); /* iterate normal users */
+ while (user)
+ {
+ if (user->sid == hub->users->free_sid)
+@@ -226,7 +226,7 @@
+ if (hub->users->free_sid >= SID_MAX) hub->users->free_sid = 1;
+ break;
+ }
+- user = (struct user*) list_get_next(hub->users->list);
++ user = (struct uhub_user*) list_get_next(hub->users->list);
+ }
+ #endif
+ return hub->users->free_sid++;
+--- a/src/usermanager.h
++++ b/src/usermanager.h
+@@ -20,7 +20,7 @@
+ #ifndef HAVE_UHUB_USER_MANAGER_H
+ #define HAVE_UHUB_USER_MANAGER_H
+
+-struct user_manager
++struct uhub_user_manager
+ {
+ size_t count; /**<< "Number of all fully connected and logged in users" */
+ size_t count_peak; /**<< "Peak number of users" */
+@@ -51,14 +51,14 @@
+ /**
+ * Add a new user to the user manager.
+ */
+-extern void user_manager_add(struct user* user);
++extern void user_manager_add(struct uhub_user* user);
+
+ /**
+ * Remove a user from the user manager.
+ * This user is connected, and will be moved to the leaving queue, pending
+ * all messages in the message queue, and resource cleanup.
+ */
+-extern void user_manager_remove(struct user* user);
++extern void user_manager_remove(struct uhub_user* user);
+
+ /**
+ * Returns a free sid for a new user.
+@@ -70,19 +70,19 @@
+ * NOTE: This will only search connected users.
+ * @return a user if found, or NULL if not found
+ */
+-extern struct user* get_user_by_sid(struct hub_info* hub, sid_t sid);
++extern struct uhub_user* get_user_by_sid(struct hub_info* hub, sid_t sid);
+
+ /**
+ * Lookup a user based on the client ID (cid).
+ * @return a user if found, or NULL if not found
+ */
+-extern struct user* get_user_by_cid(struct hub_info* hub, const char* cid);
++extern struct uhub_user* get_user_by_cid(struct hub_info* hub, const char* cid);
+
+ /**
+ * Lookup a user based on the nick name.
+ * @return a user if found, or NULL if not found
+ */
+-extern struct user* get_user_by_nick(struct hub_info* hub, const char* nick);
++extern struct uhub_user* get_user_by_nick(struct hub_info* hub, const char* nick);
+
+ /**
+ * Send the user list of connected clients to 'user'.
+@@ -90,13 +90,13 @@
+ *
+ * @return 1 if sending the user list succeeded, 0 otherwise.
+ */
+-extern int send_user_list(struct user* user);
++extern int send_user_list(struct uhub_user* user);
+
+ /**
+ * Send a quit message to all connected users when 'user' is
+ * leaving the hub (for whatever reason).
+ */
+-extern void send_quit_message(struct user* user);
++extern void send_quit_message(struct uhub_user* user);
+
+
+ #endif /* HAVE_UHUB_USER_MANAGER_H */