tc: Add ingress/mirred support

Change-Id: I5c0096fee3232a6370dd4b8943fae37bffcd9973
Signed-off-by: San Mehat <san@google.com>
diff --git a/tc/Android.mk b/tc/Android.mk
index 4a63875..9800eb5 100644
--- a/tc/Android.mk
+++ b/tc/Android.mk
@@ -3,7 +3,7 @@
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES :=  tc.c tc_qdisc.c q_cbq.c tc_util.c tc_class.c tc_core.c m_action.c \
                     m_estimator.c tc_filter.c tc_monitor.c tc_stab.c tc_cbq.c \
-                    tc_estimator.c f_u32.c m_police.c
+                    tc_estimator.c f_u32.c m_police.c q_ingress.c m_mirred.c
 
 LOCAL_MODULE := tc
 
diff --git a/tc/m_action.c b/tc/m_action.c
index 9f24022..7ec79d5 100644
--- a/tc/m_action.c
+++ b/tc/m_action.c
@@ -29,6 +29,11 @@
 #include "tc_util.h"
 
 static struct action_util * action_list;
+
+#ifdef ANDROID
+extern struct action_util mirred_action_util;
+#endif
+
 #ifdef CONFIG_GACT
 int gact_ld = 0 ; //fuckin backward compatibility
 #endif
@@ -85,6 +90,14 @@
 
 struct action_util *get_action_kind(char *str)
 {
+#ifdef ANDROID
+	if (!strcmp(str, "mirred")) {
+		return &mirred_action_util;
+	} else {
+		fprintf(stderr, "Android does not support action '%s'", str);
+		return NULL;
+	}
+#endif
 	static void *aBODY;
 	void *dlh;
 	char buf[256];
diff --git a/tc/tc.c b/tc/tc.c
index 68a6a75..14ff85f 100644
--- a/tc/tc.c
+++ b/tc/tc.c
@@ -46,6 +46,7 @@
 
 #ifdef ANDROID
 extern struct qdisc_util cbq_qdisc_util;
+extern struct qdisc_util ingress_qdisc_util;
 extern struct filter_util u32_filter_util;
 #endif
 
@@ -105,6 +106,8 @@
 #ifdef ANDROID
 	if (!strcmp(str, "cbq"))
 		return &cbq_qdisc_util;
+	else if (!strcmp(str, "ingress"))
+		return &ingress_qdisc_util;
 	else {
 		fprintf(stderr, "Android does not support '%s'\n", str);
 		return NULL;