resolved: count the number of addresses per link
authorLennart Poettering <lennart@poettering.net>
Mon, 13 Feb 2017 19:41:09 +0000 (20:41 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 13 Feb 2017 19:41:09 +0000 (20:41 +0100)
This becomes handy later on. Moreover, we keep track of similar counters
for other objects like this too, hence adding this here too is obvious.

src/resolve/resolved-link.c
src/resolve/resolved-link.h

index 7b6e4f8..44c0cd6 100644 (file)
@@ -669,6 +669,7 @@ int link_address_new(Link *l, LinkAddress **ret, int family, const union in_addr
 
         a->link = l;
         LIST_PREPEND(addresses, l->addresses, a);
+        l->n_addresses++;
 
         if (ret)
                 *ret = a;
@@ -683,6 +684,9 @@ LinkAddress *link_address_free(LinkAddress *a) {
         if (a->link) {
                 LIST_REMOVE(addresses, a->link->addresses, a);
 
+                assert(a->link->n_addresses > 0);
+                a->link->n_addresses--;
+
                 if (a->llmnr_address_rr) {
                         if (a->family == AF_INET && a->link->llmnr_ipv4_scope)
                                 dns_zone_remove_rr(&a->link->llmnr_ipv4_scope->zone, a->llmnr_address_rr);
index 1e9be8a..55a56b7 100644 (file)
@@ -60,6 +60,7 @@ struct Link {
         unsigned flags;
 
         LIST_HEAD(LinkAddress, addresses);
+        unsigned n_addresses;
 
         LIST_HEAD(DnsServer, dns_servers);
         DnsServer *current_dns_server;