use ether_aton() from libc; from Klaus Klein <kleink@layla.inka.de>,

with some modifications by myself.
This commit is contained in:
mikel 1997-01-18 02:12:13 +00:00
parent 0512081ce4
commit 38f1be3526

@ -1,4 +1,4 @@
/* $NetBSD: arp.c,v 1.13 1996/12/08 13:59:11 mycroft Exp $ */
/* $NetBSD: arp.c,v 1.14 1997/01/18 02:12:13 mikel Exp $ */
/*
* Copyright (c) 1984, 1993
@ -44,7 +44,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "from: @(#)arp.c 8.2 (Berkeley) 1/2/94";*/
static char *rcsid = "$NetBSD: arp.c,v 1.13 1996/12/08 13:59:11 mycroft Exp $";
static char *rcsid = "$NetBSD: arp.c,v 1.14 1997/01/18 02:12:13 mikel Exp $";
#endif /* not lint */
/*
@ -75,7 +75,6 @@ static char *rcsid = "$NetBSD: arp.c,v 1.13 1996/12/08 13:59:11 mycroft Exp $";
int delete __P((const char *, const char *));
void dump __P((u_long));
int ether_aton __P((const char *, u_char *));
void ether_print __P((const u_char *));
int file __P((char *));
void get __P((const char *));
@ -193,7 +192,7 @@ set(argc, argv)
register struct sockaddr_inarp *sin;
register struct sockaddr_dl *sdl;
register struct rt_msghdr *rtm;
u_char *ea;
struct ether_addr *ea;
char *host = argv[0], *eaddr;
sin = &sin_m;
@ -207,9 +206,13 @@ set(argc, argv)
sin_m = blank_sin; /* struct copy */
if (getinetaddr(host, &sin->sin_addr) == -1)
return (1);
ea = (u_char *)LLADDR(&sdl_m);
if (ether_aton(eaddr, ea) == 0)
sdl_m.sdl_alen = 6;
ea = ether_aton(eaddr);
if (ea != NULL) {
(void)memcpy(LLADDR(&sdl_m), ea, sizeof(struct ether_addr));
sdl_m.sdl_alen = sizeof(struct ether_addr);
}
else
warnx("invalid Ethernet address '%s'", eaddr);
doing_proxy = flags = export_only = expire_time = 0;
while (argc-- > 0) {
if (strncmp(argv[0], "temp", 4) == 0) {
@ -424,24 +427,6 @@ ether_print(cp)
cp[5]);
}
int
ether_aton(a, n)
const char *a;
u_char *n;
{
int i, o[6];
i = sscanf(a, "%x:%x:%x:%x:%x:%x", &o[0], &o[1], &o[2], &o[3], &o[4],
&o[5]);
if (i != 6) {
warnx("invalid Ethernet address '%s'", a);
return (1);
}
for (i=0; i<6; i++)
n[i] = o[i];
return (0);
}
void
usage()
{