projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
get rthashsize from kernel
[unix-history]
/
usr
/
src
/
usr.bin
/
netstat
/
route.c
diff --git
a/usr/src/usr.bin/netstat/route.c
b/usr/src/usr.bin/netstat/route.c
index
b7140dc
..
f37ba7e
100644
(file)
--- a/
usr/src/usr.bin/netstat/route.c
+++ b/
usr/src/usr.bin/netstat/route.c
@@
-1,5
+1,5
@@
#ifndef lint
#ifndef lint
-static char sccsid[] = "@(#)route.c 4.
8 84/05/17
";
+static char sccsid[] = "@(#)route.c 4.
9 84/10/31
";
#endif
#include <sys/types.h>
#endif
#include <sys/types.h>
@@
-7,7
+7,6
@@
static char sccsid[] = "@(#)route.c 4.8 84/05/17";
#include <sys/mbuf.h>
#include <net/if.h>
#include <sys/mbuf.h>
#include <net/if.h>
-#define KERNEL /* to get routehash and RTHASHSIZ */
#include <net/route.h>
#include <netinet/in.h>
#include <net/route.h>
#include <netinet/in.h>
@@
-33,19
+32,18
@@
struct bits {
/*
* Print routing tables.
*/
/*
* Print routing tables.
*/
-routepr(hostaddr, netaddr)
- off_t hostaddr, netaddr;
+routepr(hostaddr, netaddr
, hashsizeaddr
)
+ off_t hostaddr, netaddr
, hashsizeaddr
;
{
struct mbuf mb;
register struct rtentry *rt;
register struct mbuf *m;
register struct bits *p;
{
struct mbuf mb;
register struct rtentry *rt;
register struct mbuf *m;
register struct bits *p;
- struct netent *np;
- struct hostent *hp;
char name[16], *flags;
char name[16], *flags;
- struct mbuf *
routehash[RTHASHSIZ]
;
+ struct mbuf *
*routehash
;
struct ifnet ifnet;
struct ifnet ifnet;
- int first = 1, i, doinghost = 1;
+ int hashsize;
+ int i, doinghost = 1;
if (hostaddr == 0) {
printf("rthost: symbol not in namelist\n");
if (hostaddr == 0) {
printf("rthost: symbol not in namelist\n");
@@
-55,14
+53,21
@@
routepr(hostaddr, netaddr)
printf("rtnet: symbol not in namelist\n");
return;
}
printf("rtnet: symbol not in namelist\n");
return;
}
+ if (hashsizeaddr == 0) {
+ printf("rthashsize: symbol not in namelist\n");
+ return;
+ }
+ klseek(kmem, hashsizeaddr, 0);
+ read(kmem, &hashsize, sizeof (hashsize));
+ routehash = (struct mbuf **)malloc( hashsize*sizeof (struct mbuf *) );
klseek(kmem, hostaddr, 0);
klseek(kmem, hostaddr, 0);
- read(kmem, routehash,
sizeof (routehash
));
+ read(kmem, routehash,
hashsize*sizeof (struct mbuf *
));
printf("Routing tables\n");
printf("%-15.15s %-15.15s %-8.8s %-6.6s %-10.10s %s\n",
"Destination", "Gateway",
"Flags", "Refcnt", "Use", "Interface");
again:
printf("Routing tables\n");
printf("%-15.15s %-15.15s %-8.8s %-6.6s %-10.10s %s\n",
"Destination", "Gateway",
"Flags", "Refcnt", "Use", "Interface");
again:
- for (i = 0; i <
RTHASHSIZ
; i++) {
+ for (i = 0; i <
hashsize
; i++) {
if (routehash[i] == 0)
continue;
m = routehash[i];
if (routehash[i] == 0)
continue;
m = routehash[i];
@@
-99,10
+104,11
@@
again:
}
if (doinghost) {
klseek(kmem, netaddr, 0);
}
if (doinghost) {
klseek(kmem, netaddr, 0);
- read(kmem, routehash,
sizeof (routehash
));
+ read(kmem, routehash,
hashsize*sizeof (struct mbuf *
));
doinghost = 0;
goto again;
}
doinghost = 0;
goto again;
}
+ free(routehash);
}
char *
}
char *
@@
-123,8
+129,6
@@
routename(in)
np = getnetbyaddr(net, AF_INET);
if (np)
cp = np->n_name;
np = getnetbyaddr(net, AF_INET);
if (np)
cp = np->n_name;
- else if (net == 0)
- cp = "default";
} else if ((subnet != net) && ((lna & 0xff) == 0) &&
(np = getnetbyaddr(subnet, AF_INET))) {
struct in_addr subnaddr, inet_makeaddr();
} else if ((subnet != net) && ((lna & 0xff) == 0) &&
(np = getnetbyaddr(subnet, AF_INET))) {
struct in_addr subnaddr, inet_makeaddr();