|
|
1.1 root 1: /*
2: * QEMU System Emulator
3: *
4: * Copyright (c) 2003-2008 Fabrice Bellard
5: *
6: * Permission is hereby granted, free of charge, to any person obtaining a copy
7: * of this software and associated documentation files (the "Software"), to deal
8: * in the Software without restriction, including without limitation the rights
9: * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10: * copies of the Software, and to permit persons to whom the Software is
11: * furnished to do so, subject to the following conditions:
12: *
13: * The above copyright notice and this permission notice shall be included in
14: * all copies or substantial portions of the Software.
15: *
16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21: * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22: * THE SOFTWARE.
23: */
24:
25: #include "net/util.h"
26: #include <errno.h>
27: #include <stdlib.h>
28:
29: int net_parse_macaddr(uint8_t *macaddr, const char *p)
30: {
31: int i;
32: char *last_char;
33: long int offset;
34:
35: errno = 0;
36: offset = strtol(p, &last_char, 0);
37: if (errno == 0 && *last_char == '\0' &&
38: offset >= 0 && offset <= 0xFFFFFF) {
39: macaddr[3] = (offset & 0xFF0000) >> 16;
40: macaddr[4] = (offset & 0xFF00) >> 8;
41: macaddr[5] = offset & 0xFF;
42: return 0;
43: }
44:
45: for (i = 0; i < 6; i++) {
46: macaddr[i] = strtol(p, (char **)&p, 16);
47: if (i == 5) {
48: if (*p != '\0') {
49: return -1;
50: }
51: } else {
52: if (*p != ':' && *p != '-') {
53: return -1;
54: }
55: p++;
56: }
57: }
58:
59: return 0;
60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.