80 lines
2.0 KiB
Plaintext
80 lines
2.0 KiB
Plaintext
*** server/getmac.c.orig Tue Jun 4 10:27:49 1996
|
|
--- server/getmac.c Wed Apr 29 15:32:21 1998
|
|
***************
|
|
*** 79,92 ****
|
|
--- 79,98 ----
|
|
struct in_ifaddr in;
|
|
} ifaddr;
|
|
u_long addr = 0;
|
|
+ #if defined(__OpenBSD__)
|
|
+ #else
|
|
char name[16];
|
|
char fullname[16];
|
|
+ #endif
|
|
static kvm_t *kd = NULL;
|
|
|
|
bzero(&arpcom, sizeof(arpcom));
|
|
bzero(&ifaddr, sizeof(ifaddr));
|
|
+ #if defined(__OpenBSD__)
|
|
+ #else
|
|
bzero(name, sizeof(name));
|
|
bzero(fullname, sizeof(fullname));
|
|
+ #endif
|
|
|
|
/* Open kernel memory for reading */
|
|
kd = kvm_open(0, 0, 0, O_RDONLY, "kvm_open");
|
|
***************
|
|
*** 104,110 ****
|
|
|
|
ac = &arpcom;
|
|
ifp = &arpcom.ac_if;
|
|
! #if defined(__bsdi__) || defined(__FreeBSD__)
|
|
ep = arpcom.ac_enaddr;
|
|
#else
|
|
ep = arpcom.ac_enaddr.ether_addr_octet;
|
|
--- 110,116 ----
|
|
|
|
ac = &arpcom;
|
|
ifp = &arpcom.ac_if;
|
|
! #if defined(__bsdi__) || defined(__FreeBSD__) || defined(__OpenBSD__)
|
|
ep = arpcom.ac_enaddr;
|
|
#else
|
|
ep = arpcom.ac_enaddr.ether_addr_octet;
|
|
***************
|
|
*** 118,124 ****
|
|
--- 124,134 ----
|
|
kvm_close(kd);
|
|
return(-1);
|
|
}
|
|
+ #if defined(__OpenBSD__)
|
|
+ for ( ; addr; addr = (u_long)ifp->if_list.tqe_next) {
|
|
+ #else
|
|
for ( ; addr; addr = (u_long)ifp->if_next) {
|
|
+ #endif
|
|
if (kvm_read(kd, addr, (char *)ac, sizeof(*ac)) != sizeof(*ac)) {
|
|
syslog(LOG_ERR, "kvm_read() error in getmac(): %m");
|
|
kvm_close(kd);
|
|
***************
|
|
*** 129,134 ****
|
|
--- 139,148 ----
|
|
continue;
|
|
|
|
/* Only look at the specified interface */
|
|
+ #if defined(__OpenBSD__)
|
|
+ if (strcmp(ifp->if_xname, ifname) != 0)
|
|
+ continue;
|
|
+ #else
|
|
if (kvm_read(kd, (u_long)ifp->if_name, (char *)name, sizeof(name)) !=
|
|
sizeof(name)) {
|
|
syslog(LOG_ERR, "kvm_read() error in getmac(): %m");
|
|
***************
|
|
*** 139,144 ****
|
|
--- 153,159 ----
|
|
sprintf(fullname, "%s%d", name, ifp->if_unit);
|
|
if (strcmp(fullname, ifname) != 0)
|
|
continue;
|
|
+ #endif
|
|
|
|
kvm_close(kd);
|
|
bcopy(ep, result, 6);
|