xref: /plan9-contrib/sys/src/libip/myetheraddr.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1 #include <u.h>
2 #include <libc.h>
3 #include <ip.h>
4 
5 int
6 myetheraddr(uchar *to, char *dev)
7 {
8 	int n, fd;
9 	char buf[256], *ptr;
10 
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);
19 
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;
27 
28 	n = read(fd, buf, sizeof(buf)-1);
29 	close(fd);
30 	if(n <= 0)
31 		return -1;
32 	buf[n] = 0;
33 
34 	ptr = strstr(buf, "addr: ");
35 	if(!ptr)
36 		return -1;
37 	ptr += 6;
38 
39 	parseether(to, ptr);
40 	return 0;
41 }
42