summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2004-06-13 10:57:10 +0000
committerdfr <dfr@FreeBSD.org>2004-06-13 10:57:10 +0000
commitf670e3d9a849f66fd9524fcc3d86be41cad0bc91 (patch)
tree86a0404685f09f96c27fc4133d14733ca80f828a /usr.sbin
parenta1fa8042f5e49d1e07a282f98704243b2620baad (diff)
downloadFreeBSD-src-f670e3d9a849f66fd9524fcc3d86be41cad0bc91.zip
FreeBSD-src-f670e3d9a849f66fd9524fcc3d86be41cad0bc91.tar.gz
Be smarter about printing non-ethernet link-level addresses.
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/arp/arp.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/usr.sbin/arp/arp.c b/usr.sbin/arp/arp.c
index cd35cb0..0a35859 100644
--- a/usr.sbin/arp/arp.c
+++ b/usr.sbin/arp/arp.c
@@ -526,9 +526,16 @@ print_entry(struct sockaddr_dl *sdl,
nflag = 1;
}
printf("%s (%s) at ", host, inet_ntoa(addr->sin_addr));
- if (sdl->sdl_alen)
- printf("%s", ether_ntoa((struct ether_addr *)LLADDR(sdl)));
- else
+ if (sdl->sdl_alen) {
+ if (sdl->sdl_type == IFT_ETHER &&
+ sdl->sdl_alen == ETHER_ADDR_LEN)
+ printf("%s", ether_ntoa((struct ether_addr *)LLADDR(sdl)));
+ else {
+ int n = sdl->sdl_nlen > 0 ? sdl->sdl_nlen + 1 : 0;
+
+ printf("%s", link_ntoa(sdl) + n);
+ }
+ } else
printf("(incomplete)");
if (if_indextoname(sdl->sdl_index, ifname) != NULL)
printf(" on %s", ifname);
@@ -568,6 +575,9 @@ print_entry(struct sockaddr_dl *sdl,
case IFT_L2VLAN:
printf(" [vlan]");
break;
+ case IFT_IEEE1394:
+ printf(" [firewire]");
+ break;
default:
break;
}
OpenPOWER on IntegriCloud