xref: /plan9-contrib/sys/src/libip/myetheraddr.c (revision 8d9a2af1f01004c7a07e7dcb6bb1b0e580d23dc9)
13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <ip.h>
43e12c5d1SDavid du Colombier 
53e12c5d1SDavid du Colombier int
myetheraddr(uchar * to,char * dev)63e12c5d1SDavid du Colombier myetheraddr(uchar *to, char *dev)
73e12c5d1SDavid du Colombier {
83e12c5d1SDavid du Colombier 	int n, fd;
96a1f785eSDavid du Colombier 	char buf[256];
103e12c5d1SDavid du Colombier 
113432ceaeSDavid du Colombier 	if(*dev == '/')
12*8d9a2af1SDavid du Colombier 		snprint(buf, sizeof buf, "%s/addr", dev);
133432ceaeSDavid du Colombier 	else
14*8d9a2af1SDavid du Colombier 		snprint(buf, sizeof buf, "/net/%s/addr", dev);
153432ceaeSDavid du Colombier 
163432ceaeSDavid du Colombier 	fd = open(buf, OREAD);
173e12c5d1SDavid du Colombier 	if(fd < 0)
183e12c5d1SDavid du Colombier 		return -1;
197dd7cddfSDavid du Colombier 
206a1f785eSDavid du Colombier 	n = read(fd, buf, sizeof buf -1 );
213e12c5d1SDavid du Colombier 	close(fd);
223e12c5d1SDavid du Colombier 	if(n <= 0)
233e12c5d1SDavid du Colombier 		return -1;
243e12c5d1SDavid du Colombier 	buf[n] = 0;
253e12c5d1SDavid du Colombier 
266a1f785eSDavid du Colombier 	parseether(to, buf);
273e12c5d1SDavid du Colombier 	return 0;
283e12c5d1SDavid du Colombier }
29