Changes extracted from diff.gz, not present in upstream's CVS. Index: net-tools/lib/ec_hw.c =================================================================== --- net-tools.orig/lib/ec_hw.c +++ net-tools/lib/ec_hw.c @@ -16,6 +16,8 @@ #if HAVE_HWEC +#include <stddef.h> + #include <net/if_arp.h> #include "net-support.h" Index: net-tools/lib/fddi.c =================================================================== --- net-tools.orig/lib/fddi.c +++ net-tools/lib/fddi.c @@ -26,6 +26,7 @@ #error "No FDDI Support in your current Kernelsource Tree." #error "Disable HW Type FDDI" #endif +#include <linux/types.h> #if __GLIBC__ >= 2 #include <netinet/if_fddi.h> #else Index: net-tools/lib/interface.c =================================================================== --- net-tools.orig/lib/interface.c +++ net-tools/lib/interface.c @@ -594,7 +594,7 @@ int do_if_print(struct interface *ife, v void ife_print_short(struct interface *ptr) { - printf("%-5.5s ", ptr->name); + printf("%-9s ", ptr->name); printf("%5d %-2d ", ptr->mtu, ptr->metric); /* If needed, display the interface statistics. */ if (ptr->statistics_valid) { @@ -653,8 +653,7 @@ void ife_print_long(struct interface *pt unsigned long long rx, tx, short_rx, short_tx; const char *Rext = "B"; const char *Text = "B"; - static char flags[200]; - + #if HAVE_AFIPX static struct aftype *ipxtype = NULL; #endif @@ -686,70 +685,32 @@ void ife_print_long(struct interface *pt if (hw == NULL) hw = get_hwntype(-1); - sprintf(flags, "flags=%d<", ptr->flags); - /* DONT FORGET TO ADD THE FLAGS IN ife_print_short, too */ - if (ptr->flags == 0) - strcat(flags,">"); - if (ptr->flags & IFF_UP) - strcat(flags,_("UP,")); - if (ptr->flags & IFF_BROADCAST) - strcat(flags,_("BROADCAST,")); - if (ptr->flags & IFF_DEBUG) - strcat(flags,_("DEBUG,")); - if (ptr->flags & IFF_LOOPBACK) - strcat(flags,_("LOOPBACK,")); - if (ptr->flags & IFF_POINTOPOINT) - strcat(flags,_("POINTOPOINT,")); - if (ptr->flags & IFF_NOTRAILERS) - strcat(flags,_("NOTRAILERS,")); - if (ptr->flags & IFF_RUNNING) - strcat(flags,_("RUNNING,")); - if (ptr->flags & IFF_NOARP) - strcat(flags,_("NOARP,")); - if (ptr->flags & IFF_PROMISC) - strcat(flags,_("PROMISC,")); - if (ptr->flags & IFF_ALLMULTI) - strcat(flags,_("ALLMULTI,")); - if (ptr->flags & IFF_SLAVE) - strcat(flags,_("SLAVE,")); - if (ptr->flags & IFF_MASTER) - strcat(flags,_("MASTER,")); - if (ptr->flags & IFF_MULTICAST) - strcat(flags,_("MULTICAST,")); -#ifdef HAVE_DYNAMIC - if (ptr->flags & IFF_DYNAMIC) - strcat(flags,_("DYNAMIC,")); -#endif - /* DONT FORGET TO ADD THE FLAGS IN ife_print_short */ - if (flags[strlen(flags)-1] == ',') - flags[strlen(flags)-1] = '>'; - else - flags[strlen(flags)-1] = 0; - - - printf(_("%s: %s mtu %d metric %d"), - ptr->name, flags, ptr->mtu, ptr->metric ? ptr->metric : 1); -#ifdef SIOCSKEEPALIVE - if (ptr->outfill || ptr->keepalive) - printf(_(" outfill %d keepalive %d"), - ptr->outfill, ptr->keepalive); + printf(_("%-9s Link encap:%s "), ptr->name, hw->title); + /* For some hardware types (eg Ash, ATM) we don't print the + hardware address if it's null. */ + if (hw->print != NULL && (! (hw_null_address(hw, ptr->hwaddr) && + hw->suppress_null_addr))) + printf(_("HWaddr %s "), hw->print(ptr->hwaddr)); +#ifdef IFF_PORTSEL + if (ptr->flags & IFF_PORTSEL) { + printf(_("Media:%s"), if_port_text[ptr->map.port][0]); + if (ptr->flags & IFF_AUTOMEDIA) + printf(_("(auto)")); + } #endif printf("\n"); - - #if HAVE_AFINET if (ptr->has_ip) { - printf(_(" %s %s"), ap->name, + printf(_(" %s addr:%s "), ap->name, ap->sprint(&ptr->addr, 1)); - printf(_(" netmask %s"), ap->sprint(&ptr->netmask, 1)); - if (ptr->flags & IFF_BROADCAST) { - printf(_(" broadcast %s"), ap->sprint(&ptr->broadaddr, 1)); - } if (ptr->flags & IFF_POINTOPOINT) { - printf(_(" destination %s"), ap->sprint(&ptr->dstaddr, 1)); + printf(_(" P-t-P:%s "), ap->sprint(&ptr->dstaddr, 1)); } - printf("\n"); + if (ptr->flags & IFF_BROADCAST) { + printf(_(" Bcast:%s "), ap->sprint(&ptr->broadaddr, 1)); + } + printf(_(" Mask:%s\n"), ap->sprint(&ptr->netmask, 1)); } #endif @@ -757,7 +718,7 @@ void ife_print_long(struct interface *pt /* FIXME: should be integrated into interface.c. */ if ((f = fopen(_PATH_PROCNET_IFINET6, "r")) != NULL) { - while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %20s\n", + while (fscanf(f, "%4s%4s%4s%4s%4s%4s%4s%4s %08x %02x %02x %02x %20s\n", addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7], &if_idx, &plen, &scope, &dad_status, devname) != EOF) { @@ -766,30 +727,29 @@ void ife_print_long(struct interface *pt addr6p[0], addr6p[1], addr6p[2], addr6p[3], addr6p[4], addr6p[5], addr6p[6], addr6p[7]); inet6_aftype.input(1, addr6, (struct sockaddr *) &sap); - printf(_(" %s %s prefixlen %d"), - inet6_aftype.name, - inet6_aftype.sprint((struct sockaddr *) &sap, 1), - plen); - printf(_(" scopeid 0x%x"), scope); - - flags[0] = '<'; flags[1] = 0; - if (scope & IPV6_ADDR_COMPATv4) { - strcat(flags, _("compat,")); - scope -= IPV6_ADDR_COMPATv4; + printf(_(" inet6 addr: %s/%d"), + inet6_aftype.sprint((struct sockaddr *) &sap, 1), plen); + printf(_(" Scope:")); + switch (scope) { + case 0: + printf(_("Global")); + break; + case IPV6_ADDR_LINKLOCAL: + printf(_("Link")); + break; + case IPV6_ADDR_SITELOCAL: + printf(_("Site")); + break; + case IPV6_ADDR_COMPATv4: + printf(_("Compat")); + break; + case IPV6_ADDR_LOOPBACK: + printf(_("Host")); + break; + default: + printf(_("Unknown")); } - if (scope == 0) - strcat(flags, _("global,")); - if (scope & IPV6_ADDR_LINKLOCAL) - strcat(flags, _("link,")); - if (scope & IPV6_ADDR_SITELOCAL) - strcat(flags, _("site,")); - if (scope & IPV6_ADDR_LOOPBACK) - strcat(flags, _("host,")); - if (flags[strlen(flags)-1] == ',') - flags[strlen(flags)-1] = '>'; - else - flags[strlen(flags)-1] = 0; - printf("%s\n", flags); + printf("\n"); } } fclose(f); @@ -802,17 +762,17 @@ void ife_print_long(struct interface *pt if (ipxtype != NULL) { if (ptr->has_ipx_bb) - printf(_(" %s Ethernet-II %s\n"), - ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_bb, 1)); + printf(_(" IPX/Ethernet II addr:%s\n"), + ipxtype->sprint(&ptr->ipxaddr_bb, 1)); if (ptr->has_ipx_sn) - printf(_(" %s Ethernet-SNAP %s\n"), - ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_sn, 1)); + printf(_(" IPX/Ethernet SNAP addr:%s\n"), + ipxtype->sprint(&ptr->ipxaddr_sn, 1)); if (ptr->has_ipx_e2) - printf(_(" %s Ethernet802.2 %s\n"), - ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_e2, 1)); + printf(_(" IPX/Ethernet 802.2 addr:%s\n"), + ipxtype->sprint(&ptr->ipxaddr_e2, 1)); if (ptr->has_ipx_e3) - printf(_(" %s Ethernet802.3 %s\n"), - ipxtype->name, ipxtype->sprint(&ptr->ipxaddr_e3, 1)); + printf(_(" IPX/Ethernet 802.3 addr:%s\n"), + ipxtype->sprint(&ptr->ipxaddr_e3, 1)); } #endif @@ -821,7 +781,7 @@ void ife_print_long(struct interface *pt ddptype = get_afntype(AF_APPLETALK); if (ddptype != NULL) { if (ptr->has_ddp) - printf(_(" %s %s\n"), ddptype->name, ddptype->sprint(&ptr->ddpaddr, 1)); + printf(_(" EtherTalk Phase 2 addr:%s\n"), ddptype->sprint(&ptr->ddpaddr, 1)); } #endif @@ -830,30 +790,53 @@ void ife_print_long(struct interface *pt ectype = get_afntype(AF_ECONET); if (ectype != NULL) { if (ptr->has_econet) - printf(_(" %s %s\n"), ectype->name, ectype->sprint(&ptr->ecaddr, 1)); + printf(_(" econet addr:%s\n"), ectype->sprint(&ptr->ecaddr, 1)); } #endif - /* For some hardware types (eg Ash, ATM) we don't print the - hardware address if it's null. */ - if (hw->print != NULL && (! (hw_null_address(hw, ptr->hwaddr) && - hw->suppress_null_addr))) - printf(_(" %s %s"), hw->name, hw->print(ptr->hwaddr)); - else - printf(_(" %s"), hw->name); - if (ptr->tx_queue_len != -1) - printf(_(" txqueuelen %d"), ptr->tx_queue_len); - printf(" (%s)\n", hw->title); - -#ifdef IFF_PORTSEL - if (ptr->flags & IFF_PORTSEL) { - printf(_(" media %s"), if_port_text[ptr->map.port][0]); - if (ptr->flags & IFF_AUTOMEDIA) - printf(_("autoselect")); - printf("\n"); - } + printf(" "); + /* DONT FORGET TO ADD THE FLAGS IN ife_print_short, too */ + if (ptr->flags == 0) + printf(_("[NO FLAGS] ")); + if (ptr->flags & IFF_UP) + printf(_("UP ")); + if (ptr->flags & IFF_BROADCAST) + printf(_("BROADCAST ")); + if (ptr->flags & IFF_DEBUG) + printf(_("DEBUG ")); + if (ptr->flags & IFF_LOOPBACK) + printf(_("LOOPBACK ")); + if (ptr->flags & IFF_POINTOPOINT) + printf(_("POINTOPOINT ")); + if (ptr->flags & IFF_NOTRAILERS) + printf(_("NOTRAILERS ")); + if (ptr->flags & IFF_RUNNING) + printf(_("RUNNING ")); + if (ptr->flags & IFF_NOARP) + printf(_("NOARP ")); + if (ptr->flags & IFF_PROMISC) + printf(_("PROMISC ")); + if (ptr->flags & IFF_ALLMULTI) + printf(_("ALLMULTI ")); + if (ptr->flags & IFF_SLAVE) + printf(_("SLAVE ")); + if (ptr->flags & IFF_MASTER) + printf(_("MASTER ")); + if (ptr->flags & IFF_MULTICAST) + printf(_("MULTICAST ")); +#ifdef HAVE_DYNAMIC + if (ptr->flags & IFF_DYNAMIC) + printf(_("DYNAMIC ")); #endif - + /* DONT FORGET TO ADD THE FLAGS IN ife_print_short */ + printf(_(" MTU:%d Metric:%d"), + ptr->mtu, ptr->metric ? ptr->metric : 1); +#ifdef SIOCSKEEPALIVE + if (ptr->outfill || ptr->keepalive) + printf(_(" Outfill:%d Keepalive:%d"), + ptr->outfill, ptr->keepalive); +#endif + printf("\n"); /* If needed, display the interface statistics. */ @@ -862,8 +845,19 @@ void ife_print_long(struct interface *pt * not for the aliases, although strictly speaking they're shared * by all addresses. */ + printf(" "); + + printf(_("RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"), + ptr->stats.rx_packets, ptr->stats.rx_errors, + ptr->stats.rx_dropped, ptr->stats.rx_fifo_errors, + ptr->stats.rx_frame_errors); + if (can_compress) + printf(_(" compressed:%lu\n"), ptr->stats.rx_compressed); + rx = ptr->stats.rx_bytes; + tx = ptr->stats.tx_bytes; short_rx = rx * 10; + short_tx = tx * 10; if (rx > 1125899906842624ull) { short_rx /= 1125899906842624ull; Rext = "PiB"; @@ -880,8 +874,6 @@ void ife_print_long(struct interface *pt short_rx /= 1024; Rext = "KiB"; } - tx = ptr->stats.tx_bytes; - short_tx = tx * 10; if (tx > 1125899906842624ull) { short_tx /= 1125899906842624ull; Text = "PiB"; @@ -899,50 +891,37 @@ void ife_print_long(struct interface *pt Text = "KiB"; } - printf(" "); - printf(_("RX packets %llu bytes %llu (%lu.%lu %s)\n"), - ptr->stats.rx_packets, - rx, (unsigned long)(short_rx / 10), - (unsigned long)(short_rx % 10), Rext); - if (can_compress) { - printf(" "); - printf(_("RX compressed:%lu\n"), ptr->stats.rx_compressed); - } - printf(" "); - printf(_("RX errors %lu dropped %lu overruns %lu frame %lu\n"), - ptr->stats.rx_errors, ptr->stats.rx_dropped, - ptr->stats.rx_fifo_errors, ptr->stats.rx_frame_errors); - - - printf(" "); - printf(_("TX packets %llu bytes %llu (%lu.%lu %s)\n"), - ptr->stats.tx_packets, - tx, (unsigned long)(short_tx / 10), - (unsigned long)(short_tx % 10), Text); - if (can_compress) { - printf(" "); - printf(_("TX compressed %lu\n"), ptr->stats.tx_compressed); - } - printf(" "); - printf(_("TX errors %lu dropped %lu overruns %lu carrier %lu collisions %lu\n"), - ptr->stats.tx_errors, + printf(" "); + printf(_("TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"), + ptr->stats.tx_packets, ptr->stats.tx_errors, ptr->stats.tx_dropped, ptr->stats.tx_fifo_errors, - ptr->stats.tx_carrier_errors, ptr->stats.collisions); + ptr->stats.tx_carrier_errors); + printf(_(" collisions:%lu "), ptr->stats.collisions); + if (can_compress) + printf(_("compressed:%lu "), ptr->stats.tx_compressed); + if (ptr->tx_queue_len != -1) + printf(_("txqueuelen:%d "), ptr->tx_queue_len); + printf("\n "); + printf(_("RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"), + rx, (unsigned long)(short_rx / 10), + (unsigned long)(short_rx % 10), Rext, + tx, (unsigned long)(short_tx / 10), + (unsigned long)(short_tx % 10), Text); } if ((ptr->map.irq || ptr->map.mem_start || ptr->map.dma || ptr->map.base_addr >= 0x100)) { - printf(" device "); + printf(" "); if (ptr->map.irq) - printf(_("interrupt %d "), ptr->map.irq); + printf(_("Interrupt:%d "), ptr->map.irq); if (ptr->map.base_addr >= 0x100) /* Only print devices using it for I/O maps */ - printf(_("base 0x%x "), ptr->map.base_addr); + printf(_("Base address:0x%x "), ptr->map.base_addr); if (ptr->map.mem_start) { - printf(_("memory 0x%lx-%lx "), ptr->map.mem_start, ptr->map.mem_end); + printf(_("Memory:%lx-%lx "), ptr->map.mem_start, ptr->map.mem_end); } if (ptr->map.dma) - printf(_(" dma 0x%x"), ptr->map.dma); + printf(_("DMA chan:%x "), ptr->map.dma); printf("\n"); } printf("\n");