1/* 2 * * Copyright (C) 2007 Ubiquiti Networks, Inc. 3 * * 4 * * This program is free software; you can redistribute it and/or 5 * * modify it under the terms of the GNU General Public License as 6 * * published by the Free Software Foundation; either version 2 of the 7 * * License, or (at your option) any later version. 8 * * 9 * * This program is distributed in the hope that it will be useful, but 10 * * WITHOUT ANY WARRANTY; without even the implied warranty of 11 * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * * General Public License for more details. 13 * * 14 * * You should have received a copy of the GNU General Public License 15 * * along with this program; if not, write to the Free Software 16 * * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 * */ 18 19#ifndef FW_INCLUDED 20#define FW_INCLUDED 21 22#include <sys/types.h> 23 24#define MAGIC_HEADER "OPEN" 25#define MAGIC_PART "PART" 26#define MAGIC_END "END." 27 28#define MAGIC_LENGTH 4 29 30typedef struct header { 31 char magic[MAGIC_LENGTH]; 32 char version[256]; 33 u_int32_t crc; 34 u_int32_t pad; 35} __attribute__ ((packed)) header_t; 36 37typedef struct part { 38 char magic[MAGIC_LENGTH]; 39 char name[16]; 40 char pad[12]; 41 u_int32_t memaddr; 42 u_int32_t index; 43 u_int32_t baseaddr; 44 u_int32_t entryaddr; 45 u_int32_t data_size; 46 u_int32_t part_size; 47} __attribute__ ((packed)) part_t; 48 49typedef struct part_crc { 50 u_int32_t crc; 51 u_int32_t pad; 52} __attribute__ ((packed)) part_crc_t; 53 54typedef struct signature { 55 char magic[MAGIC_LENGTH]; 56 u_int32_t crc; 57 u_int32_t pad; 58} __attribute__ ((packed)) signature_t; 59 60#define VERSION "1.2" 61 62#define INFO(...) fprintf(stdout, __VA_ARGS__) 63#define ERROR(...) fprintf(stderr, "ERROR: "__VA_ARGS__) 64#define WARN(...) fprintf(stderr, "WARN: "__VA_ARGS__) 65#define DEBUG(...) do {\ 66 if (debug) \ 67 fprintf(stdout, "DEBUG: "__VA_ARGS__); \ 68} while (0); 69 70#endif 71