]>
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 | 23 | |
c12a1385 MT |
24 | #include <libloc/libloc.h> |
25 | #include <libloc/network.h> | |
26 | #include <libloc/as.h> | |
27 | #include <libloc/country.h> | |
28 | #include <libloc/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 | 45 | int loc_database_lookup(struct loc_database* db, |
a178efea | 46 | const struct in6_addr* address, struct loc_network** network); |
2a30e4de MT |
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, | |
8c37d8a7 | 57 | LOC_DB_ENUMERATE_BOGONS = 4, |
ccc7ab4e MT |
58 | }; |
59 | ||
681ff05c MT |
60 | enum loc_database_enumerator_flags { |
61 | LOC_DB_ENUMERATOR_FLAGS_FLATTEN = (1 << 0), | |
62 | }; | |
63 | ||
7e13db74 | 64 | struct loc_database_enumerator; |
ccc7ab4e | 65 | int loc_database_enumerator_new(struct loc_database_enumerator** enumerator, |
681ff05c | 66 | struct loc_database* db, enum loc_database_enumerator_mode mode, int flags); |
7e13db74 MT |
67 | struct loc_database_enumerator* loc_database_enumerator_ref(struct loc_database_enumerator* enumerator); |
68 | struct loc_database_enumerator* loc_database_enumerator_unref(struct loc_database_enumerator* enumerator); | |
69 | ||
d3d8ede6 | 70 | int loc_database_enumerator_set_string(struct loc_database_enumerator* enumerator, const char* string); |
e646a8f3 MT |
71 | struct loc_country_list* loc_database_enumerator_get_countries(struct loc_database_enumerator* enumerator); |
72 | int loc_database_enumerator_set_countries( | |
73 | struct loc_database_enumerator* enumerator, struct loc_country_list* countries); | |
84a2f0c2 MT |
74 | struct loc_as_list* loc_database_enumerator_get_asns( |
75 | struct loc_database_enumerator* enumerator); | |
76 | int loc_database_enumerator_set_asns( | |
77 | struct loc_database_enumerator* enumerator, struct loc_as_list* asns); | |
9268db5a | 78 | int loc_database_enumerator_set_flag(struct loc_database_enumerator* enumerator, enum loc_network_flags flag); |
44e5ef71 | 79 | int loc_database_enumerator_set_family(struct loc_database_enumerator* enumerator, int family); |
15f79e2d MT |
80 | int loc_database_enumerator_next_as( |
81 | struct loc_database_enumerator* enumerator, struct loc_as** as); | |
82 | int loc_database_enumerator_next_network( | |
83 | struct loc_database_enumerator* enumerator, struct loc_network** network); | |
fa9a3663 MT |
84 | int loc_database_enumerator_next_country( |
85 | struct loc_database_enumerator* enumerator, struct loc_country** country); | |
d3d8ede6 | 86 | |
2601e83e | 87 | #endif |