From 7fe6a21845edf6692d239f228117bc95620d0419 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 20 Nov 2020 18:38:47 +0000 Subject: [PATCH] network: Add function to return the prefix Signed-off-by: Michael Tremer --- src/libloc.sym | 1 + src/loc/network.h | 1 + src/network.c | 12 ++++++++++++ 3 files changed, 14 insertions(+) diff --git a/src/libloc.sym b/src/libloc.sym index 56cada8..9f41c89 100644 --- a/src/libloc.sym +++ b/src/libloc.sym @@ -125,6 +125,7 @@ global: loc_network_new; loc_network_new_from_string; loc_network_overlaps; + loc_network_prefix; loc_network_ref; loc_network_set_asn; loc_network_set_country_code; diff --git a/src/loc/network.h b/src/loc/network.h index d67ec54..7b2ae4c 100644 --- a/src/loc/network.h +++ b/src/loc/network.h @@ -38,6 +38,7 @@ struct loc_network* loc_network_ref(struct loc_network* network); struct loc_network* loc_network_unref(struct loc_network* network); char* loc_network_str(struct loc_network* network); int loc_network_address_family(struct loc_network* network); +unsigned int loc_network_prefix(struct loc_network* network); const struct in6_addr* loc_network_get_first_address(struct loc_network* network); char* loc_network_format_first_address(struct loc_network* network); diff --git a/src/network.c b/src/network.c index ff9c1eb..4720503 100644 --- a/src/network.c +++ b/src/network.c @@ -310,6 +310,18 @@ LOC_EXPORT int loc_network_address_family(struct loc_network* network) { return network->family; } +LOC_EXPORT unsigned int loc_network_prefix(struct loc_network* network) { + switch (network->family) { + case AF_INET6: + return network->prefix; + + case AF_INET: + return network->prefix - 96; + } + + return 0; +} + static char* loc_network_format_address(struct loc_network* network, const struct in6_addr* address) { const size_t length = INET6_ADDRSTRLEN; -- 2.47.3