+static int
+parse_hwaddr(const char *str, char *hwaddr, int hwaddrlen)
+{
+ int slen, i;
+
+ slen = 3*hwaddrlen-1;
+ if (strlen(str) != slen) {
+ return 1;
+ }
+ for (i=0; i<slen; i++) {
+ if (str[i] == ':' && (i%3 == 2)) {
+ continue;
+ }
+ if (str[i] >= '0' && str[i] <= '9') {
+ continue;
+ }
+ if (str[i] >= 'a' && str[i] <= 'f') {
+ continue;
+ }
+ return 1;
+ }
+ for (i=0; i<hwaddrlen; i++) {
+ hwaddr[i] = (char) strtol(str+(i*3), NULL, 16);
+ }
+ return 0;
+}
+