Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <ip.h>
5 int
6 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 else
15 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 else
23 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 }