Blame


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