2 libloc - A library to determine the location of someone on the Internet
4 Copyright (C) 2017 IPFire Development Team <info@ipfire.org>
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
17 #ifndef LIBLOC_FORMAT_H
18 #define LIBLOC_FORMAT_H
22 #define LOC_DATABASE_MAGIC "LOCDBXX"
26 #define LOC_DATABASE_VERSION 0
28 #define LOC_DATABASE_PAGE_SIZE 4096
30 struct loc_database_magic
{
33 // Database version information
37 struct loc_database_header_v0
{
38 // UNIX timestamp when the database was created
41 // Vendor who created the database
44 // Description of the database
47 // Tells us where the ASes start
51 // Tells us where the networks start
52 uint32_t network_data_offset
;
53 uint32_t network_data_length
;
55 // Tells us where the network nodes start
56 uint32_t network_tree_offset
;
57 uint32_t network_tree_length
;
59 // Tells us where the pool starts
64 struct loc_database_network_node_v0
{
69 struct loc_database_network_v0
{
70 // The start address will be encoded in the tree
73 // The country this network is located in
80 struct loc_database_as_v0
{