diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libhydra/plugins/kernel_klips/kernel_klips_ipsec.c | 5 | ||||
-rw-r--r-- | src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c | 6 | ||||
-rw-r--r-- | src/libstrongswan/collections/linked_list.c | 23 | ||||
-rw-r--r-- | src/libstrongswan/collections/linked_list.h | 21 | ||||
-rw-r--r-- | src/libstrongswan/tests/test_linked_list.c | 23 |
5 files changed, 6 insertions, 72 deletions
diff --git a/src/libhydra/plugins/kernel_klips/kernel_klips_ipsec.c b/src/libhydra/plugins/kernel_klips/kernel_klips_ipsec.c index 38c92ce71..82f80fd4c 100644 --- a/src/libhydra/plugins/kernel_klips/kernel_klips_ipsec.c +++ b/src/libhydra/plugins/kernel_klips/kernel_klips_ipsec.c @@ -2022,7 +2022,7 @@ METHOD(kernel_ipsec_t, add_policy, status_t, else { /* apply the new one, if we have no such policy */ - this->policies->insert_last(this->policies, policy); + this->policies->insert_first(this->policies, policy); } if (priority == POLICY_PRIORITY_ROUTED) @@ -2088,7 +2088,8 @@ METHOD(kernel_ipsec_t, add_policy, status_t, this->mutex->lock(this->mutex); /* we try to find the policy again and install the route if needed */ - if (this->policies->find_last(this->policies, NULL, (void**)&policy) != SUCCESS) + if (this->policies->find_first(this->policies, NULL, + (void**)&policy) != SUCCESS) { this->mutex->unlock(this->mutex); DBG2(DBG_KNL, "the policy %R === %R %N is already gone, ignoring", diff --git a/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c b/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c index f00210b85..d975f15b9 100644 --- a/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c +++ b/src/libhydra/plugins/kernel_pfkey/kernel_pfkey_ipsec.c @@ -2261,8 +2261,8 @@ static status_t add_policy_internal(private_kernel_pfkey_ipsec_t *this, /* we try to find the policy again and update the kernel index */ this->mutex->lock(this->mutex); - if (this->policies->find_last(this->policies, NULL, - (void**)&policy) != SUCCESS) + if (this->policies->find_first(this->policies, NULL, + (void**)&policy) != SUCCESS) { DBG2(DBG_KNL, "unable to update index, the policy is already gone, " "ignoring"); @@ -2319,7 +2319,7 @@ METHOD(kernel_ipsec_t, add_policy, status_t, } else { /* use the new one, if we have no such policy */ - this->policies->insert_last(this->policies, policy); + this->policies->insert_first(this->policies, policy); policy->used_by = linked_list_create(); } diff --git a/src/libstrongswan/collections/linked_list.c b/src/libstrongswan/collections/linked_list.c index 7594ddf22..4feb66fcf 100644 --- a/src/libstrongswan/collections/linked_list.c +++ b/src/libstrongswan/collections/linked_list.c @@ -395,28 +395,6 @@ METHOD(linked_list_t, find_first, status_t, return NOT_FOUND; } -METHOD(linked_list_t, find_last, status_t, - private_linked_list_t *this, linked_list_match_t match, - void **item, void *d1, void *d2, void *d3, void *d4, void *d5) -{ - element_t *current = this->last; - - while (current) - { - if ((match && match(current->value, d1, d2, d3, d4, d5)) || - (!match && item && current->value == *item)) - { - if (item != NULL) - { - *item = current->value; - } - return SUCCESS; - } - current = current->previous; - } - return NOT_FOUND; -} - METHOD(linked_list_t, invoke_offset, void, private_linked_list_t *this, size_t offset, void *d1, void *d2, void *d3, void *d4, void *d5) @@ -538,7 +516,6 @@ linked_list_t *linked_list_create() .get_first = _get_first, .get_last = _get_last, .find_first = (void*)_find_first, - .find_last = (void*)_find_last, .insert_first = _insert_first, .insert_last = _insert_last, .insert_before = (void*)_insert_before, diff --git a/src/libstrongswan/collections/linked_list.h b/src/libstrongswan/collections/linked_list.h index 993ff10f8..9feced07a 100644 --- a/src/libstrongswan/collections/linked_list.h +++ b/src/libstrongswan/collections/linked_list.h @@ -193,27 +193,6 @@ struct linked_list_t { void **item, ...); /** - * Find the last matching element in the list. - * - * The first object passed to the match function is the current list item, - * followed by the user supplied data. - * If the supplied function returns TRUE this function returns SUCCESS, and - * the current object is returned in the third parameter, otherwise, - * the next item is checked. - * - * If match is NULL, *item and the current object are compared. - * - * @warning Only use pointers as user supplied data. - * - * @param match comparison function to call on each object, or NULL - * @param item the list item, if found - * @param ... user data to supply to match function (limited to 5 arguments) - * @return SUCCESS if found, NOT_FOUND otherwise - */ - status_t (*find_last) (linked_list_t *this, linked_list_match_t match, - void **item, ...); - - /** * Invoke a method on all of the contained objects. * * If a linked list contains objects with function pointers, diff --git a/src/libstrongswan/tests/test_linked_list.c b/src/libstrongswan/tests/test_linked_list.c index fc055bb7f..aeee48ff8 100644 --- a/src/libstrongswan/tests/test_linked_list.c +++ b/src/libstrongswan/tests/test_linked_list.c @@ -195,20 +195,14 @@ START_TEST(test_find) void *a = (void*)1, *b = (void*)2; ck_assert(list->find_first(list, NULL, &a) == NOT_FOUND); - ck_assert(list->find_last(list, NULL, &a) == NOT_FOUND); list->insert_last(list, a); ck_assert(list->find_first(list, NULL, &a) == SUCCESS); ck_assert(list->find_first(list, NULL, &b) == NOT_FOUND); - ck_assert(list->find_last(list, NULL, &a) == SUCCESS); - ck_assert(list->find_last(list, NULL, &b) == NOT_FOUND); list->insert_last(list, b); ck_assert(list->find_first(list, NULL, &a) == SUCCESS); ck_assert(list->find_first(list, NULL, &b) == SUCCESS); - ck_assert(list->find_last(list, NULL, &a) == SUCCESS); - ck_assert(list->find_last(list, NULL, &b) == SUCCESS); ck_assert(list->find_first(list, NULL, NULL) == NOT_FOUND); - ck_assert(list->find_last(list, NULL, NULL) == NOT_FOUND); } END_TEST @@ -228,31 +222,14 @@ START_TEST(test_find_callback) ck_assert(list->find_first(list, (linked_list_match_t)match_a_b, &x, a, b) == SUCCESS); ck_assert(a == x); - ck_assert(list->find_last(list, (linked_list_match_t)match_a, NULL, a) == SUCCESS); - x = NULL; - ck_assert(list->find_last(list, (linked_list_match_t)match_a, &x, a) == SUCCESS); - ck_assert(a == x); - ck_assert(list->find_last(list, (linked_list_match_t)match_b, &x, b) == NOT_FOUND); - ck_assert(a == x); - x = NULL; - ck_assert(list->find_last(list, (linked_list_match_t)match_a_b, &x, a, b) == SUCCESS); - ck_assert(a == x); - list->insert_last(list, b); ck_assert(list->find_first(list, (linked_list_match_t)match_a, &x, a) == SUCCESS); ck_assert(a == x); ck_assert(list->find_first(list, (linked_list_match_t)match_b, &x, b) == SUCCESS); ck_assert(b == x); - ck_assert(list->find_last(list, (linked_list_match_t)match_a, &x, a) == SUCCESS); - ck_assert(a == x); - ck_assert(list->find_last(list, (linked_list_match_t)match_b, &x, b) == SUCCESS); - ck_assert(b == x); x = NULL; ck_assert(list->find_first(list, (linked_list_match_t)match_a_b, &x, a, b) == SUCCESS); ck_assert(a == x); - x = NULL; - ck_assert(list->find_last(list, (linked_list_match_t)match_a_b, &x, a, b) == SUCCESS); - ck_assert(b == x); } END_TEST |