char fwvern[3];
char id[4]; /* U2ND */
char hw_ver; /* 0: for 4702, 1: for 4712 -- new in 2.04.3 */
- unsigned short flags; /* SUPPORT_ flags new for 3.37.2 (WRT54G v2.2 and WRT54GS v1.1) */
+ char unused;
+ unsigned char flags[2]; /* SUPPORT_ flags new for 3.37.2 (WRT54G v2.2 and WRT54GS v1.1) */
unsigned char res2[10];
} ;
void usage(void)
{
- fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-b] [-v v#.#.#] [-{0|1|2}]\n");
+ fprintf(stderr, "Usage: addpattern [-i trxfile] [-o binfile] [-p pattern] [-g] [-b] [-v v#.#.#] [-{0|1|2|4}]\n");
exit(EXIT_FAILURE);
}
hdr = (struct code_header *) buf;
memset(hdr, 0, sizeof(struct code_header));
- while ((c = getopt(argc, argv, "i:o:p:gbv:012")) != -1) {
+ while ((c = getopt(argc, argv, "i:o:p:gbv:0124")) != -1) {
switch (c) {
case 'i':
ifn = optarg;
break;
case '2': /* new 54G v2.2 and 54GS v1.1 flags */
hdr->hw_ver = 1;
- hdr->flags |= SUPPORT_4712_CHIP;
- hdr->flags |= SUPPORT_INTEL_FLASH;
- hdr->flags |= SUPPORT_5325E_SWITCH;
+ hdr->flags[0] |= SUPPORT_4712_CHIP;
+ hdr->flags[0] |= SUPPORT_INTEL_FLASH;
+ hdr->flags[0] |= SUPPORT_5325E_SWITCH;
+ break;
+ case '4':
+ /* V4 firmware sets the flags to 0x1f */
+ hdr->hw_ver = 0;
+ hdr->flags[0] = 0x1f;
break;
default: