Blob
1 #include <u.h>2 #include <libc.h>3 #include <ip.h>5 int6 myetheraddr(uchar *to, char *dev)7 {8 int n, fd;9 char buf[256], *ptr;11 /* Make one exist */12 if(*dev == '/')13 sprint(buf, "%s/clone", dev);14 else15 sprint(buf, "/net/%s/clone", dev);16 fd = open(buf, ORDWR);17 if(fd >= 0)18 close(fd);20 if(*dev == '/')21 sprint(buf, "%s/0/stats", dev);22 else23 sprint(buf, "/net/%s/0/stats", dev);24 fd = open(buf, OREAD);25 if(fd < 0)26 return -1;28 n = read(fd, buf, sizeof(buf)-1);29 close(fd);30 if(n <= 0)31 return -1;32 buf[n] = 0;34 ptr = strstr(buf, "addr: ");35 if(!ptr)36 return -1;37 ptr += 6;39 parseether(to, ptr);40 return 0;41 }