diff --git a/include/linux/fib_rules.h b/include/linux/fib_rules.h
index 6dcde64..bbf02a6 100644
--- a/include/linux/fib_rules.h
+++ b/include/linux/fib_rules.h
@@ -29,6 +29,11 @@
 	__u32		flags;
 };
 
+struct fib_rule_uid_range {
+	__u32		start;
+	__u32		end;
+};
+
 enum {
 	FRA_UNSPEC,
 	FRA_DST,	/* destination address */
@@ -49,8 +54,9 @@
 	FRA_TABLE,	/* Extended table id */
 	FRA_FWMASK,	/* mask for netfilter mark */
 	FRA_OIFNAME,
-	FRA_UID_START,
-	FRA_UID_END,
+	FRA_PAD,
+	FRA_L3MDEV,	/* iif or oif is l3mdev goto its table */
+	FRA_UID_RANGE,	/* UID range */
 	__FRA_MAX
 };
 
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index dad2e8e..5fc9337 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -305,14 +305,15 @@
 	RTA_MP_ALGO, /* no longer used */
 	RTA_TABLE,
 	RTA_MARK,
-	RTA_MFC_STATS, /* not used - backported from the future */
-	RTA_UID,
+	RTA_MFC_STATS,
 	RTA_VIA,
 	RTA_NEWDST,
 	RTA_PREF,
 	RTA_ENCAP_TYPE,
 	RTA_ENCAP,
 	RTA_EXPIRES,
+	RTA_PAD,
+	RTA_UID,
 	__RTA_MAX
 };
 
diff --git a/ip/iproute.c b/ip/iproute.c
index 381c3dd..7f81145 100644
--- a/ip/iproute.c
+++ b/ip/iproute.c
@@ -474,9 +474,6 @@
 		}
 	}
 
-	if (tb[RTA_UID])
-		fprintf(fp, " uid %u ", rta_getattr_u32(tb[RTA_UID]));
-
 	if (tb[RTA_FLOW] && filter.realmmask != ~0U) {
 		__u32 to = rta_getattr_u32(tb[RTA_FLOW]);
 		__u32 from = to>>16;
@@ -489,6 +486,10 @@
 		fprintf(fp, "%s ",
 			rtnl_rtrealm_n2a(to, b1, sizeof(b1)));
 	}
+
+	if (tb[RTA_UID])
+		fprintf(fp, "uid %u ", rta_getattr_u32(tb[RTA_UID]));
+
 	if ((r->rtm_flags&RTM_F_CLONED) && r->rtm_family == AF_INET) {
 		__u32 flags = r->rtm_flags&~0xFFFF;
 		int first = 1;
@@ -1633,15 +1634,17 @@
 			   strcmp(*argv, "dev") == 0) {
 			NEXT_ARG();
 			odev = *argv;
-		} else if (matches(*argv, "uid") == 0) {
-		        uid_t uid;
-			NEXT_ARG();
-			get_unsigned(&uid, *argv, 0);
-			addattr32(&req.n, sizeof(req), RTA_UID, uid);
 		} else if (matches(*argv, "notify") == 0) {
 			req.r.rtm_flags |= RTM_F_NOTIFY;
 		} else if (matches(*argv, "connected") == 0) {
 			connected = 1;
+		} else if (matches(*argv, "uid") == 0) {
+			uid_t uid;
+
+			NEXT_ARG();
+			if (get_unsigned(&uid, *argv, 0))
+				invarg("invalid UID\n", *argv);
+			addattr32(&req.n, sizeof(req), RTA_UID, uid);
 		} else {
 			inet_prefix addr;
 			if (strcmp(*argv, "to") == 0) {
diff --git a/ip/iprule.c b/ip/iprule.c
index c363ccc..ac835ab 100644
--- a/ip/iprule.c
+++ b/ip/iprule.c
@@ -149,17 +149,10 @@
 			fprintf(fp, "[detached] ");
 	}
 
-	if (tb[FRA_UID_START] || tb[FRA_UID_END]) {
-		fprintf(fp, "uidrange ");
-		if (tb[FRA_UID_START])
-			fprintf(fp, "%u", rta_getattr_u32(tb[FRA_UID_START]));
-		else
-			fprintf(fp, "???");
+	if (tb[FRA_UID_RANGE]) {
+		struct fib_rule_uid_range *r = RTA_DATA(tb[FRA_UID_RANGE]);
 
-		if (tb[FRA_UID_END])
-			fprintf(fp, "-%u ", rta_getattr_u32(tb[FRA_UID_END]));
-		else
-			fprintf(fp, "-??? ");
+		fprintf(fp, "uidrange %u-%u ", r->start, r->end);
 	}
 
 	table = rtm_get_table(r, tb);
@@ -441,19 +434,20 @@
 		} else if (strcmp(*argv, "oif") == 0) {
 			NEXT_ARG();
 			addattr_l(&req.n, sizeof(req), FRA_OIFNAME, *argv, strlen(*argv)+1);
+		} else if (strcmp(*argv, "uidrange") == 0) {
+			struct fib_rule_uid_range r;
+
+			NEXT_ARG();
+			if (sscanf(*argv, "%u-%u", &r.start, &r.end) != 2)
+				invarg("invalid UID range\n", *argv);
+			addattr_l(&req.n, sizeof(req), FRA_UID_RANGE, &r,
+				  sizeof(r));
 		} else if (strcmp(*argv, "nat") == 0 ||
 			   matches(*argv, "map-to") == 0) {
 			NEXT_ARG();
 			fprintf(stderr, "Warning: route NAT is deprecated\n");
 			addattr32(&req.n, sizeof(req), RTA_GATEWAY, get_addr32(*argv));
 			req.r.rtm_type = RTN_NAT;
-		} else if (strcmp(*argv, "uidrange") == 0) {
-			__u32 uid_start, uid_end;
-			NEXT_ARG();
-			if (sscanf(*argv, "%u-%u", &uid_start, &uid_end) != 2)
-				invarg("UID range is invalid\n", *argv);
-			addattr32(&req.n, sizeof(req), FRA_UID_START, uid_start);
-			addattr32(&req.n, sizeof(req), FRA_UID_END, uid_end);
 		} else {
 			int type;
 
