Make ebtables library functions
diff --git a/extensions/ebt_802_3.c b/extensions/ebt_802_3.c
index 52b05aa..f76b20a 100644
--- a/extensions/ebt_802_3.c
+++ b/extensions/ebt_802_3.c
@@ -43,8 +43,8 @@
 
 	switch (c) {
 		case _802_3_SAP:
-			check_option(flags, _802_3_SAP);
-			if (check_inverse(optarg))
+			ebt_check_option(flags, _802_3_SAP);
+			if (ebt_check_inverse(optarg))
 				info->invflags |= EBT_802_3_SAP;
 
 			if (optind > argc)
@@ -57,8 +57,8 @@
 			info->bitmask |= EBT_802_3_SAP;
 			break;
 		case _802_3_TYPE:
-			check_option(flags, _802_3_TYPE);
-			if (check_inverse(optarg))
+			ebt_check_option(flags, _802_3_TYPE);
+			if (ebt_check_inverse(optarg))
 				info->invflags |= EBT_802_3_TYPE;
 			if (optind > argc)
 				print_error("Missing 802.3-type argument");
@@ -141,5 +141,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	        register_match(&_802_3_match);
+	ebt_register_match(&_802_3_match);
 }
diff --git a/extensions/ebt_among.c b/extensions/ebt_among.c
index b865ca2..9427038 100644
--- a/extensions/ebt_among.c
+++ b/extensions/ebt_among.c
@@ -41,8 +41,8 @@
 {
 	printf(
 "`among' options:\n"
-"--among-dst [!] list          : matches if ether dst is in list\n"
-"--among-src [!] list          : matches if ether src is in list\n"
+"--among-dst [!] list           : matches if ether dst is in list\n"
+"--among-src [!] list           : matches if ether src is in list\n"
 "list has form:\n"
 " xx:xx:xx:xx:xx:xx[=ip.ip.ip.ip],yy:yy:yy:yy:yy:yy[=ip.ip.ip.ip]"
 ",...,zz:zz:zz:zz:zz:zz[=ip.ip.ip.ip][,]\n"
@@ -295,7 +295,7 @@
 	switch (c) {
 	case AMONG_DST:
 	case AMONG_SRC:
-		if (check_inverse(optarg)) {
+		if (ebt_check_inverse(optarg)) {
 			if (c == AMONG_DST)
 				info->bitmask |= EBT_AMONG_DST_NEG;
 			else
@@ -314,11 +314,11 @@
 		h->match_size = new_size - sizeof(struct ebt_entry_match);
 		info = (struct ebt_among_info *) h->data;
 		if (c == AMONG_DST) {
-			check_option(flags, OPT_DST);
+			ebt_check_option(flags, OPT_DST);
 			info->wh_dst_ofs =
 			    old_size - sizeof(struct ebt_entry_match);
 		} else {
-			check_option(flags, OPT_SRC);
+			ebt_check_option(flags, OPT_SRC);
 			info->wh_src_ofs =
 			    old_size - sizeof(struct ebt_entry_match);
 		}
@@ -364,7 +364,7 @@
 		const struct ebt_mac_wormhash_tuple *p;
 
 		p = (const struct ebt_mac_wormhash_tuple *)(&wh->pool[i]);
-		print_mac(((const char *) &p->cmp[0]) + 2);
+		ebt_print_mac(((const char *) &p->cmp[0]) + 2);
 		if (p->ip) {
 			ip = (unsigned char *) &p->ip;
 			printf("=%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]);
@@ -439,5 +439,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_match(&among_match);
+	ebt_register_match(&among_match);
 }
diff --git a/extensions/ebt_arp.c b/extensions/ebt_arp.c
index 7b00b78..a60d6a7 100644
--- a/extensions/ebt_arp.c
+++ b/extensions/ebt_arp.c
@@ -71,11 +71,6 @@
 	arpinfo->bitmask = 0;
 }
 
-/* defined in ebt_ip.c */
-void parse_ip_address(char *address, uint32_t *addr, uint32_t *msk);
-
-/* defined in ebtables.c */
-int get_mac_and_mask(char *from, char *to, char *mask);
 
 #define OPT_OPCODE 0x01
 #define OPT_HTYPE  0x02
@@ -97,8 +92,8 @@
 
 	switch (c) {
 	case ARP_OPCODE:
-		check_option(flags, OPT_OPCODE);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, OPT_OPCODE);
+		if (ebt_check_inverse(optarg))
 			arpinfo->invflags |= EBT_ARP_OPCODE;
 
 		if (optind > argc)
@@ -118,8 +113,8 @@
 		break;
 
 	case ARP_HTYPE:
-		check_option(flags, OPT_HTYPE);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, OPT_HTYPE);
+		if (ebt_check_inverse(optarg))
 			arpinfo->invflags |= EBT_ARP_HTYPE;
 
 		if (optind > argc)
@@ -140,8 +135,8 @@
 	{
 		uint16_t proto;
 
-		check_option(flags, OPT_PTYPE);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, OPT_PTYPE);
+		if (ebt_check_inverse(optarg))
 			arpinfo->invflags |= EBT_ARP_PTYPE;
 
 		if (optind > argc)
@@ -166,17 +161,17 @@
 	case ARP_IP_S:
 	case ARP_IP_D:
 		if (c == ARP_IP_S) {
-			check_option(flags, OPT_IP_S);
+			ebt_check_option(flags, OPT_IP_S);
 			addr = &arpinfo->saddr;
 			mask = &arpinfo->smsk;
 			arpinfo->bitmask |= EBT_ARP_SRC_IP;
 		} else {
-			check_option(flags, OPT_IP_D);
+			ebt_check_option(flags, OPT_IP_D);
 			addr = &arpinfo->daddr;
 			mask = &arpinfo->dmsk;
 			arpinfo->bitmask |= EBT_ARP_DST_IP;
 		}
-		if (check_inverse(optarg)) {
+		if (ebt_check_inverse(optarg)) {
 			if (c == ARP_IP_S)
 				arpinfo->invflags |= EBT_ARP_SRC_IP;
 			else
@@ -184,23 +179,23 @@
 		}
 		if (optind > argc)
 			print_error("Missing ARP IP address argument");
-		parse_ip_address(argv[optind - 1], addr, mask);
+		ebt_parse_ip_address(argv[optind - 1], addr, mask);
 		break;
 
 	case ARP_MAC_S:
 	case ARP_MAC_D:
 		if (c == ARP_MAC_S) {
-			check_option(flags, OPT_MAC_S);
+			ebt_check_option(flags, OPT_MAC_S);
 			maddr = arpinfo->smaddr;
 			mmask = arpinfo->smmsk;
 			arpinfo->bitmask |= EBT_ARP_SRC_MAC;
 		} else {
-			check_option(flags, OPT_MAC_D);
+			ebt_check_option(flags, OPT_MAC_D);
 			maddr = arpinfo->dmaddr;
 			mmask = arpinfo->dmmsk;
 			arpinfo->bitmask |= EBT_ARP_DST_MAC;
 		}
-		if (check_inverse(optarg)) {
+		if (ebt_check_inverse(optarg)) {
 			if (c == ARP_MAC_S)
 				arpinfo->invflags |= EBT_ARP_SRC_MAC;
 			else
@@ -208,7 +203,7 @@
 		}
 		if (optind > argc)
 			print_error("Missing ARP MAC address argument");
-		if (get_mac_and_mask(argv[optind - 1], maddr, mmask))
+		if (ebt_get_mac_and_mask(argv[optind - 1], maddr, mmask))
 			print_error("Problem with ARP MAC address argument");
 		break;
 
@@ -228,9 +223,6 @@
 		            "specified as ARP or RARP");
 }
 
-/* defined in the ebt_ip.c */
-char *mask_to_dotted(uint32_t mask);
-
 static void print(const struct ebt_u_entry *entry,
    const struct ebt_entry_match *match)
 {
@@ -272,7 +264,7 @@
 		for (i = 0; i < 4; i++)
 			printf("%d%s", ((unsigned char *)&arpinfo->saddr)[i],
 			   (i == 3) ? "" : ".");
-		printf("%s ", mask_to_dotted(arpinfo->smsk));
+		printf("%s ", ebt_mask_to_dotted(arpinfo->smsk));
 	}
 	if (arpinfo->bitmask & EBT_ARP_DST_IP) {
 		printf("--arp-ip-dst ");
@@ -281,20 +273,20 @@
 		for (i = 0; i < 4; i++)
 			printf("%d%s", ((unsigned char *)&arpinfo->daddr)[i],
 			   (i == 3) ? "" : ".");
-		printf("%s ", mask_to_dotted(arpinfo->dmsk));
+		printf("%s ", ebt_mask_to_dotted(arpinfo->dmsk));
 	}
 	if (arpinfo->bitmask & EBT_ARP_SRC_MAC) {
 		printf("--arp-mac-src ");
 		if (arpinfo->invflags & EBT_ARP_SRC_MAC)
 			printf("! ");
-		print_mac_and_mask(arpinfo->smaddr, arpinfo->smmsk);
+		ebt_print_mac_and_mask(arpinfo->smaddr, arpinfo->smmsk);
 		printf(" ");
 	}
 	if (arpinfo->bitmask & EBT_ARP_DST_MAC) {
 		printf("--arp-mac-dst ");
 		if (arpinfo->invflags & EBT_ARP_DST_MAC)
 			printf("! ");
-		print_mac_and_mask(arpinfo->dmaddr, arpinfo->dmmsk);
+		ebt_print_mac_and_mask(arpinfo->dmaddr, arpinfo->dmmsk);
 		printf(" ");
 	}
 }
@@ -364,5 +356,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_match(&arp_match);
+	ebt_register_match(&arp_match);
 }
diff --git a/extensions/ebt_arpreply.c b/extensions/ebt_arpreply.c
index 7e5f113..d524253 100644
--- a/extensions/ebt_arpreply.c
+++ b/extensions/ebt_arpreply.c
@@ -48,7 +48,7 @@
 
 	switch (c) {
 	case REPLY_MAC:
-		check_option(flags, OPT_REPLY_MAC);
+		ebt_check_option(flags, OPT_REPLY_MAC);
 		if (!(addr = ether_aton(optarg)))
 			print_error("Problem with specified "
 			            "--arpreply-mac mac");
@@ -56,7 +56,7 @@
 		mac_supplied = 1;
 		break;
 	case REPLY_TARGET:
-		check_option(flags, OPT_REPLY_TARGET);
+		ebt_check_option(flags, OPT_REPLY_TARGET);
 		if (FILL_TARGET(optarg, replyinfo->target))
 			print_error("Illegal --arpreply-target target");
 		break;
@@ -94,7 +94,7 @@
 	   (struct ebt_arpreply_info *)target->data;
 
 	printf("--arpreply-mac ");
-	print_mac(replyinfo->mac);
+	ebt_print_mac(replyinfo->mac);
 	if (replyinfo->target == EBT_DROP)
 		return;
 	printf(" --arpreply-target %s", TARGET_NAME(replyinfo->target));
@@ -128,5 +128,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_target(&arpreply_target);
+	ebt_register_target(&arpreply_target);
 }
diff --git a/extensions/ebt_ip.c b/extensions/ebt_ip.c
index b836bae..f93b8b9 100644
--- a/extensions/ebt_ip.c
+++ b/extensions/ebt_ip.c
@@ -57,111 +57,7 @@
 	{ 0 }
 };
 
-/* put the ip string into 4 bytes */
-static int undot_ip(char *ip, unsigned char *ip2)
-{
-	char *p, *q, *end;
-	long int onebyte;
-	int i;
-	char buf[20];
-
-	strncpy(buf, ip, sizeof(buf) - 1);
-
-	p = buf;
-	for (i = 0; i < 3; i++) {
-		if ((q = strchr(p, '.')) == NULL)
-			return -1;
-		*q = '\0';
-		onebyte = strtol(p, &end, 10);
-		if (*end != '\0' || onebyte > 255 || onebyte < 0)
-			return -1;
-		ip2[i] = (unsigned char)onebyte;
-		p = q + 1;
-	}
-
-	onebyte = strtol(p, &end, 10);
-	if (*end != '\0' || onebyte > 255 || onebyte < 0)
-		return -1;
-	ip2[3] = (unsigned char)onebyte;
-
-	return 0;
-}
-
 /* put the mask into 4 bytes */
-static int ip_mask(char *mask, unsigned char *mask2)
-{
-	char *end;
-	long int bits;
-	uint32_t mask22;
-
-	if (undot_ip(mask, mask2)) {
-		/* not the /a.b.c.e format, maybe the /x format */
-		bits = strtol(mask, &end, 10);
-		if (*end != '\0' || bits > 32 || bits < 0)
-			return -1;
-		if (bits != 0) {
-			mask22 = htonl(0xFFFFFFFF << (32 - bits));
-			memcpy(mask2, &mask22, 4);
-		} else {
-			mask22 = 0xFFFFFFFF;
-			memcpy(mask2, &mask22, 4);
-		}
-	}
-	return 0;
-}
-
-/* set the ip mask and ip address */
-void parse_ip_address(char *address, uint32_t *addr, uint32_t *msk)
-{
-	char *p;
-
-	/* first the mask */
-	if ((p = strrchr(address, '/')) != NULL) {
-		*p = '\0';
-		if (ip_mask(p + 1, (unsigned char *)msk))
-			print_error("Problem with the IP mask");
-	}
-	else
-		*msk = 0xFFFFFFFF;
-
-	if (undot_ip(address, (unsigned char *)addr))
-		print_error("Problem with the IP address");
-	*addr = *addr & *msk;
-}
-
-/* transform the ip mask into a string ready for output */
-char *mask_to_dotted(uint32_t mask)
-{
-	int i;
-	static char buf[20];
-	uint32_t maskaddr, bits;
-
-	maskaddr = ntohl(mask);
-
-	/* don't print /32 */
-	if (mask == 0xFFFFFFFFL) {
-		*buf = '\0';
-		return buf;
-	}
-
-	i = 32;
-	bits = 0xFFFFFFFEL; /* case 0xFFFFFFFF has just been dealt with */
-	while (--i >= 0 && maskaddr != bits)
-		bits <<= 1;
-
-	if (i > 0)
-		sprintf(buf, "/%d", i);
-	else if (!i)
-		*buf = '\0';
-	else
-		/* mask was not a decent combination of 1's and 0's */
-		sprintf(buf, "/%d.%d.%d.%d", ((unsigned char *)&mask)[0],
-		   ((unsigned char *)&mask)[1], ((unsigned char *)&mask)[2],
-		   ((unsigned char *)&mask)[3]);
-
-	return buf;
-}
-
 /* transform a protocol and service name into a port number */
 static uint16_t parse_port(const char *protocol, const char *name)
 {
@@ -247,15 +143,15 @@
 
 	switch (c) {
 	case IP_SOURCE:
-		check_option(flags, OPT_SOURCE);
+		ebt_check_option(flags, OPT_SOURCE);
 		ipinfo->bitmask |= EBT_IP_SOURCE;
 
 	case IP_DEST:
 		if (c == IP_DEST) {
-			check_option(flags, OPT_DEST);
+			ebt_check_option(flags, OPT_DEST);
 			ipinfo->bitmask |= EBT_IP_DEST;
 		}
-		if (check_inverse(optarg)) {
+		if (ebt_check_inverse(optarg)) {
 			if (c == IP_SOURCE)
 				ipinfo->invflags |= EBT_IP_SOURCE;
 			else
@@ -265,24 +161,24 @@
 		if (optind > argc)
 			print_error("Missing IP address argument");
 		if (c == IP_SOURCE)
-			parse_ip_address(argv[optind - 1], &ipinfo->saddr,
+			ebt_parse_ip_address(argv[optind - 1], &ipinfo->saddr,
 			   &ipinfo->smsk);
 		else
-			parse_ip_address(argv[optind - 1], &ipinfo->daddr,
+			ebt_parse_ip_address(argv[optind - 1], &ipinfo->daddr,
 			   &ipinfo->dmsk);
 		break;
 
 	case IP_SPORT:
 	case IP_DPORT:
 		if (c == IP_SPORT) {
-			check_option(flags, OPT_SPORT);
+			ebt_check_option(flags, OPT_SPORT);
 			ipinfo->bitmask |= EBT_IP_SPORT;
-			if (check_inverse(optarg))
+			if (ebt_check_inverse(optarg))
 				ipinfo->invflags |= EBT_IP_SPORT;
 		} else {
-			check_option(flags, OPT_DPORT);
+			ebt_check_option(flags, OPT_DPORT);
 			ipinfo->bitmask |= EBT_IP_DPORT;
-			if (check_inverse(optarg))
+			if (ebt_check_inverse(optarg))
 				ipinfo->invflags |= EBT_IP_DPORT;
 		}
 		if (optind > argc)
@@ -294,8 +190,8 @@
 		break;
 
 	case IP_myTOS:
-		check_option(flags, OPT_TOS);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, OPT_TOS);
+		if (ebt_check_inverse(optarg))
 			ipinfo->invflags |= EBT_IP_TOS;
 
 		if (optind > argc)
@@ -308,8 +204,8 @@
 		break;
 
 	case IP_PROTO:
-		check_option(flags, OPT_PROTO);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, OPT_PROTO);
+		if (ebt_check_inverse(optarg))
 			ipinfo->invflags |= EBT_IP_PROTO;
 		if (optind > argc)
 			print_error("Missing IP protocol argument");
@@ -366,7 +262,7 @@
 		for (j = 0; j < 4; j++)
 			printf("%d%s",((unsigned char *)&ipinfo->saddr)[j],
 			   (j == 3) ? "" : ".");
-		printf("%s ", mask_to_dotted(ipinfo->smsk));
+		printf("%s ", ebt_mask_to_dotted(ipinfo->smsk));
 	}
 	if (ipinfo->bitmask & EBT_IP_DEST) {
 		printf("--ip-dst ");
@@ -375,7 +271,7 @@
 		for (j = 0; j < 4; j++)
 			printf("%d%s", ((unsigned char *)&ipinfo->daddr)[j],
 			   (j == 3) ? "" : ".");
-		printf("%s ", mask_to_dotted(ipinfo->dmsk));
+		printf("%s ", ebt_mask_to_dotted(ipinfo->dmsk));
 	}
 	if (ipinfo->bitmask & EBT_IP_TOS) {
 		printf("--ip-tos ");
@@ -471,5 +367,5 @@
 static void _init(void) __attribute((constructor));
 static void _init(void)
 {
-	register_match(&ip_match);
+	ebt_register_match(&ip_match);
 }
diff --git a/extensions/ebt_limit.c b/extensions/ebt_limit.c
index bf322b8..490686d 100644
--- a/extensions/ebt_limit.c
+++ b/extensions/ebt_limit.c
@@ -120,16 +120,16 @@
 
 	switch(c) {
 	case ARG_LIMIT:
-		check_option(flags, FLAG_LIMIT);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, FLAG_LIMIT);
+		if (ebt_check_inverse(optarg))
 			print_error("Unexpected `!' after --limit");
 		if (!parse_rate(optarg, &r->avg))
 			print_error("bad rate `%s'", optarg);
 		break;
 
 	case ARG_LIMIT_BURST:
-		check_option(flags, FLAG_LIMIT_BURST);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, FLAG_LIMIT_BURST);
+		if (ebt_check_inverse(optarg))
 			print_error("Unexpected `!' after --limit-burst");
 
 		if (string_to_number(optarg, 0, 10000, &num) == -1)
@@ -217,5 +217,5 @@
 static void _init(void) __attribute((constructor));
 static void _init(void)
 {
-	register_match(&limit_match);
+	ebt_register_match(&limit_match);
 }
diff --git a/extensions/ebt_log.c b/extensions/ebt_log.c
index 2892348..953211e 100644
--- a/extensions/ebt_log.c
+++ b/extensions/ebt_log.c
@@ -103,14 +103,14 @@
 
 	switch (c) {
 	case LOG_PREFIX:
-		check_option(flags, OPT_PREFIX);
+		ebt_check_option(flags, OPT_PREFIX);
 		if (strlen(optarg) > sizeof(loginfo->prefix) - 1)
 			print_error("Prefix too long");
 		strcpy(loginfo->prefix, optarg);
 		break;
 
 	case LOG_LEVEL:
-		check_option(flags, OPT_LEVEL);
+		ebt_check_option(flags, OPT_LEVEL);
 		i = strtol(optarg, &end, 16);
 		if (*end != '\0' || i < 0 || i > 7)
 			loginfo->loglevel = name_to_loglevel(optarg);
@@ -121,17 +121,17 @@
 		break;
 
 	case LOG_IP:
-		check_option(flags, OPT_IP);
+		ebt_check_option(flags, OPT_IP);
 		loginfo->bitmask |= EBT_LOG_IP;
 		break;
 
 	case LOG_ARP:
-		check_option(flags, OPT_ARP);
+		ebt_check_option(flags, OPT_ARP);
 		loginfo->bitmask |= EBT_LOG_ARP;
 		break;
 
 	case LOG_LOG:
-		check_option(flags, OPT_LOG);
+		ebt_check_option(flags, OPT_LOG);
 		break;
 	default:
 		return 0;
@@ -190,5 +190,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_watcher(&log_watcher);
+	ebt_register_watcher(&log_watcher);
 }
diff --git a/extensions/ebt_mark.c b/extensions/ebt_mark.c
index 6fa26f8..c40b9fd 100644
--- a/extensions/ebt_mark.c
+++ b/extensions/ebt_mark.c
@@ -46,12 +46,12 @@
 
 	switch (c) {
 	case MARK_TARGET:
-		check_option(flags, OPT_MARK_TARGET);
+		ebt_check_option(flags, OPT_MARK_TARGET);
 		if (FILL_TARGET(optarg, markinfo->target))
 			print_error("Illegal --mark-target target");
 		break;
 	case MARK_SETMARK:
-		check_option(flags, OPT_MARK_SETMARK);
+		ebt_check_option(flags, OPT_MARK_SETMARK);
 		markinfo->mark = strtoul(optarg, &end, 0);
 		if (*end != '\0' || end == optarg)
 			print_error("Bad MARK value '%s'", optarg);
@@ -116,5 +116,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_target(&mark_target);
+	ebt_register_target(&mark_target);
 }
diff --git a/extensions/ebt_mark_m.c b/extensions/ebt_mark_m.c
index 0d14d76..1c18d9e 100644
--- a/extensions/ebt_mark_m.c
+++ b/extensions/ebt_mark_m.c
@@ -40,8 +40,8 @@
 
 	switch (c) {
 	case MARK:
-		check_option(flags, MARK);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, MARK);
+		if (ebt_check_inverse(optarg))
 			markinfo->invert = 1;
 		if (optind > argc)
 			print_error("No mark specified");
@@ -118,5 +118,5 @@
 static void _init(void) __attribute((constructor));
 static void _init(void)
 {
-	register_match(&mark_match);
+	ebt_register_match(&mark_match);
 }
diff --git a/extensions/ebt_nat.c b/extensions/ebt_nat.c
index 04c6f0f..16e1842 100644
--- a/extensions/ebt_nat.c
+++ b/extensions/ebt_nat.c
@@ -73,14 +73,14 @@
 
 	switch (c) {
 	case NAT_S:
-		check_option(flags, OPT_SNAT);
+		ebt_check_option(flags, OPT_SNAT);
 		to_source_supplied = 1;
 		if (!(addr = ether_aton(optarg)))
 			print_error("Problem with specified --to-source mac");
 		memcpy(natinfo->mac, addr, ETH_ALEN);
 		break;
 	case NAT_S_TARGET:
-		check_option(flags, OPT_SNAT_TARGET);
+		ebt_check_option(flags, OPT_SNAT_TARGET);
 		if (FILL_TARGET(optarg, natinfo->target))
 			print_error("Illegal --snat-target target");
 		break;
@@ -101,7 +101,7 @@
 
 	switch (c) {
 	case NAT_D:
-		check_option(flags, OPT_DNAT);
+		ebt_check_option(flags, OPT_DNAT);
 		to_dest_supplied = 1;
 		if (!(addr = ether_aton(optarg)))
 			print_error("Problem with specified "
@@ -109,7 +109,7 @@
 		memcpy(natinfo->mac, addr, ETH_ALEN);
 		break;
 	case NAT_D_TARGET:
-		check_option(flags, OPT_DNAT_TARGET);
+		ebt_check_option(flags, OPT_DNAT_TARGET);
 		if (FILL_TARGET(optarg, natinfo->target))
 			print_error("Illegal --dnat-target target");
 		break;
@@ -157,7 +157,7 @@
 	struct ebt_nat_info *natinfo = (struct ebt_nat_info *)target->data;
 
 	printf("--to-src ");
-	print_mac(natinfo->mac);
+	ebt_print_mac(natinfo->mac);
 	printf(" --snat-target %s", TARGET_NAME(natinfo->target));
 }
 
@@ -167,7 +167,7 @@
 	struct ebt_nat_info *natinfo = (struct ebt_nat_info *)target->data;
 
 	printf("--to-dst ");
-	print_mac(natinfo->mac);
+	ebt_print_mac(natinfo->mac);
 	printf(" --dnat-target %s", TARGET_NAME(natinfo->target));
 }
 
@@ -210,6 +210,6 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_target(&snat_target);
-	register_target(&dnat_target);
+	ebt_register_target(&snat_target);
+	ebt_register_target(&dnat_target);
 }
diff --git a/extensions/ebt_pkttype.c b/extensions/ebt_pkttype.c
index 73f6e62..35bac29 100644
--- a/extensions/ebt_pkttype.c
+++ b/extensions/ebt_pkttype.c
@@ -57,8 +57,8 @@
 
 	switch (c) {
 	case '1':
-		check_option(flags, 1);
-		if (check_inverse(optarg))
+		ebt_check_option(flags, 1);
+		if (ebt_check_inverse(optarg))
 			ptinfo->invert = 1;
 		if (optind > argc)
 			print_error("Missing pkttype class specification");
@@ -132,5 +132,5 @@
 static void _init(void) __attribute((constructor));
 static void _init(void)
 {
-	register_match(&pkttype_match);
+	ebt_register_match(&pkttype_match);
 }
diff --git a/extensions/ebt_redirect.c b/extensions/ebt_redirect.c
index 432e58d..82feaa9 100644
--- a/extensions/ebt_redirect.c
+++ b/extensions/ebt_redirect.c
@@ -38,7 +38,7 @@
 
 	switch (c) {
 	case REDIRECT_TARGET:
-		check_option(flags, OPT_REDIRECT_TARGET);
+		ebt_check_option(flags, OPT_REDIRECT_TARGET);
 		if (FILL_TARGET(optarg, redirectinfo->target))
 			print_error("Illegal --redirect-target target");
 		break;
@@ -102,5 +102,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_target(&redirect_target);
+	ebt_register_target(&redirect_target);
 }
diff --git a/extensions/ebt_standard.c b/extensions/ebt_standard.c
index 6a260eb..7ee454b 100644
--- a/extensions/ebt_standard.c
+++ b/extensions/ebt_standard.c
@@ -31,8 +31,6 @@
 {
 }
 
-struct ebt_u_entries *nr_to_chain(int nr);
-
 static void print(const struct ebt_u_entry *entry,
    const struct ebt_entry_target *target)
 {
@@ -41,7 +39,8 @@
 	if (verdict >= 0) {
 		struct ebt_u_entries *entries;
 
-		entries = nr_to_chain(verdict + NF_BR_NUMHOOKS);
+		entries = ebt_nr_to_chain(entry->replace,
+					  verdict + NF_BR_NUMHOOKS);
 		printf("%s", entries->name);
 		return;
 	}
@@ -81,5 +80,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_target(&standard);
+	ebt_register_target(&standard);
 }
diff --git a/extensions/ebt_stp.c b/extensions/ebt_stp.c
index 391b89e..60f2cc8 100644
--- a/extensions/ebt_stp.c
+++ b/extensions/ebt_stp.c
@@ -78,10 +78,6 @@
 	stpinfo->bitmask = 0;
 }
 
-/* defined in ebtables.c */
-int get_mac_and_mask(char *from, char *to, char *mask);
-void print_mac_and_mask(const char *mac, const char *mask);
-
 #define determine_value(p,s)			 \
 {						 \
 	uint32_t _tmp2;				 \
@@ -135,8 +131,8 @@
 	if (c < 'a' || c > ('a' + STP_NUMOPS - 1))
 		return 0;
 	flag = 1 << (c - 'a');
-	check_option(flags, flag);
-	if (check_inverse(optarg))
+	ebt_check_option(flags, flag);
+	if (ebt_check_inverse(optarg))
 		stpinfo->invflags |= flag;
 	if (optind > argc)
 		print_error("Missing argument for --%s", opts[c-'a'].name);
@@ -211,12 +207,12 @@
 			print_error("Bad STP config forward delay range");
 		break;
 	case EBT_STP_ROOTADDR:
-		if (get_mac_and_mask(argv[optind-1],
+		if (ebt_get_mac_and_mask(argv[optind-1],
 		    stpinfo->config.root_addr, stpinfo->config.root_addrmsk))
 			print_error("Bad STP config root address");
 		break;
 	case EBT_STP_SENDERADDR:
-		if (get_mac_and_mask(argv[optind-1], stpinfo->config.sender_addr,
+		if (ebt_get_mac_and_mask(argv[optind-1], stpinfo->config.sender_addr,
 		    stpinfo->config.sender_addrmsk))
 			print_error("Bad STP config sender address");
 		break;
@@ -269,13 +265,13 @@
 		} else if (EBT_STP_ROOTPRIO == (1 << i))
 			print_range(c->root_priol, c->root_priou);
 		else if (EBT_STP_ROOTADDR == (1 << i))
-			print_mac_and_mask(c->root_addr, c->root_addrmsk);
+			ebt_print_mac_and_mask(c->root_addr, c->root_addrmsk);
 		else if (EBT_STP_ROOTCOST == (1 << i))
 			print_range(c->root_costl, c->root_costu);
 		else if (EBT_STP_SENDERPRIO == (1 << i))
 			print_range(c->sender_priol, c->sender_priou);
 		else if (EBT_STP_SENDERADDR == (1 << i))
-			print_mac_and_mask(c->sender_addr, c->sender_addrmsk);
+			ebt_print_mac_and_mask(c->sender_addr, c->sender_addrmsk);
 		else if (EBT_STP_PORT == (1 << i))
 			print_range(c->portl, c->portu);
 		else if (EBT_STP_MSGAGE == (1 << i))
@@ -312,5 +308,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_match(&stp_match);
+	ebt_register_match(&stp_match);
 }
diff --git a/extensions/ebt_vlan.c b/extensions/ebt_vlan.c
index 198f537..5a8a912 100644
--- a/extensions/ebt_vlan.c
+++ b/extensions/ebt_vlan.c
@@ -45,7 +45,7 @@
 #define SET_BITMASK(_MASK_) vlaninfo->bitmask |= _MASK_
 #define INV_FLAG(_inv_flag_) (vlaninfo->invflags & _inv_flag_) ? "! " : ""
 #define CHECK_IF_MISSING_VALUE if (optind > argc) print_error ("Missing %s value", opts[c].name);
-#define CHECK_INV_FLAG(_INDEX_) if (check_inverse (optarg)) vlaninfo->invflags |= _INDEX_;
+#define CHECK_INV_FLAG(_INDEX_) if (ebt_check_inverse (optarg)) vlaninfo->invflags |= _INDEX_;
 #define CHECK_RANGE(_RANGE_) if (_RANGE_) print_error ("Invalid %s range", opts[c].name);
 
 #define NAME_VLAN_ID    "id"
@@ -138,7 +138,7 @@
 
 	switch (c) {
 	case VLAN_ID:
-		check_option(flags, OPT_VLAN_ID);
+		ebt_check_option(flags, OPT_VLAN_ID);
 		CHECK_INV_FLAG(EBT_VLAN_ID);
 		CHECK_IF_MISSING_VALUE;
 		(unsigned short) local.id =
@@ -149,7 +149,7 @@
 		break;
 
 	case VLAN_PRIO:
-		check_option(flags, OPT_VLAN_PRIO);
+		ebt_check_option(flags, OPT_VLAN_PRIO);
 		CHECK_INV_FLAG(EBT_VLAN_PRIO);
 		CHECK_IF_MISSING_VALUE;
 		(unsigned char) local.prio =
@@ -160,7 +160,7 @@
 		break;
 
 	case VLAN_ENCAP:
-		check_option(flags, OPT_VLAN_ENCAP);
+		ebt_check_option(flags, OPT_VLAN_ENCAP);
 		CHECK_INV_FLAG(EBT_VLAN_ENCAP);
 		CHECK_IF_MISSING_VALUE;
 		(unsigned short) local.encap =
@@ -321,5 +321,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_match(&vlan_match);
+	ebt_register_match(&vlan_match);
 }
diff --git a/extensions/ebtable_broute.c b/extensions/ebtable_broute.c
index 155d9ce..362183a 100644
--- a/extensions/ebtable_broute.c
+++ b/extensions/ebtable_broute.c
@@ -2,7 +2,7 @@
 #include "../include/ebtables_u.h"
 
 
-static void print_help(char **hn)
+static void print_help(const char **hn)
 {
 	printf("Supported chain for the broute table:\n");
 	printf("%s\n",hn[NF_BR_BROUTING]);
@@ -18,5 +18,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_table(&table);
+	ebt_register_table(&table);
 }
diff --git a/extensions/ebtable_filter.c b/extensions/ebtable_filter.c
index 724198c..904a857 100644
--- a/extensions/ebtable_filter.c
+++ b/extensions/ebtable_filter.c
@@ -4,7 +4,7 @@
 #define FILTER_VALID_HOOKS ((1 << NF_BR_LOCAL_IN) | (1 << NF_BR_FORWARD) | \
    (1 << NF_BR_LOCAL_OUT))
 
-static void print_help(char **hn)
+static void print_help(const char **hn)
 {
 	int i;
 
@@ -24,5 +24,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_table(&table);
+	ebt_register_table(&table);
 }
diff --git a/extensions/ebtable_nat.c b/extensions/ebtable_nat.c
index 7998e7d..b151dc5 100644
--- a/extensions/ebtable_nat.c
+++ b/extensions/ebtable_nat.c
@@ -4,7 +4,7 @@
 #define NAT_VALID_HOOKS ((1 << NF_BR_PRE_ROUTING) | (1 << NF_BR_LOCAL_OUT) | \
    (1 << NF_BR_POST_ROUTING))
 
-static void print_help(char **hn)
+static void print_help(const char **hn)
 {
 	int i;
 
@@ -25,5 +25,5 @@
 static void _init(void) __attribute__ ((constructor));
 static void _init(void)
 {
-	register_table(&table);
+	ebt_register_table(&table);
 }