--- iproute2-3.6.0/ip/iptunnel.c	2012-10-01 17:39:21.000000000 +0200
+++ src/ip/iptunnel.c	2013-01-21 16:48:38.187644569 +0100
@@ -37,7 +37,7 @@
 	fprintf(stderr, "          [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n");
 	fprintf(stderr, "          [ prl-default ADDR ] [ prl-nodefault ADDR ] [ prl-delete ADDR ]\n");
 	fprintf(stderr, "          [ 6rd-prefix ADDR ] [ 6rd-relay_prefix ADDR ] [ 6rd-reset ]\n");
-	fprintf(stderr, "          [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]\n");
+	fprintf(stderr, "          [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ fbx6to4_zone ADDR ] [ dev PHYS_DEV ]\n");
 	fprintf(stderr, "\n");
 	fprintf(stderr, "Where: NAME := STRING\n");
 	fprintf(stderr, "       ADDR := { IP_ADDRESS | any }\n");
@@ -174,6 +174,14 @@
 		} else if (strcmp(*argv, "dev") == 0) {
 			NEXT_ARG();
 			strncpy(medium, *argv, IFNAMSIZ-1);
+		} else if (strcmp(*argv, "fbx6to4_zone") == 0) {
+			inet_prefix zone;
+
+			NEXT_ARG();
+			if (get_prefix(&zone, *argv, AF_INET6))
+				invarg("invalid fbx6to4_zone\n", *argv);
+			memcpy(&p->fbx6to4_zone, zone.data, 16);
+			p->fbx6to4_prefix = zone.bitlen;
 		} else if (strcmp(*argv, "ttl") == 0 ||
 			   strcmp(*argv, "hoplimit") == 0) {
 			unsigned uval;
@@ -388,6 +396,14 @@
 		}
 	}
 
+	if (p->fbx6to4_prefix) {
+		char buf[128];
+
+		printf(" fbx6to4_zone %s/%u ",
+		       inet_ntop(AF_INET6, &p->fbx6to4_zone, buf, 128),
+		       p->fbx6to4_prefix);
+	}
+
 	if ((p->i_flags&GRE_KEY) && (p->o_flags&GRE_KEY) && p->o_key == p->i_key)
 		printf(" key %u", ntohl(p->i_key));
 	else if ((p->i_flags|p->o_flags)&GRE_KEY) {
