#ifndef GB_IPADDRESSCHECKS_H
#define GB_IPADDRESSCHECKS_H

#include <inttypes.h>


void initialize_ip_address_checks();

//guess distance to IP
static const unsigned ip_distance_ourselves = 0;
static const unsigned ip_distance_lan = 1;
static const unsigned ip_distance_nearby = 2;
//  >2 = internet
unsigned ip_distance(uint32_t ip/*network-order*/);

//Is the IP an internal IP as in "we control the hosts and allow more aggressive crawling"
bool is_internal_net_ip(uint32_t ip/*network-order*/);

//Is the IP an internal-like that we allow to use the udp protocol without being registered as part of the cluster?
bool is_trusted_protocol_ip(uint32_t ip/*network-order*/);

//Make a guess if the two IPs are on the same network / controlled by the same
//entity and links between them should be treated as internal links
//bool is_same_network_linkwise(uint32_t ip_a/*network order*/, uint32_t ip_b/*network order*/);
static inline bool is_same_network_linkwise(uint32_t,uint32_t) { return false; }

#endif // GB_IPADDRESSCHECKS_H