+/** Check whether a client is allowed to connect remotely.
+ * @param[in] cptr Client that has connected.
+ * @param[in] is_burst Non-zero if client was introduced during a burst.
+ * @return Non-zero if the client should be accepted, zero if they must be killed.
+ */
+int IPcheck_remote_connect(struct Client *cptr, int is_burst)
+{
+ assert(0 != cptr);
+ assert(!IsIPChecked(cptr));
+ return ip_registry_check_remote(cptr, is_burst);
+}
+
+/** Handle a client being rejected during connection through no fault
+ * of their own. This "undoes" the effect of ip_registry_check_local()
+ * so the client's address is not penalized for the failure.
+ * @param[in] cptr Client who has been rejected.
+ * @param[in] disconnect If true, also count the client as disconnecting.
+ */
+void IPcheck_connect_fail(const struct Client *cptr, int disconnect)
+{
+ assert(IsIPChecked(cptr));
+ ip_registry_connect_fail(&cli_ip(cptr), disconnect);
+}
+
+/** Handle a client that has successfully connected.
+ * This copies free target information to \a cptr from his address's
+ * registry entry and sends him a NOTICE describing the parameters for
+ * the entry.
+ * @param[in,out] cptr Client that has successfully connected.
+ */
+void IPcheck_connect_succeeded(struct Client *cptr)
+{
+ assert(0 != cptr);
+ assert(IsIPChecked(cptr));
+ ip_registry_connect_succeeded(cptr);
+}
+
+/** Handle a client that decided to disconnect (or was killed after
+ * completing his connection). This updates the free target
+ * information for his IP registry entry.
+ * @param[in] cptr Client that has exited.
+ */
+void IPcheck_disconnect(struct Client *cptr)
+{
+ assert(0 != cptr);
+ assert(IsIPChecked(cptr));
+ ip_registry_disconnect(cptr);
+}
+
+/** Find number of clones of a client.
+ * @param[in] cptr Client whose address to look up.
+ * @return Number of clients known to be connected from that address.
+ */
+unsigned short IPcheck_nr(struct Client *cptr)
+{
+ assert(0 != cptr);
+ return ip_registry_count(&cli_ip(cptr));
+}