summaryrefslogtreecommitdiffstats
path: root/usr.sbin/arp
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2002-04-06 09:01:44 +0000
committerru <ru@FreeBSD.org>2002-04-06 09:01:44 +0000
commit917e88d84ad0e700cecb43fb78613a8b75e76f53 (patch)
treebf9d820dfc249e7f69e3d74a65057d6d533ca77e /usr.sbin/arp
parent7f897ef0890ea092be8efd4e4f80009ba5d37142 (diff)
downloadFreeBSD-src-917e88d84ad0e700cecb43fb78613a8b75e76f53.zip
FreeBSD-src-917e88d84ad0e700cecb43fb78613a8b75e76f53.tar.gz
Don't reinvent the wheel now that ether_ntoa(3) has been fixed
to print leading zeros in libc_net/ether_addr.c,v 1.13. MFC after: 3 days
Diffstat (limited to 'usr.sbin/arp')
-rw-r--r--usr.sbin/arp/arp.c38
1 files changed, 13 insertions, 25 deletions
diff --git a/usr.sbin/arp/arp.c b/usr.sbin/arp/arp.c
index 9674f83..e7536b7 100644
--- a/usr.sbin/arp/arp.c
+++ b/usr.sbin/arp/arp.c
@@ -89,15 +89,14 @@ void print_entry(struct sockaddr_dl *sdl,
void nuke_entry(struct sockaddr_dl *sdl,
struct sockaddr_inarp *addr, struct rt_msghdr *rtm);
int delete(char *host, char *info);
-void ether_print(u_char *cp);
void usage(void);
int set(int argc, char **argv);
int get(char *host);
int file(char *name);
void getsocket(void);
-int my_ether_aton(char *a, u_char *n);
+int my_ether_aton(char *a, struct ether_addr *n);
int rtmsg(int cmd);
-int get_ether_addr(u_int32_t ipaddr, u_char *hwaddr);
+int get_ether_addr(u_int32_t ipaddr, struct ether_addr *hwaddr);
static int pid;
static int nflag; /* no reverse dns lookups */
@@ -264,7 +263,7 @@ set(int argc, char **argv)
register struct sockaddr_inarp *addr = &sin_m;
register struct sockaddr_dl *sdl;
register struct rt_msghdr *rtm = &(m_rtmsg.m_rtm);
- u_char *ea;
+ struct ether_addr *ea;
char *host = argv[0], *eaddr = argv[1];
getsocket();
@@ -302,17 +301,17 @@ set(int argc, char **argv)
}
argv++;
}
- ea = (u_char *)LLADDR(&sdl_m);
+ ea = (struct ether_addr *)LLADDR(&sdl_m);
if (doing_proxy && !strcmp(eaddr, "auto")) {
if (!get_ether_addr(addr->sin_addr.s_addr, ea)) {
printf("no interface found for %s\n",
inet_ntoa(addr->sin_addr));
return (1);
}
- sdl_m.sdl_alen = 6;
+ sdl_m.sdl_alen = ETHER_ADDR_LEN;
} else {
if (my_ether_aton(eaddr, ea) == 0)
- sdl_m.sdl_alen = 6;
+ sdl_m.sdl_alen = ETHER_ADDR_LEN;
}
tryagain:
if (rtmsg(RTM_GET) < 0) {
@@ -507,7 +506,7 @@ print_entry(struct sockaddr_dl *sdl,
}
printf("%s (%s) at ", host, inet_ntoa(addr->sin_addr));
if (sdl->sdl_alen)
- ether_print(LLADDR(sdl));
+ printf("%s", ether_ntoa((struct ether_addr *)LLADDR(sdl)));
else
printf("(incomplete)");
if (if_indextoname(sdl->sdl_index, ifname) != NULL)
@@ -565,26 +564,16 @@ nuke_entry(struct sockaddr_dl *sdl __unused,
delete(ip, NULL);
}
-void
-ether_print(u_char *cp)
-{
- printf("%02x:%02x:%02x:%02x:%02x:%02x", cp[0], cp[1], cp[2], cp[3],
- cp[4], cp[5]);
-}
-
int
-my_ether_aton(char *a, u_char *n)
+my_ether_aton(char *a, struct ether_addr *n)
{
- int i, o[6];
+ struct ether_addr *ea;
- i = sscanf(a, "%x:%x:%x:%x:%x:%x", &o[0], &o[1], &o[2],
- &o[3], &o[4], &o[5]);
- if (i != 6) {
+ if ((ea = ether_aton(a)) == NULL) {
warnx("invalid Ethernet address '%s'", a);
return (1);
}
- for (i=0; i<6; i++)
- n[i] = o[i];
+ *n = *ea;
return (0);
}
@@ -673,7 +662,7 @@ doit:
#define MAX_IFS 32
int
-get_ether_addr(u_int32_t ipaddr, u_char *hwaddr)
+get_ether_addr(u_int32_t ipaddr, struct ether_addr *hwaddr)
{
struct ifreq *ifr, *ifend, *ifp;
u_int32_t ina, mask;
@@ -755,8 +744,7 @@ nextif:
close (sock);
printf("using interface %s for proxy with address ",
ifp->ifr_name);
- ether_print(hwaddr);
- printf("\n");
+ printf("%s\n", ether_ntoa(hwaddr));
return dla->sdl_alen;
}
ifr = (struct ifreq *) ((char *)&ifr->ifr_addr
OpenPOWER on IntegriCloud