#include <u.h> | |
#include <libc.h> | |
#include <ip.h> | |
int | |
myetheraddr(uchar *to, char *dev) | |
{ | |
int n, fd; | |
char buf[256], *ptr; | |
/* Make one exist */ | |
if(*dev == '/') | |
sprint(buf, "%s/clone", dev); | |
else | |
sprint(buf, "/net/%s/clone", dev); | |
fd = open(buf, ORDWR); | |
if(fd >= 0) | |
close(fd); | |
if(*dev == '/') | |
sprint(buf, "%s/0/stats", dev); | |
else | |
sprint(buf, "/net/%s/0/stats", dev); | |
fd = open(buf, OREAD); | |
if(fd < 0) | |
return -1; | |
n = read(fd, buf, sizeof(buf)-1); | |
close(fd); | |
if(n <= 0) | |
return -1; | |
buf[n] = 0; | |
ptr = strstr(buf, "addr: "); | |
if(!ptr) | |
return -1; | |
ptr += 6; | |
parseether(to, ptr); | |
return 0; | |
} |