2 * Atheros AR71xx minimal nvram support
4 * Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org>
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 as published
8 * by the Free Software Foundation.
11 #include <linux/kernel.h>
12 #include <linux/vmalloc.h>
13 #include <linux/errno.h>
14 #include <linux/init.h>
15 #include <linux/string.h>
19 char *nvram_find_var(const char *name
, const char *buf
, unsigned buf_len
)
21 unsigned len
= strlen(name
);
24 if (buf_len
== 0 || len
== 0)
31 return memchr(buf
, (int) *name
, buf_len
);
33 last
= (char *) buf
+ buf_len
- len
;
34 for (cur
= (char *) buf
; cur
<= last
; cur
++)
35 if (cur
[0] == name
[0] && memcmp(cur
, name
, len
) == 0)
41 int nvram_parse_mac_addr(const char *nvram
, unsigned nvram_len
,
42 const char *name
, char *mac
)
49 buf
= vmalloc(nvram_len
);
53 memcpy(buf
, nvram
, nvram_len
);
54 buf
[nvram_len
- 1] = '\0';
56 mac_str
= nvram_find_var(name
, buf
, nvram_len
);
62 t
= sscanf(mac_str
, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
63 &mac
[0], &mac
[1], &mac
[2], &mac
[3], &mac
[4], &mac
[5]);