]>
git.ipfire.org Git - people/ms/libloc.git/blob - src/loc/network.h
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_NETWORK_H
18 #define LIBLOC_NETWORK_H
20 #include <netinet/in.h>
22 #include <loc/libloc.h>
23 #include <loc/format.h>
26 int loc_network_new(struct loc_ctx
* ctx
, struct loc_network
** network
,
27 struct in6_addr
* start_address
, unsigned int prefix
);
28 int loc_network_new_from_string(struct loc_ctx
* ctx
, struct loc_network
** network
,
29 const char* address_string
);
30 struct loc_network
* loc_network_ref(struct loc_network
* network
);
31 struct loc_network
* loc_network_unref(struct loc_network
* network
);
32 char* loc_network_str(struct loc_network
* network
);
33 int loc_network_match_address(struct loc_network
* network
, const struct in6_addr
* address
);
35 const char* loc_network_get_country_code(struct loc_network
* network
);
36 int loc_network_set_country_code(struct loc_network
* network
, const char* country_code
);
37 int loc_network_match_country_code(struct loc_network
* network
, const char* country_code
);
39 uint32_t loc_network_get_asn(struct loc_network
* network
);
40 int loc_network_set_asn(struct loc_network
* network
, uint32_t asn
);
41 int loc_network_match_asn(struct loc_network
* network
, uint32_t asn
);
45 int loc_network_to_database_v0(struct loc_network
* network
, struct loc_database_network_v0
* dbobj
);
46 int loc_network_new_from_database_v0(struct loc_ctx
* ctx
, struct loc_network
** network
,
47 struct in6_addr
* address
, unsigned int prefix
, const struct loc_database_network_v0
* dbobj
);
49 struct loc_network_tree
;
50 int loc_network_tree_new(struct loc_ctx
* ctx
, struct loc_network_tree
** tree
);
51 struct loc_network_tree
* loc_network_tree_unref(struct loc_network_tree
* tree
);
52 struct loc_network_tree_node
* loc_network_tree_get_root(struct loc_network_tree
* tree
);
53 int loc_network_tree_walk(struct loc_network_tree
* tree
,
54 int(*filter_callback
)(struct loc_network
* network
, void* data
),
55 int(*callback
)(struct loc_network
* network
, void* data
), void* data
);
56 int loc_network_tree_dump(struct loc_network_tree
* tree
);
57 int loc_network_tree_add_network(struct loc_network_tree
* tree
, struct loc_network
* network
);
58 size_t loc_network_tree_count_networks(struct loc_network_tree
* tree
);
59 size_t loc_network_tree_count_nodes(struct loc_network_tree
* tree
);
61 struct loc_network_tree_node
;
62 int loc_network_tree_node_new(struct loc_ctx
* ctx
, struct loc_network_tree_node
** node
);
63 struct loc_network_tree_node
* loc_network_tree_node_ref(struct loc_network_tree_node
* node
);
64 struct loc_network_tree_node
* loc_network_tree_node_unref(struct loc_network_tree_node
* node
);
65 struct loc_network_tree_node
* loc_network_tree_node_get(struct loc_network_tree_node
* node
, unsigned int index
);
67 int loc_network_tree_node_is_leaf(struct loc_network_tree_node
* node
);
68 struct loc_network
* loc_network_tree_node_get_network(struct loc_network_tree_node
* node
);