1*ad30f8e7SGabor Kovesdan /* $FreeBSD$ */ 2*ad30f8e7SGabor Kovesdan /* $NetBSD: citrus_db_file.h,v 1.4 2008/02/10 05:58:22 junyoung Exp $ */ 3*ad30f8e7SGabor Kovesdan 4*ad30f8e7SGabor Kovesdan /*- 5*ad30f8e7SGabor Kovesdan * Copyright (c)2003 Citrus Project, 6*ad30f8e7SGabor Kovesdan * All rights reserved. 7*ad30f8e7SGabor Kovesdan * 8*ad30f8e7SGabor Kovesdan * Redistribution and use in source and binary forms, with or without 9*ad30f8e7SGabor Kovesdan * modification, are permitted provided that the following conditions 10*ad30f8e7SGabor Kovesdan * are met: 11*ad30f8e7SGabor Kovesdan * 1. Redistributions of source code must retain the above copyright 12*ad30f8e7SGabor Kovesdan * notice, this list of conditions and the following disclaimer. 13*ad30f8e7SGabor Kovesdan * 2. Redistributions in binary form must reproduce the above copyright 14*ad30f8e7SGabor Kovesdan * notice, this list of conditions and the following disclaimer in the 15*ad30f8e7SGabor Kovesdan * documentation and/or other materials provided with the distribution. 16*ad30f8e7SGabor Kovesdan * 17*ad30f8e7SGabor Kovesdan * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18*ad30f8e7SGabor Kovesdan * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*ad30f8e7SGabor Kovesdan * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*ad30f8e7SGabor Kovesdan * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21*ad30f8e7SGabor Kovesdan * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*ad30f8e7SGabor Kovesdan * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23*ad30f8e7SGabor Kovesdan * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24*ad30f8e7SGabor Kovesdan * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25*ad30f8e7SGabor Kovesdan * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*ad30f8e7SGabor Kovesdan * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*ad30f8e7SGabor Kovesdan * SUCH DAMAGE. 28*ad30f8e7SGabor Kovesdan */ 29*ad30f8e7SGabor Kovesdan 30*ad30f8e7SGabor Kovesdan #ifndef _CITRUS_DB_FILE_H_ 31*ad30f8e7SGabor Kovesdan #define _CITRUS_DB_FILE_H_ 32*ad30f8e7SGabor Kovesdan 33*ad30f8e7SGabor Kovesdan /* 34*ad30f8e7SGabor Kovesdan * db format: 35*ad30f8e7SGabor Kovesdan * +--- 36*ad30f8e7SGabor Kovesdan * | header 37*ad30f8e7SGabor Kovesdan * | - magic 38*ad30f8e7SGabor Kovesdan * | - num entries 39*ad30f8e7SGabor Kovesdan * +--- 40*ad30f8e7SGabor Kovesdan * | entry directory 41*ad30f8e7SGabor Kovesdan * | +------------ 42*ad30f8e7SGabor Kovesdan * | | entry0 43*ad30f8e7SGabor Kovesdan * | | - hash value 44*ad30f8e7SGabor Kovesdan * | | - next entry 45*ad30f8e7SGabor Kovesdan * | | - key offset 46*ad30f8e7SGabor Kovesdan * | | - key len 47*ad30f8e7SGabor Kovesdan * | | - data offset 48*ad30f8e7SGabor Kovesdan * | | - data size 49*ad30f8e7SGabor Kovesdan * | |--- 50*ad30f8e7SGabor Kovesdan * | | entry1 51*ad30f8e7SGabor Kovesdan * | | .. 52*ad30f8e7SGabor Kovesdan * | | entryN 53*ad30f8e7SGabor Kovesdan * | +--- 54*ad30f8e7SGabor Kovesdan * +--- 55*ad30f8e7SGabor Kovesdan * | key table 56*ad30f8e7SGabor Kovesdan * | - key0 57*ad30f8e7SGabor Kovesdan * | ... 58*ad30f8e7SGabor Kovesdan * | - keyN 59*ad30f8e7SGabor Kovesdan * +--- 60*ad30f8e7SGabor Kovesdan * | data table 61*ad30f8e7SGabor Kovesdan * | - data0 62*ad30f8e7SGabor Kovesdan * | ... 63*ad30f8e7SGabor Kovesdan * | - dataN 64*ad30f8e7SGabor Kovesdan * +--- 65*ad30f8e7SGabor Kovesdan */ 66*ad30f8e7SGabor Kovesdan 67*ad30f8e7SGabor Kovesdan #define _CITRUS_DB_MAGIC_SIZE 8 68*ad30f8e7SGabor Kovesdan #define _CITRUS_DB_HEADER_SIZE 16 69*ad30f8e7SGabor Kovesdan struct _citrus_db_header_x { 70*ad30f8e7SGabor Kovesdan char dhx_magic[_CITRUS_DB_MAGIC_SIZE]; 71*ad30f8e7SGabor Kovesdan uint32_t dhx_num_entries; 72*ad30f8e7SGabor Kovesdan uint32_t dhx_entry_offset; 73*ad30f8e7SGabor Kovesdan } __packed; 74*ad30f8e7SGabor Kovesdan 75*ad30f8e7SGabor Kovesdan struct _citrus_db_entry_x { 76*ad30f8e7SGabor Kovesdan uint32_t dex_hash_value; 77*ad30f8e7SGabor Kovesdan uint32_t dex_next_offset; 78*ad30f8e7SGabor Kovesdan uint32_t dex_key_offset; 79*ad30f8e7SGabor Kovesdan uint32_t dex_key_size; 80*ad30f8e7SGabor Kovesdan uint32_t dex_data_offset; 81*ad30f8e7SGabor Kovesdan uint32_t dex_data_size; 82*ad30f8e7SGabor Kovesdan } __packed; 83*ad30f8e7SGabor Kovesdan #define _CITRUS_DB_ENTRY_SIZE 24 84*ad30f8e7SGabor Kovesdan 85*ad30f8e7SGabor Kovesdan #endif 86