]>
Commit | Line | Data |
---|---|---|
2601e83e MT |
1 | /* |
2 | libloc - A library to determine the location of someone on the Internet | |
3 | ||
4 | Copyright (C) 2017 IPFire Development Team <info@ipfire.org> | |
5 | ||
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. | |
10 | ||
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. | |
15 | */ | |
16 | ||
17 | #ifndef LIBLOC_DATABASE_H | |
18 | #define LIBLOC_DATABASE_H | |
19 | ||
2a30e4de | 20 | #include <netinet/in.h> |
2601e83e | 21 | #include <stdio.h> |
a5db3e49 | 22 | #include <stdint.h> |
2601e83e MT |
23 | |
24 | #include <loc/libloc.h> | |
2a30e4de | 25 | #include <loc/network.h> |
9fc7f001 | 26 | #include <loc/as.h> |
ec684c1a | 27 | #include <loc/country.h> |
e646a8f3 | 28 | #include <loc/country-list.h> |
a5db3e49 | 29 | |
2601e83e | 30 | struct loc_database; |
c182393f | 31 | int loc_database_new(struct loc_ctx* ctx, struct loc_database** database, FILE* f); |
2601e83e MT |
32 | struct loc_database* loc_database_ref(struct loc_database* db); |
33 | struct loc_database* loc_database_unref(struct loc_database* db); | |
34 | ||
726f9984 | 35 | int loc_database_verify(struct loc_database* db, FILE* f); |
b1720435 | 36 | |
96ea74a5 | 37 | time_t loc_database_created_at(struct loc_database* db); |
2601e83e | 38 | const char* loc_database_get_vendor(struct loc_database* db); |
2601e83e | 39 | const char* loc_database_get_description(struct loc_database* db); |
4bf49d00 | 40 | const char* loc_database_get_license(struct loc_database* db); |
2601e83e | 41 | |
c182393f | 42 | int loc_database_get_as(struct loc_database* db, struct loc_as** as, uint32_t number); |
a5db3e49 | 43 | size_t loc_database_count_as(struct loc_database* db); |
a5db3e49 | 44 | |
2a30e4de MT |
45 | int loc_database_lookup(struct loc_database* db, |
46 | struct in6_addr* address, struct loc_network** network); | |
47 | int loc_database_lookup_from_string(struct loc_database* db, | |
48 | const char* string, struct loc_network** network); | |
49 | ||
ec684c1a MT |
50 | int loc_database_get_country(struct loc_database* db, |
51 | struct loc_country** country, const char* code); | |
52 | ||
ccc7ab4e | 53 | enum loc_database_enumerator_mode { |
fa9a3663 MT |
54 | LOC_DB_ENUMERATE_NETWORKS = 1, |
55 | LOC_DB_ENUMERATE_ASES = 2, | |
56 | LOC_DB_ENUMERATE_COUNTRIES = 3, | |
ccc7ab4e MT |
57 | }; |
58 | ||
681ff05c MT |
59 | enum loc_database_enumerator_flags { |
60 | LOC_DB_ENUMERATOR_FLAGS_FLATTEN = (1 << 0), | |
61 | }; | |
62 | ||
7e13db74 | 63 | struct loc_database_enumerator; |
ccc7ab4e | 64 | int loc_database_enumerator_new(struct loc_database_enumerator** enumerator, |
681ff05c | 65 | struct loc_database* db, enum loc_database_enumerator_mode mode, int flags); |
7e13db74 MT |
66 | struct loc_database_enumerator* loc_database_enumerator_ref(struct loc_database_enumerator* enumerator); |
67 | struct loc_database_enumerator* loc_database_enumerator_unref(struct loc_database_enumerator* enumerator); | |
68 | ||
d3d8ede6 | 69 | int loc_database_enumerator_set_string(struct loc_database_enumerator* enumerator, const char* string); |
e646a8f3 MT |
70 | struct loc_country_list* loc_database_enumerator_get_countries(struct loc_database_enumerator* enumerator); |
71 | int loc_database_enumerator_set_countries( | |
72 | struct loc_database_enumerator* enumerator, struct loc_country_list* countries); | |
84a2f0c2 MT |
73 | struct loc_as_list* loc_database_enumerator_get_asns( |
74 | struct loc_database_enumerator* enumerator); | |
75 | int loc_database_enumerator_set_asns( | |
76 | struct loc_database_enumerator* enumerator, struct loc_as_list* asns); | |
9268db5a | 77 | int loc_database_enumerator_set_flag(struct loc_database_enumerator* enumerator, enum loc_network_flags flag); |
44e5ef71 | 78 | int loc_database_enumerator_set_family(struct loc_database_enumerator* enumerator, int family); |
15f79e2d MT |
79 | int loc_database_enumerator_next_as( |
80 | struct loc_database_enumerator* enumerator, struct loc_as** as); | |
81 | int loc_database_enumerator_next_network( | |
82 | struct loc_database_enumerator* enumerator, struct loc_network** network); | |
fa9a3663 MT |
83 | int loc_database_enumerator_next_country( |
84 | struct loc_database_enumerator* enumerator, struct loc_country** country); | |
d3d8ede6 | 85 | |
2601e83e | 86 | #endif |