Route metrics decode bug.
Array was not being offset correctly.

See http://bugs.archlinux.org/task/5669

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
diff --git a/ip/iproute.c b/ip/iproute.c
index 24e7a86..16c398a 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -142,7 +142,7 @@
 	static int ip6_multiple_tables;
 	__u32 table;
 	SPRINT_BUF(b1);
-	
+	static int hz;
 
 	if (n->nlmsg_type != RTM_NEWROUTE && n->nlmsg_type != RTM_DELROUTE) {
 		fprintf(stderr, "Not a route: %08x %08x %08x\n",
@@ -446,7 +446,6 @@
 			fprintf(fp, "%s%x> ", first ? "<" : "", flags);
 		if (tb[RTA_CACHEINFO]) {
 			struct rta_cacheinfo *ci = RTA_DATA(tb[RTA_CACHEINFO]);
-			static int hz;
 			if (!hz)
 				hz = get_user_hz();
 			if (ci->rta_expires != 0)
@@ -473,7 +472,6 @@
 		if (tb[RTA_CACHEINFO])
 			ci = RTA_DATA(tb[RTA_CACHEINFO]);
 		if ((r->rtm_flags & RTM_F_CLONED) || (ci && ci->rta_expires)) {
-			static int hz;
 			if (!hz)
 				hz = get_user_hz();
 			if (r->rtm_flags & RTM_F_CLONED)
@@ -506,13 +504,13 @@
 			mxlock = *(unsigned*)RTA_DATA(mxrta[RTAX_LOCK]);
 
 		for (i=2; i<= RTAX_MAX; i++) {
-			static int hz;
 			if (mxrta[i] == NULL)
 				continue;
 			if (!hz)
 				hz = get_hz();
-			if (i-2 < sizeof(mx_names)/sizeof(char*))
-				fprintf(fp, " %s", mx_names[i-2]);
+
+			if (i < sizeof(mx_names)/sizeof(char*) && mx_names[i])
+				fprintf(fp, " %s", mx_names[i]);
 			else
 				fprintf(fp, " metric %d", i);
 			if (mxlock & (1<<i))