From: Russ D. <ru...@us...> - 2002-01-21 20:15:57
|
Update of /cvsroot/blob/blob/utils/mkparamblock In directory usw-pr-cvs1:/tmp/cvs-serv17775/utils/mkparamblock Modified Files: sample.config mkparamblock.c Log Message: added hwaddr to mkparamblock Index: sample.config =================================================================== RCS file: /cvsroot/blob/blob/utils/mkparamblock/sample.config,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- sample.config 2001/08/31 06:21:30 1.1 +++ sample.config 2002/01/21 20:15:54 1.2 @@ -4,4 +4,5 @@ bootdelay 1 # default is 10 cmdline console=ttySA0,9600 console=tty1 root=/dev/mtdblock2 init=/linuxrc baud 9600, 115k2 # these are the defaults +hwaddr eth0 00:11:22:33:44:55 Index: mkparamblock.c =================================================================== RCS file: /cvsroot/blob/blob/utils/mkparamblock/mkparamblock.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- mkparamblock.c 2002/01/21 19:45:16 1.10 +++ mkparamblock.c 2002/01/21 20:15:54 1.11 @@ -64,7 +64,24 @@ return -1; } +int read_mac(char *token, char *mac) +{ + int i; + unsigned long retval; + char *endptr; + for (i = 0; i < 6; i++) { + retval = strtoul(token, &endptr, 16); + if (endptr == token) break; + if (retval < 0 || retval > 0xFF) break; + mac[i] = retval; + if (*endptr != ':' && i < 5) break; + token = endptr + 1; + } + if (i != 6) return -1; + return 0; +} + int tack_ramdisk(char *line, FILE *fp) { struct ptag tag; @@ -136,6 +153,25 @@ return 0; } +int tack_hwaddr(char *line, FILE *fp) +{ + char *token; + struct ptag tag; + tag.hdr.ptag = PTAG_HWADDR; + tag.hdr.size = ptag_size(ptag_hwaddr); + tag.hdr.conf = 0; + + token = strtok(line, "\t\n "); + if (!token) return -1; + strncpy(tag.u.hwaddr.name, token, 10); + tag.u.hwaddr.name[9] = '\0'; + token = strtok(NULL, "\t\n "); + if (!token) return -1; + if (read_mac(token, tag.u.hwaddr.hwaddr) < 0) return -1; + + fwrite(&tag, ptag_size(ptag_hwaddr), 4, fp); + return 0; +} void tack_core(FILE *fp) { @@ -149,7 +185,6 @@ fwrite(&tag, ptag_size(ptag_core), 4, fp); } - void tack_none(FILE *fp) { struct ptag tag; @@ -167,6 +202,7 @@ {"bootdelay", tack_bootdelay}, {"cmdline", tack_cmdline}, {"baud", tack_baud}, + {"hwaddr", tack_hwaddr}, }; |