Changeset 29327


Ignore:
Timestamp:
2011-11-24T21:09:40+01:00 (6 years ago)
Author:
juhosg
Message:

firmware-utils/mktplinfw: use htonl/ntohl

Based on a patch by Adrian Chadd <adrian@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/firmware-utils/src/mktplinkfw.c

    r28707 r29327  
    2323#include <sys/stat.h> 
    2424 
     25#include <arpa/inet.h> 
     26#include <netinet/in.h> 
     27 
    2528#include "md5.h" 
    26  
    27 #if (__BYTE_ORDER == __BIG_ENDIAN) 
    28 #  define HOST_TO_BE32(x)       (x) 
    29 #  define BE32_TO_HOST(x)       (x) 
    30 #else 
    31 #  define HOST_TO_BE32(x)       bswap_32(x) 
    32 #  define BE32_TO_HOST(x)       bswap_32(x) 
    33 #endif 
    3429 
    3530#define HEADER_VERSION_V1       0x01000000 
     
    479474        memset(hdr, 0, sizeof(struct fw_header)); 
    480475 
    481         hdr->version = HOST_TO_BE32(HEADER_VERSION_V1); 
     476        hdr->version = htonl(HEADER_VERSION_V1); 
    482477        strncpy(hdr->vendor_name, vendor, sizeof(hdr->vendor_name)); 
    483478        strncpy(hdr->fw_version, version, sizeof(hdr->fw_version)); 
    484         hdr->hw_id = HOST_TO_BE32(board->hw_id); 
    485         hdr->hw_rev = HOST_TO_BE32(board->hw_rev); 
     479        hdr->hw_id = htonl(board->hw_id); 
     480        hdr->hw_rev = htonl(board->hw_rev); 
    486481 
    487482        if (boot_info.file_size == 0) 
     
    490485                memcpy(hdr->md5sum1, md5salt_boot, sizeof(hdr->md5sum1)); 
    491486 
    492         hdr->kernel_la = HOST_TO_BE32(kernel_la); 
    493         hdr->kernel_ep = HOST_TO_BE32(kernel_ep); 
    494         hdr->fw_length = HOST_TO_BE32(board->fw_max_len); 
    495         hdr->kernel_ofs = HOST_TO_BE32(sizeof(struct fw_header)); 
    496         hdr->kernel_len = HOST_TO_BE32(kernel_info.file_size); 
     487        hdr->kernel_la = htonl(kernel_la); 
     488        hdr->kernel_ep = htonl(kernel_ep); 
     489        hdr->fw_length = htonl(board->fw_max_len); 
     490        hdr->kernel_ofs = htonl(sizeof(struct fw_header)); 
     491        hdr->kernel_len = htonl(kernel_info.file_size); 
    497492        if (!combined) { 
    498                 hdr->rootfs_ofs = HOST_TO_BE32(rootfs_ofs); 
    499                 hdr->rootfs_len = HOST_TO_BE32(rootfs_info.file_size); 
     493                hdr->rootfs_ofs = htonl(rootfs_ofs); 
     494                hdr->rootfs_len = htonl(rootfs_info.file_size); 
    500495        } 
    501496 
     
    671666        inspect_fw_phexdec("File size", inspect_info.file_size); 
    672667 
    673         if (BE32_TO_HOST(hdr->version) != HEADER_VERSION_V1) { 
     668        if (ntohl(hdr->version) != HEADER_VERSION_V1) { 
    674669                ERR("file does not seem to have V1 header!\n"); 
    675670                goto out_free_buf; 
     
    678673        inspect_fw_phexdec("Version 1 Header size", sizeof(struct fw_header)); 
    679674 
    680         if (BE32_TO_HOST(hdr->unk1) != 0) 
     675        if (ntohl(hdr->unk1) != 0) 
    681676                inspect_fw_phexdec("Unknown value 1", hdr->unk1); 
    682677 
    683678        memcpy(md5sum, hdr->md5sum1, sizeof(md5sum)); 
    684         if (BE32_TO_HOST(hdr->boot_len) == 0) 
     679        if (ntohl(hdr->boot_len) == 0) 
    685680                memcpy(hdr->md5sum1, md5salt_normal, sizeof(md5sum)); 
    686681        else 
     
    694689                inspect_fw_pmd5sum("Header MD5Sum1", md5sum, "(ok)"); 
    695690        } 
    696         if (BE32_TO_HOST(hdr->unk2) != 0) 
     691        if (ntohl(hdr->unk2) != 0) 
    697692                inspect_fw_phexdec("Unknown value 2", hdr->unk2); 
    698693        inspect_fw_pmd5sum("Header MD5Sum2", hdr->md5sum2, 
    699694                           "(purpose yet unknown, unchecked here)"); 
    700         if (BE32_TO_HOST(hdr->unk3) != 0) 
     695        if (ntohl(hdr->unk3) != 0) 
    701696                inspect_fw_phexdec("Unknown value 3", hdr->unk3); 
    702697 
     
    705700        inspect_fw_pstr("Vendor name", hdr->vendor_name); 
    706701        inspect_fw_pstr("Firmware version", hdr->fw_version); 
    707         board = find_board_by_hwid(BE32_TO_HOST(hdr->hw_id)); 
     702        board = find_board_by_hwid(ntohl(hdr->hw_id)); 
    708703        if (board) { 
    709704                inspect_fw_phexpost("Hardware ID", 
    710                                     BE32_TO_HOST(hdr->hw_id), board->id); 
     705                                    ntohl(hdr->hw_id), board->id); 
    711706                inspect_fw_phexexp("Hardware Revision", 
    712                                    BE32_TO_HOST(hdr->hw_rev), board->hw_rev); 
     707                                   ntohl(hdr->hw_rev), board->hw_rev); 
    713708        } else { 
    714709                inspect_fw_phexpost("Hardware ID", 
    715                                     BE32_TO_HOST(hdr->hw_id), "unknown"); 
     710                                    ntohl(hdr->hw_id), "unknown"); 
    716711                inspect_fw_phex("Hardware Revision", 
    717                                 BE32_TO_HOST(hdr->hw_rev)); 
     712                                ntohl(hdr->hw_rev)); 
    718713        } 
    719714 
     
    721716 
    722717        inspect_fw_phexdec("Kernel data offset", 
    723                            BE32_TO_HOST(hdr->kernel_ofs)); 
     718                           ntohl(hdr->kernel_ofs)); 
    724719        inspect_fw_phexdec("Kernel data length", 
    725                            BE32_TO_HOST(hdr->kernel_len)); 
     720                           ntohl(hdr->kernel_len)); 
    726721        if (board) { 
    727722                inspect_fw_phexdef("Kernel load address", 
    728                                    BE32_TO_HOST(hdr->kernel_la), 
     723                                   ntohl(hdr->kernel_la), 
    729724                                   board->kernel_la); 
    730725                inspect_fw_phexdef("Kernel entry point", 
    731                                    BE32_TO_HOST(hdr->kernel_ep), 
     726                                   ntohl(hdr->kernel_ep), 
    732727                                   board->kernel_ep); 
    733728                inspect_fw_phexdecdef("Rootfs data offset", 
    734                                       BE32_TO_HOST(hdr->rootfs_ofs), 
     729                                      ntohl(hdr->rootfs_ofs), 
    735730                                      board->rootfs_ofs); 
    736731        } else { 
    737732                inspect_fw_phex("Kernel load address", 
    738                                 BE32_TO_HOST(hdr->kernel_la)); 
     733                                ntohl(hdr->kernel_la)); 
    739734                inspect_fw_phex("Kernel entry point", 
    740                                 BE32_TO_HOST(hdr->kernel_ep)); 
     735                                ntohl(hdr->kernel_ep)); 
    741736                inspect_fw_phexdec("Rootfs data offset", 
    742                                    BE32_TO_HOST(hdr->rootfs_ofs)); 
     737                                   ntohl(hdr->rootfs_ofs)); 
    743738        } 
    744739        inspect_fw_phexdec("Rootfs data length", 
    745                            BE32_TO_HOST(hdr->rootfs_len)); 
     740                           ntohl(hdr->rootfs_len)); 
    746741        inspect_fw_phexdec("Boot loader data offset", 
    747                            BE32_TO_HOST(hdr->boot_ofs)); 
     742                           ntohl(hdr->boot_ofs)); 
    748743        inspect_fw_phexdec("Boot loader data length", 
    749                            BE32_TO_HOST(hdr->boot_len)); 
     744                           ntohl(hdr->boot_len)); 
    750745        inspect_fw_phexdec("Total firmware length", 
    751                            BE32_TO_HOST(hdr->fw_length)); 
     746                           ntohl(hdr->fw_length)); 
    752747 
    753748        if (extract) { 
     
    762757                fp = fopen(filename, "w"); 
    763758                if (fp) { 
    764                         if (!fwrite(buf + BE32_TO_HOST(hdr->kernel_ofs), 
    765                                     BE32_TO_HOST(hdr->kernel_len), 1, fp)) { 
     759                        if (!fwrite(buf + ntohl(hdr->kernel_ofs), 
     760                                    ntohl(hdr->kernel_len), 1, fp)) { 
    766761                                ERR("error in fwrite(): %s", strerror(errno)); 
    767762                        } 
     
    777772                fp = fopen(filename, "w"); 
    778773                if (fp) { 
    779                         if (!fwrite(buf + BE32_TO_HOST(hdr->rootfs_ofs), 
    780                                     BE32_TO_HOST(hdr->rootfs_len), 1, fp)) { 
     774                        if (!fwrite(buf + ntohl(hdr->rootfs_ofs), 
     775                                    ntohl(hdr->rootfs_len), 1, fp)) { 
    781776                                ERR("error in fwrite(): %s", strerror(errno)); 
    782777                        } 
Note: See TracChangeset for help on using the changeset viewer.