diff --git a/external/iptables/Android.mk b/external/iptables/Android.mk
--- a/external/iptables/Android.mk	2012-05-30 14:16:39.408709076 +0400
+++ b/external/iptables/Android.mk	2012-05-30 18:50:01.378032668 +0400
@@ -1,5 +1,3 @@
-BUILD_IPTABLES_V14 := 1
-
 LOCAL_PATH:= $(call my-dir)
 
 include $(call all-subdir-makefiles)
diff --git a/external/iptables/extensions/Android.mk b/external/iptables/extensions/Android.mk
--- a/external/iptables/extensions/Android.mk	2012-05-30 14:16:39.411709447 +0400
+++ b/external/iptables/extensions/Android.mk	2012-06-01 12:24:42.946696872 +0400
@@ -4,7 +4,13 @@
 
 MY_srcdir:=$(LOCAL_PATH)
 # Exclude some modules that are problematic to compile (types/header).
-MY_excluded_modules:=TCPOPTSTRIP
+MY_excluded_modules:=TCPOPTSTRIP MIRROR LOG TTL NETMAP ULOG MASQUERADE icmp ecn SAME realm \
+	SNAT CLUSTERIP ah ECN unclean addrtype ttl dscp NFQUEUE NFLOG physdev TEE CONNSECMARK \
+	SECMARK string recent hashlimit cpu CT sctp AUDIT osf connmark CONNMARK conntrack \
+	quota2 quota TRACE policy u32 udp cluster tos CLASSIFY comment TPROXY RATEEST time \
+	set mark MARK IDLETIMER state devgroup limit LED connlimit pkttype TCPMSS TOS esp \
+	CHECKSUM socket statistic connbytes NOTRACK DSCP iprange length tcpmss mac rateest \
+	helper
 
 MY_pfx_build_mod := $(patsubst ${MY_srcdir}/libxt_%.c,%,$(wildcard ${MY_srcdir}/libxt_*.c))
 MY_pf4_build_mod := $(patsubst ${MY_srcdir}/libipt_%.c,%,$(wildcard ${MY_srcdir}/libipt_*.c))
@@ -46,7 +52,8 @@
 
 MY_initext_func := $(addprefix xt_,${MY_pfx_build_mod})
 MY_GEN_INITEXT:= $(MY_intermediates)/initext.c
-$(MY_GEN_INITEXT):
+LOCAL_GEN_INITEXT:= $(LOCAL_PATH)/$(MY_GEN_INITEXT)
+$(LOCAL_GEN_INITEXT):
 	@mkdir -p $(dir $@)
 	@( \
 	echo "" >$@; \
@@ -76,7 +83,7 @@
 
 $(MY_intermediates)/initext.o : $(MY_GEN_INITEXT) $(MY_gen_lib_sources)
 
-LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT) $(MY_gen_lib_sources)
+LOCAL_SRC_FILES:= $(MY_GEN_INITEXT) $(MY_gen_lib_sources)
 
 include $(BUILD_STATIC_LIBRARY)
 
@@ -109,7 +116,8 @@
 
 MY_initext4_func  := $(addprefix ipt_,${MY_pf4_build_mod})
 MY_GEN_INITEXT4:= $(MY_intermediates)/initext4.c
-$(MY_GEN_INITEXT4):
+LOCAL_GEN_INITEXT4:= $(LOCAL_PATH)/$(MY_GEN_INITEXT4)
+$(LOCAL_GEN_INITEXT4):
 	@mkdir -p $(dir $@)
 	@( \
 	echo "" >$@; \
@@ -139,7 +147,7 @@
 
 $(MY_intermediates)/initext4.o : $(MY_GEN_INITEXT4) $(MY_gen_lib_sources)
 
-LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT4) ${MY_gen_lib_sources}
+LOCAL_SRC_FILES:= $(MY_GEN_INITEXT4) ${MY_gen_lib_sources}
 
 include $(BUILD_STATIC_LIBRARY)
 
@@ -172,7 +180,8 @@
 
 MY_initext6_func := $(addprefix ip6t_,${MY_pf6_build_mod})
 MY_GEN_INITEXT6:= $(MY_intermediates)/initext6.c
-$(MY_GEN_INITEXT6):
+LOCAL_GEN_INITEXT6:= $(LOCAL_PATH)/$(MY_GEN_INITEXT6)
+$(LOCAL_GEN_INITEXT6):
 	@mkdir -p $(dir $@)
 	@( \
 	echo "" >$@; \
@@ -202,7 +211,7 @@
 
 $(MY_intermediates)/initext6.o : $(MY_GEN_INITEXT6) $(MY_gen_lib_sources)
 
-LOCAL_GENERATED_SOURCES:= $(MY_GEN_INITEXT6) $(MY_gen_lib_sources)
+LOCAL_SRC_FILES:= $(MY_GEN_INITEXT6) $(MY_gen_lib_sources)
 
 include $(BUILD_STATIC_LIBRARY)
 
diff --git a/external/iptables/extensions/fixinit.py b/external/iptables/extensions/fixinit.py
--- a/external/iptables/extensions/fixinit.py	1970-01-01 03:00:00.000000000 +0300
+++ b/external/iptables/extensions/fixinit.py	2012-05-31 00:35:59.927307126 +0400
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+# Author: Rodrigo Zechin Rosauro
+"""
+This script will convert all _init() functions on iptables extension sources in order
+to compile then on Android.
+This will for example, convert "void _init(void)" on libipt_LOG.c to "void libipt_LOG_init(void)".
+This is necessary because we cannot use the "-D_INIT=$*_init" on LOCAL_CFLAGS due to the way NDK works.
+"""
+
+import sys, os, glob, re
+
+def main():
+    regex=re.compile(r"[^\w]_init\s*\(")
+    os.chdir(os.path.dirname(os.path.abspath(__file__)))
+    for prefix in ("libxt", "libipt", "libip6t"):
+        for src in glob.glob("%s_*.c"%prefix):
+            name = src.replace(".c","")
+            f=open(src, "r")
+            data=f.read()
+            f.close()
+            if regex.search(data):
+                print "Converting %s..."%src
+                data=regex.sub(" %s_init("%name, data)
+                f=open(src, "w")
+                f.write(data)
+                f.close()
+    print "DONE!"
+
+if __name__=="__main__":
+    main()
+