#include #include #include 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; }