diff options
author | Sreeram Ramachandran <sreeram@google.com> | 2014-05-14 22:06:38 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-05-14 22:06:39 +0000 |
commit | 39c15e7bbb2a5f52997dcbd12729dbe07f50f0f4 (patch) | |
tree | 6455cf41196967db7073bffb9064ea885b410235 /ip/iproute.c | |
parent | e120c4bf77ddd60b94cecbe480158bf676a3d64f (diff) | |
parent | b7a3df0f3c56c10587e926307daaa87fc3b854bf (diff) | |
download | android_external_iproute2-39c15e7bbb2a5f52997dcbd12729dbe07f50f0f4.tar.gz android_external_iproute2-39c15e7bbb2a5f52997dcbd12729dbe07f50f0f4.tar.bz2 android_external_iproute2-39c15e7bbb2a5f52997dcbd12729dbe07f50f0f4.zip |
Merge "Support experimental UID range routing."
Diffstat (limited to 'ip/iproute.c')
-rw-r--r-- | ip/iproute.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ip/iproute.c b/ip/iproute.c index 5cd313e..8dc0bc8 100644 --- a/ip/iproute.c +++ b/ip/iproute.c @@ -62,7 +62,7 @@ static void usage(void) fprintf(stderr, " ip route restore\n"); fprintf(stderr, " ip route get ADDRESS [ from ADDRESS iif STRING ]\n"); fprintf(stderr, " [ oif STRING ] [ tos TOS ]\n"); - fprintf(stderr, " [ mark NUMBER ]\n"); + fprintf(stderr, " [ mark NUMBER ] [ uid NUMBER ]\n"); fprintf(stderr, " ip route { add | del | change | append | replace } ROUTE\n"); fprintf(stderr, "SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]\n"); fprintf(stderr, " [ table TABLE_ID ] [ proto RTPROTO ]\n"); @@ -423,6 +423,9 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) } } + 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; @@ -1401,6 +1404,11 @@ int iproute_get(int argc, char **argv) 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) { |