From 7801d174d79af9885e98261afed92f3d6b63a94b Mon Sep 17 00:00:00 2001
From: William Pitcock <nenolod@dereferenced.org>
Date: Thu, 10 Dec 2015 02:19:21 -0600
Subject: [PATCH] Revert "extban: implement helper functions for stackable
 extbans (part 1) (ref #74)"

This reverts commit 304bd0d095917d8dffca8567768e4cada4a8748b.
---
 doc/extban.txt    | 11 ++---------
 include/channel.h |  1 -
 src/extban.c      | 43 -------------------------------------------
 3 files changed, 2 insertions(+), 53 deletions(-)

diff --git a/doc/extban.txt b/doc/extban.txt
index 6f9c8460..79e71ca5 100644
--- a/doc/extban.txt
+++ b/doc/extban.txt
@@ -88,12 +88,5 @@ The function is called whenever a (local) client needs to be checked against
 a +bqeI entry of the given extban type, and whenever a local client tries to
 add such an entry. (Clients are allowed to add bans matching themselves.)
 
-There is a convenience function which allows extbans to be stacked:
-extern int match_child(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type);
-
-The arguments are as follows:
-banstr: the text after the parent banstr (extb functions already get the mask this way)
-client_p: the client to check; this is always a local client, which may be
-on or off channel
-chptr: the channel
-mode_type: CHFL_BAN, CHFL_QUIET, CHFL_EXCEPTION or CHFL_INVEX
+-- 
+$Id: extban.txt 1639 2006-06-04 23:26:47Z jilles $
diff --git a/include/channel.h b/include/channel.h
index 57949379..2304aa4b 100644
--- a/include/channel.h
+++ b/include/channel.h
@@ -266,7 +266,6 @@ extern struct Ban * del_id(struct Channel *chptr, const char *banid, rb_dlink_li
 
 extern ExtbanFunc extban_table[256];
 
-extern int match_child(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type);
 extern int match_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type);
 extern int valid_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type);
 const char * get_extban_string(void);
diff --git a/src/extban.c b/src/extban.c
index 5dc02616..8890fcca 100644
--- a/src/extban.c
+++ b/src/extban.c
@@ -26,52 +26,9 @@
 #include "channel.h"
 #include "client.h"
 #include "common.h"
-#include "ipv4_from_ipv6.h"
 
 ExtbanFunc extban_table[256] = { NULL };
 
-int
-match_child(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type)
-{
-	char src_host[NICKLEN + USERLEN + HOSTLEN + 6];
-	char src_iphost[NICKLEN + USERLEN + HOSTLEN + 6];
-	char src_althost[NICKLEN + USERLEN + HOSTLEN + 6];
-	char src_ip4host[NICKLEN + USERLEN + HOSTLEN + 6];
-	struct sockaddr_in ip4;
-	char *s = src_host, *s2 = src_iphost, *s3 = NULL, *s4 = NULL;
-
-	if (*banstr == '$')
-		return match_extban(banstr, client_p, chptr, mode_type) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
-
-	rb_sprintf(src_host, "%s!%s@%s", client_p->name, client_p->username, client_p->host);
-	rb_sprintf(src_iphost, "%s!%s@%s", client_p->name, client_p->username, client_p->sockhost);
-
-	/* handle hostmangling if necessary */
-	if (client_p->localClient->mangledhost != NULL)
-	{
-		if (!strcmp(client_p->host, client_p->localClient->mangledhost))
-			rb_sprintf(src_althost, "%s!%s@%s", client_p->name, client_p->username, client_p->orighost);
-		else if (!IsDynSpoof(client_p))
-			rb_sprintf(src_althost, "%s!%s@%s", client_p->name, client_p->username, client_p->localClient->mangledhost);
-
-		s3 = src_althost;
-	}
-
-#ifdef RB_IPV6
-	/* handle Teredo if necessary */
-	if (client_p->localClient->ip.ss_family == AF_INET6 && ipv4_from_ipv6((const struct sockaddr_in6 *) &client_p->localClient->ip, &ip4))
-	{
-		rb_sprintf(src_ip4host, "%s!%s@", client_p->name, client_p->username);
-		s4 = src_ip4host + strlen(src_ip4host);
-		rb_inet_ntop_sock((struct sockaddr *)&ip4,
-				s4, src_ip4host + sizeof src_ip4host - s4);
-		s4 = src_ip4host;
-	}
-#endif
-
-	return match(banstr, s) || match(banstr, s2) || (s3 != NULL && match(banstr, s3)) || (s4 != NULL && match(banstr, s4)) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
-}
-
 int
 match_extban(const char *banstr, struct Client *client_p, struct Channel *chptr, long mode_type)
 {