]> git.ipfire.org Git - people/ms/libloc.git/blobdiff - src/loc/format.h
Add license attribute to the database
[people/ms/libloc.git] / src / loc / format.h
index e6f6dbac7d14b0d8b913fd10c2550fe4c2cadc98..8309d1cf66858e29ece8b9d989466c18a3cdcfc4 100644 (file)
@@ -20,6 +20,9 @@
 #include <stdint.h>
 
 #define LOC_DATABASE_MAGIC      "LOCDBXX"
+
+#ifdef LIBLOC_PRIVATE
+
 #define LOC_DATABASE_VERSION    0
 
 #define LOC_DATABASE_PAGE_SIZE  4096
@@ -32,21 +35,51 @@ struct loc_database_magic {
 };
 
 struct loc_database_header_v0 {
+       // UNIX timestamp when the database was created
+       uint64_t created_at;
+
        // Vendor who created the database
        uint32_t vendor;
 
        // Description of the database
        uint32_t description;
 
+       // License of the database
+       uint32_t license;
+
        // Tells us where the ASes start
        uint32_t as_offset;
        uint32_t as_length;
 
+       // Tells us where the networks start
+       uint32_t network_data_offset;
+       uint32_t network_data_length;
+
+       // Tells us where the network nodes start
+       uint32_t network_tree_offset;
+       uint32_t network_tree_length;
+
        // Tells us where the pool starts
        uint32_t pool_offset;
        uint32_t pool_length;
 };
 
+struct loc_database_network_node_v0 {
+       uint32_t zero;
+       uint32_t one;
+};
+
+struct loc_database_network_v0 {
+       // The start address will be encoded in the tree
+       uint8_t prefix;
+
+       // The country this network is located in
+       char country_code[2];
+
+       // ASN
+       uint32_t asn;
+};
+
 struct loc_database_as_v0 {
        // The AS number
        uint32_t number;
@@ -56,3 +89,4 @@ struct loc_database_as_v0 {
 };
 
 #endif
+#endif