Signed-off-by: David Wu <davidwu@arcturusnetworks.com>
diff -urNa uClinux-dist/user/Kconfig uClinux-dist-ep2500/user/Kconfig
--- uClinux-dist/user/Kconfig	2010-01-05 14:19:26.000000000 -0500
+++ uClinux-dist-ep2500/user/Kconfig	2010-01-05 12:51:12.000000000 -0500
@@ -1478,7 +1478,7 @@
 	bool "rtacct"
 	depends on USER_IPROUTE2
 	help
-	  rtacct from the iproute2 packe.
+	  rtacct from the iproute2 package.
 
 config USER_IPROUTE2_IP_RTMON
 	bool "rtmon"
@@ -1486,6 +1486,12 @@
 	help
 	  Route monitor.
 
+config USER_IPROUTE2_IP_GENL
+	bool "genl"
+	depends on USER_IPROUTE2
+	help
+	  genl utility frontend.
+
 config USER_IPROUTE2_IP_RTPR
 	bool "rtpr"
 	depends on USER_BUSYBOX_TR && USER_BASH_BASH
diff -urNa uClinux-dist/user/iproute2/Makefile uClinux-dist-ep2500/user/iproute2/Makefile
--- uClinux-dist/user/iproute2/Makefile	2009-03-04 20:05:40.000000000 -0500
+++ uClinux-dist-ep2500/user/iproute2/Makefile	2010-01-05 12:52:42.000000000 -0500
@@ -38,7 +38,14 @@
 
 LDLIBS := -L../lib -lnetlink -lip2util $(LDLIBS)
 
-SUBDIRS=lib ip tc misc netem genl
+SUBDIRS=lib ip tc
+ifeq ($(CONFIG_USER_IPROUTE2_IP_RTACCT), y)
+SUBDIRS += misc
+endif
+SUBDIRS += netem
+ifeq ($(CONFIG_USER_IPROUTE2_IP_GENL), y)
+SUBDIRS += genl
+endif
 
 LIBNETLINK=../lib/libnetlink.a ../lib/libip2util.a
 
diff -urNa uClinux-dist/user/iproute2/misc/Makefile uClinux-dist-ep2500/user/iproute2/misc/Makefile
--- uClinux-dist/user/iproute2/misc/Makefile	2009-03-04 20:05:41.000000000 -0500
+++ uClinux-dist-ep2500/user/iproute2/misc/Makefile	2010-01-05 14:13:23.000000000 -0500
@@ -4,7 +4,7 @@
 TARGETS=ss nstat ifstat rtacct arpd lnstat
 TARGETS=ss nstat ifstat rtacct lnstat
 
-include ../Config
+-include ../Config
 
 all: $(TARGETS)
 
@@ -36,4 +36,4 @@
 	ln -sf lnstat $(DESTDIR)$(SBINDIR)/ctstat
 
 clean:
-	rm -f *.o $(TARGETS) ssfilter.c
+	rm -f *.o *.gdb $(TARGETS) ssfilter.c
diff -urNa uClinux-dist/user/iproute2/tc/m_action.c uClinux-dist-ep2500/user/iproute2/tc/m_action.c
--- uClinux-dist/user/iproute2/tc/m_action.c	2007-06-03 23:15:36.000000000 -0400
+++ uClinux-dist-ep2500/user/iproute2/tc/m_action.c	2010-01-05 14:15:31.000000000 -0500
@@ -22,7 +22,9 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <string.h>
+#ifndef NO_DL
 #include <dlfcn.h>
+#endif
 
 #include "utils.h"
 #include "tc_common.h"
@@ -35,6 +37,14 @@
 int batch_c = 0;
 int tab_flush = 0;
 
+#ifdef NO_DL
+extern struct action_util police_action_util;
+static struct action_util *action[] = {
+	&police_action_util,
+	NULL
+};
+#endif
+
 void act_usage(void)
 {
 	/*XXX: In the near future add a action->print_help to improve
@@ -85,9 +95,11 @@
 
 struct action_util *get_action_kind(char *str)
 {
+#ifndef NO_DL
 	static void *aBODY;
 	void *dlh;
 	char buf[256];
+#endif
 	struct action_util *a;
 #ifdef CONFIG_GACT
 	int looked4gact = 0;
@@ -98,6 +110,17 @@
 			return a;
 	}
 
+#ifdef NO_DL
+{
+	int i;
+	for (i = 0; action[i]; i++)
+		if (strcmp(action[i]->id, str) == 0) {
+			a = action[i];
+			goto reg;
+		}
+	goto noexist;
+}
+#else
 	snprintf(buf, sizeof(buf), "m_%s.so", str);
 	dlh = dlopen(buf, RTLD_LAZY);
 	if (dlh == NULL) {
@@ -113,6 +136,7 @@
 	a = dlsym(dlh, buf);
 	if (a == NULL)
 		goto noexist;
+#endif
 
 reg:
 	a->next = action_list;
diff -urNa uClinux-dist/user/iproute2/tc/Makefile uClinux-dist-ep2500/user/iproute2/tc/Makefile
--- uClinux-dist/user/iproute2/tc/Makefile	2009-05-25 23:23:40.000000000 -0400
+++ uClinux-dist-ep2500/user/iproute2/tc/Makefile	2010-01-05 12:18:26.000000000 -0500
@@ -87,6 +87,10 @@
   TCSO += q_atm.so
 endif
 
+ifdef NO_DL
+CFLAGS += -DNO_DL
+LDLIBS += -L. -ltc -lm
+else
 ifdef no_defined
 LDLIBS += -L. -ltc -lm -ldl
 
@@ -95,6 +99,7 @@
 LDLIBS := -L. -ltc -lm -ldl $(LDLIBS)
 LDFLAGS += -Wl,-export-dynamic
 endif
+endif
 
 YACC := bison
 LEX := flex
diff -urNa uClinux-dist/user/iproute2/tc/tc.c uClinux-dist-ep2500/user/iproute2/tc/tc.c
--- uClinux-dist/user/iproute2/tc/tc.c	2009-03-04 20:05:41.000000000 -0500
+++ uClinux-dist-ep2500/user/iproute2/tc/tc.c	2010-01-05 14:15:55.000000000 -0500
@@ -99,8 +99,10 @@
 
 struct qdisc_util *get_qdisc_kind(const char *str)
 {
+#ifndef NO_DL
 	void *dlh;
 	char buf[256];
+#endif
 	struct qdisc_util *q;
 
 	for (q = qdisc_list; q; q = q->next)
@@ -162,8 +164,10 @@
 
 struct filter_util *get_filter_kind(const char *str)
 {
+#ifndef NO_DL
 	void *dlh;
 	char buf[256];
+#endif
 	struct filter_util *q;
 
 	for (q = filter_list; q; q = q->next)
