]> git.ipfire.org Git - people/ms/libloc.git/commitdiff
address: Rename increment/decrement functions and modify address in place
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 7 Mar 2022 12:02:06 +0000 (12:02 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 7 Mar 2022 12:02:06 +0000 (12:02 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/database.c
src/libloc/address.h
src/network-list.c
src/network.c

index ff000a98192d6b92fd13935472a9b6ead5d2986e..5951bcb347b5aa54c96e8510d19d9254c06ac5cb 100644 (file)
@@ -1463,7 +1463,8 @@ static int __loc_database_enumerator_next_bogon(
                }
 
                // Search where the gap could end
-               gap_end = address_decrement(loc_network_get_first_address(network));
+               gap_end = *loc_network_get_first_address(network);
+               loc_address_decrement(&gap_end);
 
                // There is a gap
                if (loc_address_cmp(gap_start, &gap_end) < 0) {
@@ -1476,8 +1477,8 @@ static int __loc_database_enumerator_next_bogon(
                }
 
                // The gap now starts after this network
-               const struct in6_addr* network_end = loc_network_get_last_address(network);
-               (*gap_start) = address_increment(network_end);
+               (*gap_start) = *loc_network_get_last_address(network);
+               loc_address_increment(gap_start);
 
                loc_network_unref(network);
 
index d8880ded40133d8b798ebca65b3e486e5ac9b103..57540bbcc021bbeb5d0defb66391170cb03dc2eb 100644 (file)
@@ -227,32 +227,24 @@ static inline int loc_address_sub(struct in6_addr* result,
        }
 }
 
-static inline struct in6_addr address_increment(const struct in6_addr* address) {
-       struct in6_addr a = *address;
-
+static inline void loc_address_increment(struct in6_addr* address) {
        for (int octet = 15; octet >= 0; octet--) {
-               if (a.s6_addr[octet] < 255) {
-                       a.s6_addr[octet]++;
+               if (address->s6_addr[octet] < 255) {
+                       address->s6_addr[octet]++;
                        break;
                } else {
-                       a.s6_addr[octet] = 0;
+                       address->s6_addr[octet] = 0;
                }
        }
-
-       return a;
 }
 
-static inline struct in6_addr address_decrement(const struct in6_addr* address) {
-       struct in6_addr a = *address;
-
+static inline void loc_address_decrement(struct in6_addr* address) {
        for (int octet = 15; octet >= 0; octet--) {
-               if (a.s6_addr[octet] > 0) {
-                       a.s6_addr[octet]--;
+               if (address->s6_addr[octet] > 0) {
+                       address->s6_addr[octet]--;
                        break;
                }
        }
-
-       return a;
 }
 
 static inline int loc_address_family_bit_length(const int family) {
index c7a039e766805f2a1d6accbc528250ae0cf880be..2765cec04b96d06f553294771ee1c48ee0dea133 100644 (file)
@@ -349,7 +349,7 @@ int loc_network_list_summarize(struct loc_ctx* ctx,
                if (r)
                        return r;
 
-               num = address_increment(&num);
+               loc_address_increment(&num);
 
                // How many bits do we need to represent this address?
                int bits2 = loc_address_bit_length(&num) - 1;
@@ -379,7 +379,7 @@ int loc_network_list_summarize(struct loc_ctx* ctx,
 
                // The next network starts right after this one
                start = *loc_network_get_last_address(network);
-               start = address_increment(&start);
+               loc_address_increment(&start);
        }
 
        return 0;
index 5135f1cbde5bcc8570326ea85737574163dc77fd..3967e29e2ff41cb3b0831744b1c4c1227dc2dd5f 100644 (file)
@@ -434,7 +434,8 @@ LOC_EXPORT int loc_network_subnets(struct loc_network* network,
                return r;
 
        // The next subnet starts after the first one
-       struct in6_addr first_address = address_increment(&(*subnet1)->last_address);
+       struct in6_addr first_address = (*subnet1)->last_address;
+       loc_address_increment(&first_address);
 
        // Create the second half of the network
        r = loc_network_new(network->ctx, subnet2, &first_address, prefix);