From: Michael Tremer Date: Thu, 12 Nov 2020 14:28:15 +0000 (+0000) Subject: networks: Add function to check if network is part of a list X-Git-Tag: 0.9.5~85 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e52ba21761f27e592040a2793b2a26bbeeeecc05;p=people%2Fms%2Flibloc.git networks: Add function to check if network is part of a list Signed-off-by: Michael Tremer --- diff --git a/src/libloc.sym b/src/libloc.sym index 0c2835b..f1b63a2 100644 --- a/src/libloc.sym +++ b/src/libloc.sym @@ -104,6 +104,7 @@ global: # Network List loc_network_list_clear; + loc_network_list_contains; loc_network_list_dump; loc_network_list_empty; loc_network_list_get; diff --git a/src/loc/network.h b/src/loc/network.h index ef13756..7804512 100644 --- a/src/loc/network.h +++ b/src/loc/network.h @@ -73,6 +73,7 @@ void loc_network_list_dump(struct loc_network_list* list); struct loc_network* loc_network_list_get(struct loc_network_list* list, size_t index); int loc_network_list_push(struct loc_network_list* list, struct loc_network* network); struct loc_network* loc_network_list_pop(struct loc_network_list* list); +int loc_network_list_contains(struct loc_network_list* list, struct loc_network* network); void loc_network_list_sort(struct loc_network_list* list); void loc_network_list_reverse(struct loc_network_list* list); diff --git a/src/network.c b/src/network.c index d826511..fcbdc59 100644 --- a/src/network.c +++ b/src/network.c @@ -1120,6 +1120,15 @@ LOC_EXPORT struct loc_network* loc_network_list_pop(struct loc_network_list* lis return list->list[--list->size]; } +LOC_EXPORT int loc_network_list_contains(struct loc_network_list* list, struct loc_network* network) { + for (unsigned int i = 0; i < list->size; i++) { + if (loc_network_eq(list->list[i], network)) + return 1; + } + + return 0; +} + static void loc_network_list_swap(struct loc_network_list* list, unsigned int i1, unsigned int i2) { // Do nothing for invalid indices if (i1 >= list->size || i2 >= list->size)