packages: clean up the package folder
[openwrt.git] / package / system / mtd / src / seama.h
1 /* vi: set sw=4 ts=4: */
2 /*
3  *      (SEA)ttle i(MA)ge is the image which used in project seattle.
4  *
5  *      Created by David Hsieh <david_hsieh@alphanetworks.com>
6  *      Copyright (C) 2008-2009 Alpha Networks, Inc.
7  *
8  *      This file is free software; you can redistribute it and/or
9  *      modify it under the terms of the GNU Lesser General Public
10  *      License as published by the Free Software Foundation; either'
11  *      version 2.1 of the License, or (at your option) any later version.
12  *
13  *      The GNU C Library is distributed in the hope that it will be useful,'
14  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  *      Lesser General Public License for more details.
17  *
18  *      You should have received a copy of the GNU Lesser General Public
19  *      License along with the GNU C Library; if not, write to the Free
20  *      Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
21  *      02111-1307 USA.
22  */
23
24 #ifndef __SEAMA_HEADER_FILE__
25 #define __SEAMA_HEADER_FILE__
26
27 #include <stdint.h>
28
29 #define SEAMA_MAGIC             0x5EA3A417
30
31 /*
32  *      SEAMA looks like the following map.
33  *      All the data of the header should be in network byte order.
34  *
35  *  +-------------+-------------+------------
36  *      | SEAMA magic               |     ^
37  *  +-------------+-------------+     |
38  *      | reserved    | meta size   |     |
39  *  +-------------+-------------+   header
40  *      | image size (0 bytes)      |     |
41  *  +-------------+-------------+     |
42  *      ~ Meta data                 ~     v
43  *  +-------------+-------------+------------
44  *      | SEAMA magic               |   ^     ^
45  *  +-------------+-------------+   |     |
46  *      | reserved    | meta size   |   |     |
47  *  +-------------+-------------+   |     |
48  *      | image size                |   |     |
49  *  +-------------+-------------+ header  |
50  *      |                           |   |     |
51  *      | 16 bytes of MD5 digest    |   |     |
52  *      |                           |   |     |
53  *      |                           |   |     |
54  *  +-------------+-------------+   |     |
55  *      ~ Meta data                 ~   v     |
56  *  +-------------+-------------+-------  |
57  *      |                           |         |
58  *      | Image of the 1st entity   |         |
59  *      ~                           ~ 1st entity
60  *      |                           |         |
61  *      |                           |         v
62  *  +-------------+-------------+-------------
63  *      | SEAMA magic               |   ^     ^
64  *  +-------------+-------------+   |     |
65  *      | reserved    | meta size   |   |     |
66  *  +-------------+-------------+   |     |
67  *      | image size                |   |     |
68  *  +-------------+-------------+ header  |
69  *      |                           |   |     |
70  *      | 16 bytes of MD5 digest    |   |     |
71  *      |                           |   |     |
72  *      |                           |   |     |
73  *  +-------------+-------------+   |     |
74  *      ~ Meta data                 ~   v     |
75  *  +-------------+-------------+-------  |
76  *      |                           |         |
77  *      | Image of the 2nd entity   |         |
78  *      ~                           ~ 2nd entity
79  *      |                           |         |
80  *      |                           |         v
81  *  +-------------+-------------+-------------
82  */
83
84
85 /*
86  *      SEAMA header
87  *
88  *      |<-------- 32 bits -------->|
89  *  +-------------+-------------+
90  *      | SEAMA magic               |
91  *  +-------------+-------------+
92  *      | reserved    | meta size   |
93  *  +-------------+-------------+
94  *      | image size                |
95  *  +-------------+-------------+
96  */
97 /* seama header */
98 typedef struct seama_hdr        seamahdr_t;
99 struct seama_hdr
100 {
101         uint32_t        magic;                  /* should always be SEAMA_MAGIC. */
102         uint16_t        reserved;               /* reserved for  */
103         uint16_t        metasize;               /* size of the META data */
104         uint32_t        size;                   /* size of the image */
105 } __attribute__ ((packed));
106
107
108 #endif