use ether_aton() from libc; from Klaus Klein <kleink@layla.inka.de>,
with some modifications by myself.
This commit is contained in:
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()
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user