diff options
author | Sreeram Ramachandran <sreeram@google.com> | 2014-07-08 15:40:55 -0700 |
---|---|---|
committer | Sreeram Ramachandran <sreeram@google.com> | 2014-07-08 16:29:45 -0700 |
commit | 2b3bba34aec65b612be8d1f52cd124d9c30955f9 (patch) | |
tree | 8696d520cd8052bda2d6e1af2a3395b182b3903f /cmds/dumpstate/utils.c | |
parent | f9cfae24123bae199a07bee2dd1c307906c6e6d0 (diff) | |
download | frameworks_native-2b3bba34aec65b612be8d1f52cd124d9c30955f9.zip frameworks_native-2b3bba34aec65b612be8d1f52cd124d9c30955f9.tar.gz frameworks_native-2b3bba34aec65b612be8d1f52cd124d9c30955f9.tar.bz2 |
Dump all the correct routing tables.
The list of tables is maintained in /data/misc/net/rt_tables by netd.
Change-Id: I55475c08c5e43bcf61af916210e680c47480ac32
Diffstat (limited to 'cmds/dumpstate/utils.c')
-rw-r--r-- | cmds/dumpstate/utils.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/cmds/dumpstate/utils.c b/cmds/dumpstate/utils.c index 670e09c..3b19f59 100644 --- a/cmds/dumpstate/utils.c +++ b/cmds/dumpstate/utils.c @@ -593,3 +593,22 @@ error_close_fd: void play_sound(const char* path) { run_command(NULL, 5, "/system/bin/stagefright", "-o", "-a", path, NULL); } + +void dump_route_tables() { + const char* const RT_TABLES_PATH = "/data/misc/net/rt_tables"; + dump_file("RT_TABLES", RT_TABLES_PATH); + FILE* fp = fopen(RT_TABLES_PATH, "r"); + if (!fp) { + printf("*** %s: %s\n", RT_TABLES_PATH, strerror(errno)); + return; + } + char table[16]; + // Each line has an integer (the table number), a space, and a string (the table name). We only + // need the table number. It's a 32-bit unsigned number, so max 10 chars. Skip the table name. + // Add a fixed max limit so this doesn't go awry. + for (int i = 0; i < 64 && fscanf(fp, " %10s %*s", table) == 1; ++i) { + run_command("ROUTE TABLE IPv4", 10, "ip", "-4", "route", "show", "table", table, NULL); + run_command("ROUTE TABLE IPv6", 10, "ip", "-6", "route", "show", "table", table, NULL); + } + fclose(fp); +} |