x86: Don't enter the monitor for invalid opcode
[akaros.git] / user / iplib / myetheraddr.c
1 /*
2  * This file is part of the UCB release of Plan 9. It is subject to the license
3  * terms in the LICENSE file found in the top-level directory of this
4  * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
5  * part of the UCB release of Plan 9, including this file, may be copied,
6  * modified, propagated, or distributed except according to the terms contained
7  * in the LICENSE file.
8  */
9 #include <stdlib.h>
10
11 #include <fcntl.h>
12 #include <iplib/iplib.h>
13 #include <parlib/parlib.h>
14 #include <signal.h>
15 #include <stdio.h>
16 #include <sys/stat.h>
17 #include <sys/types.h>
18 #include <unistd.h>
19
20 int myetheraddr(uint8_t *to, char *dev)
21 {
22         int n, fd;
23         char buf[256];
24
25         if (*dev == '/')
26                 sprintf(buf, "%s/addr", dev);
27         else
28                 sprintf(buf, "/net/%s/addr", dev);
29
30         fd = open(buf, O_RDONLY);
31         if (fd < 0)
32                 return -1;
33
34         n = read(fd, buf, sizeof buf - 1);
35         close(fd);
36         if (n <= 0)
37                 return -1;
38         buf[n] = 0;
39
40         parseether(to, buf);
41         return 0;
42 }