+struct Client *make_remote_server(struct Client *uplink)
+{
+ return make_remote_server_name(uplink, TEST_SERVER_NAME);
+}
+
+struct Client *make_remote_server_name(struct Client *uplink, const char *name)
+{
+ return make_remote_server_full(uplink, name, "");
+}
+
+struct Client *make_remote_server_full(struct Client *uplink, const char *name, const char *id)
+{
+ struct Client *client;
+
+ client = make_client(NULL);
+ client->servptr = uplink;
+ client->localClient->localflags |= LFLAGS_FAKE;
+
+ attach_server_conf(client, find_server_conf(name));
+
+ rb_strlcpy(client->name, name, sizeof(client->name));
+ rb_strlcpy(client->id, id, sizeof(client->id));
+
+ rb_dlinkAdd(client, &client->lnode, &uplink->serv->servers);
+ rb_dlinkMoveNode(&client->localClient->tnode, &unknown_list, &serv_list);
+ rb_dlinkAddTailAlloc(client, &global_serv_list);
+
+ make_server(client);
+ SetServer(client);
+
+ add_to_client_hash(client->name, client);
+ if (strlen(id))
+ add_to_id_hash(client->id, client);
+
+ return client;
+}
+
+struct Client *make_remote_person(struct Client *server)
+{
+ return make_remote_person_nick(server, TEST_REMOTE_NICK);
+}
+
+struct Client *make_remote_person_nick(struct Client *server, const char *nick)
+{
+ return make_remote_person_full(server, nick, TEST_USERNAME, TEST_HOSTNAME, TEST_IP, TEST_REALNAME);
+}
+
+struct Client *make_remote_person_full(struct Client *server, const char *nick, const char *username, const char *hostname, const char *ip, const char *realname)
+{
+ struct Client *client;
+ struct sockaddr_storage addr;
+
+ client = make_client(server);
+ make_user(client);
+ SetRemoteClient(client);
+
+ client->servptr = server;
+ rb_dlinkAdd(server, &server->lnode, &server->servptr->serv->users);
+
+ rb_inet_pton_sock(ip, &addr);
+ rb_strlcpy(client->name, nick, sizeof(client->name));
+ rb_strlcpy(client->username, username, sizeof(client->username));
+ rb_strlcpy(client->host, hostname, sizeof(client->host));
+ rb_inet_ntop_sock((struct sockaddr *)&addr, client->sockhost, sizeof(client->sockhost));
+ rb_strlcpy(client->info, realname, sizeof(client->info));
+
+ add_to_client_hash(nick, client);
+ add_to_hostname_hash(client->host, client);
+
+ return client;
+}
+
+void make_remote_person_oper(struct Client *client)
+{
+ rb_dlinkAddAlloc(client, &oper_list);
+ SetOper(client);
+}
+
+void remove_remote_person(struct Client *client)
+{
+ exit_client(client, client->servptr, client->servptr, "Test client removed");
+}
+
+void remove_remote_server(struct Client *server)
+{
+ exit_client(server, server, server->servptr, "Test server removed");
+}
+
+struct Channel *make_channel(void)
+{
+ return allocate_channel(TEST_CHANNEL);
+}
+