static char sccsid
[] = "@(#)if.c 4.3 82/10/07";
extern char *routename();
* Print a description of the network interfaces.
intpr(interval
, ifnetaddr
)
printf("ifnet: symbol not defined\n");
sidewaysintpr(interval
, ifnetaddr
);
klseek(kmem
, ifnetaddr
, 0);
read(kmem
, &ifnetaddr
, sizeof ifnetaddr
);
printf("%-5.5s %-5.5s %-10.10s %-12.12s %-7.7s %-5.5s %-7.7s %-5.5s",
"Name", "Mtu", "Network", "Address", "Ipkts", "Ierrs",
printf(" %-6.6s", "Collis");
printf(" %-6.6s", "Timer");
struct in_addr in
, inet_makeaddr();
klseek(kmem
, ifnetaddr
, 0);
read(kmem
, &ifnet
, sizeof ifnet
);
klseek(kmem
, (int)ifnet
.if_name
, 0);
*cp
++ = ifnet
.if_unit
+ '0';
if ((ifnet
.if_flags
&IFF_UP
) == 0)
printf("%-5.5s %-5d ", name
, ifnet
.if_mtu
);
sin
= (struct sockaddr_in
*)&ifnet
.if_addr
;
in
= inet_makeaddr(ifnet
.if_net
, INADDR_ANY
);
printf("%-10.10s ", routename(in
));
printf("%-12.12s %-7d %-5d %-7d %-5d %-6d",
routename(sin
->sin_addr
),
ifnet
.if_ipackets
, ifnet
.if_ierrors
,
ifnet
.if_opackets
, ifnet
.if_oerrors
,
printf(" %-6d", ifnet
.if_timer
);
ifnetaddr
= (off_t
) ifnet
.if_next
;
char ift_name
[16]; /* interface name */
int ift_ip
; /* input packets */
int ift_ie
; /* input errors */
int ift_op
; /* output packets */
int ift_oe
; /* output errors */
int ift_co
; /* collisions */
* Print a running summary of interface statistics.
* Repeat display every interval seconds, showing
* statistics collected over that interval. First
* line printed at top of screen is always cumulative.
sidewaysintpr(interval
, off
)
register struct iftot
*ip
, *total
;
struct iftot
*lastif
, *sum
, *interesting
;
read(kmem
, &firstifnet
, sizeof (off_t
));
for (off
= firstifnet
, ip
= iftot
; off
;) {
read(kmem
, &ifnet
, sizeof ifnet
);
klseek(kmem
, (int)ifnet
.if_name
, 0);
read(kmem
, ip
->ift_name
+ 1, 15);
cp
= index(ip
->ift_name
, '\0');
sprintf(cp
, "%d)", ifnet
.if_unit
);
if (ip
>= iftot
+ MAXIF
- 2)
off
= (off_t
) ifnet
.if_next
;
printf(" input %-6.6s output ", interesting
->ift_name
);
printf(" input (Total) output ");
for (ip
= iftot
; ip
< iftot
+ MAXIF
; ip
++) {
printf("%-7.7s %-5.5s %-7.7s %-5.5s %-5.5s ",
"packets", "errs", "packets", "errs", "colls");
printf("%-7.7s %-5.5s %-7.7s %-5.5s %-5.5s ",
"packets", "errs", "packets", "errs", "colls");
for (off
= firstifnet
, ip
= iftot
; off
&& ip
< lastif
; ip
++) {
read(kmem
, &ifnet
, sizeof ifnet
);
printf("%-7d %-5d %-7d %-5d %-5d ",
ifnet
.if_ipackets
- ip
->ift_ip
,
ifnet
.if_ierrors
- ip
->ift_ie
,
ifnet
.if_opackets
- ip
->ift_op
,
ifnet
.if_oerrors
- ip
->ift_oe
,
ifnet
.if_collisions
- ip
->ift_co
);
ip
->ift_ip
= ifnet
.if_ipackets
;
ip
->ift_ie
= ifnet
.if_ierrors
;
ip
->ift_op
= ifnet
.if_opackets
;
ip
->ift_oe
= ifnet
.if_oerrors
;
ip
->ift_co
= ifnet
.if_collisions
;
sum
->ift_ip
+= ip
->ift_ip
;
sum
->ift_ie
+= ip
->ift_ie
;
sum
->ift_op
+= ip
->ift_op
;
sum
->ift_oe
+= ip
->ift_oe
;
sum
->ift_co
+= ip
->ift_co
;
off
= (off_t
) ifnet
.if_next
;
printf("%-7d %-5d %-7d %-5d %-5d\n",
sum
->ift_ip
- total
->ift_ip
,
sum
->ift_ie
- total
->ift_ie
,
sum
->ift_op
- total
->ift_op
,
sum
->ift_oe
- total
->ift_oe
,
sum
->ift_co
- total
->ift_co
);