summaryrefslogtreecommitdiffstats
path: root/usr.bin/netstat/route.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/netstat/route.c')
-rw-r--r--usr.bin/netstat/route.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/usr.bin/netstat/route.c b/usr.bin/netstat/route.c
index dd91330..1de12cc 100644
--- a/usr.bin/netstat/route.c
+++ b/usr.bin/netstat/route.c
@@ -143,17 +143,20 @@ static void domask(char *, in_addr_t, u_long);
* Print routing tables.
*/
void
-routepr(u_long rtree)
+routepr(u_long rtree, int fibnum)
{
struct radix_node_head **rnhp, *rnh, head;
size_t intsize;
- int fam, fibnum, numfibs;
+ int fam, numfibs;
intsize = sizeof(int);
- if (sysctlbyname("net.my_fibnum", &fibnum, &intsize, NULL, 0) == -1)
+ if (fibnum == -1 &&
+ sysctlbyname("net.my_fibnum", &fibnum, &intsize, NULL, 0) == -1)
fibnum = 0;
if (sysctlbyname("net.fibs", &numfibs, &intsize, NULL, 0) == -1)
numfibs = 1;
+ if (fibnum < 0 || fibnum > numfibs - 1)
+ errx(EX_USAGE, "%d: invalid fib", fibnum);
rt_tables = calloc(numfibs * (AF_MAX+1),
sizeof(struct radix_node_head *));
if (rt_tables == NULL)
@@ -166,7 +169,10 @@ routepr(u_long rtree)
if (clock_gettime(CLOCK_UPTIME, &uptime) < 0)
err(EX_OSERR, "clock_gettime() failed");
- printf("Routing tables\n");
+ printf("Routing tables");
+ if (fibnum)
+ printf(" (fib: %d)", fibnum);
+ printf("\n");
if (Aflag == 0 && NewTree)
ntreestuff();
OpenPOWER on IntegriCloud