diff --git a/sys/net/network_layer/fib/fib.c b/sys/net/network_layer/fib/fib.c index b9cf05ce55..72037141df 100644 --- a/sys/net/network_layer/fib/fib.c +++ b/sys/net/network_layer/fib/fib.c @@ -669,9 +669,9 @@ int fib_sr_create(fib_table_t *table, fib_sr_t **fib_sr, kernel_pid_t sr_iface_i * @brief Internal function: * checks the lifetime and removes the entry in case it expired */ -static int fib_sr_check_lifetime(fib_sr_t *fib_sr, uint64_t *now) +static int fib_sr_check_lifetime(fib_sr_t *fib_sr) { - uint64_t tm = fib_sr->sr_lifetime - *now; + uint64_t tm = fib_sr->sr_lifetime - xtimer_now64(); /* check if the lifetime expired */ if ((int64_t)tm < 0) { /* remove this sr if its lifetime expired */ @@ -731,8 +731,6 @@ static int fib_is_sr_in_table(fib_table_t *table, fib_sr_t *fib_sr) int fib_sr_read_head(fib_table_t *table, fib_sr_t *fib_sr, kernel_pid_t *iface_id, uint32_t *sr_flags, uint32_t *sr_lifetime) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (iface_id == NULL) || (sr_flags == NULL) || (sr_lifetime == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT) ) { @@ -740,14 +738,14 @@ int fib_sr_read_head(fib_table_t *table, fib_sr_t *fib_sr, kernel_pid_t *iface_i return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } *iface_id = fib_sr->sr_iface_id; *sr_flags = fib_sr->sr_flags; - *sr_lifetime = fib_sr->sr_lifetime - now; + *sr_lifetime = fib_sr->sr_lifetime - xtimer_now64(); mutex_unlock(&(table->mtx_access)); return 0; @@ -756,8 +754,6 @@ int fib_sr_read_head(fib_table_t *table, fib_sr_t *fib_sr, kernel_pid_t *iface_i int fib_sr_read_destination(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *dst, size_t *dst_size) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (dst == NULL) || (dst_size == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { @@ -765,7 +761,7 @@ int fib_sr_read_destination(fib_table_t *table, fib_sr_t *fib_sr, return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -787,15 +783,13 @@ int fib_sr_read_destination(fib_table_t *table, fib_sr_t *fib_sr, int fib_sr_set(fib_table_t *table, fib_sr_t *fib_sr, kernel_pid_t *sr_iface_id, uint32_t *sr_flags, uint32_t *sr_lifetime) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { mutex_unlock(&(table->mtx_access)); return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -842,8 +836,6 @@ int fib_sr_delete(fib_table_t *table, fib_sr_t *fib_sr) int fib_sr_next(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t **sr_path_entry) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (sr_path_entry == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { @@ -856,7 +848,7 @@ int fib_sr_next(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t **sr_path_e return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -883,8 +875,6 @@ int fib_sr_next(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t **sr_path_e int fib_sr_search(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr, size_t addr_size, fib_sr_entry_t **sr_path_entry) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (addr == NULL) || (sr_path_entry == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { @@ -892,7 +882,7 @@ int fib_sr_search(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr, size_t ad return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -918,8 +908,6 @@ int fib_sr_search(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr, size_t ad int fib_sr_entry_append(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr, size_t addr_size) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (addr == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { @@ -927,7 +915,7 @@ int fib_sr_entry_append(fib_table_t *table, fib_sr_t *fib_sr, return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -965,8 +953,6 @@ int fib_sr_entry_add(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t *sr_path_entry, uint8_t *addr, size_t addr_size, bool keep_remaining_route) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (sr_path_entry == NULL) || (addr == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { @@ -974,7 +960,7 @@ int fib_sr_entry_add(fib_table_t *table, fib_sr_t *fib_sr, return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -1023,15 +1009,13 @@ int fib_sr_entry_add(fib_table_t *table, fib_sr_t *fib_sr, int fib_sr_entry_delete(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr, size_t addr_size, bool keep_remaining_route) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { mutex_unlock(&(table->mtx_access)); return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -1075,8 +1059,6 @@ int fib_sr_entry_overwrite(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr_old, size_t addr_old_size, uint8_t *addr_new, size_t addr_new_size) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (addr_old == NULL) || (addr_new == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { @@ -1084,7 +1066,7 @@ int fib_sr_entry_overwrite(fib_table_t *table, fib_sr_t *fib_sr, return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -1127,15 +1109,13 @@ int fib_sr_entry_overwrite(fib_table_t *table, fib_sr_t *fib_sr, int fib_sr_entry_get_address(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t *sr_entry, uint8_t *addr, size_t *addr_size) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((fib_sr == NULL) || (fib_is_sr_in_table(table, fib_sr) == -ENOENT)) { mutex_unlock(&(table->mtx_access)); return -EFAULT; } - if (fib_sr_check_lifetime(fib_sr, &now) == -ENOENT) { + if (fib_sr_check_lifetime(fib_sr) == -ENOENT) { mutex_unlock(&(table->mtx_access)); return -ENOENT; } @@ -1274,8 +1254,6 @@ int fib_sr_get_route(fib_table_t *table, uint8_t *dst, size_t dst_size, kernel_p uint8_t *addr_list, size_t *addr_list_elements, size_t *element_size, bool reverse, fib_sr_t **fib_sr) { - uint64_t now = xtimer_now64(); - mutex_lock(&(table->mtx_access)); if ((dst == NULL) || (sr_iface_id == NULL) || (sr_flags == NULL) @@ -1292,7 +1270,7 @@ int fib_sr_get_route(fib_table_t *table, uint8_t *dst, size_t dst_size, kernel_p /* Case 1 - check if we know a direct route */ for (size_t i = 0; i < table->size; ++i) { - if (fib_sr_check_lifetime(&table->data.source_routes->headers[i], &now) == -ENOENT) { + if (fib_sr_check_lifetime(&table->data.source_routes->headers[i]) == -ENOENT) { /* expired, so skip this sr and remember its position */ if (check_free_entry == -1) { /* we want to fill up the source routes from the beginning */