Skip to content

Commit

Permalink
net/network_layer/fib: corrected handling of all 0 addresses
Browse files Browse the repository at this point in the history
  • Loading branch information
BytesGalore authored and BytesGalore committed Apr 10, 2015
1 parent c940945 commit 213ef5d
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion sys/net/network_layer/fib/fib.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,14 @@ static int fib_find_entry(uint8_t *dst, size_t dst_size,
size_t prefix_size = 0;
size_t match_size = dst_size;
int ret = -EHOSTUNREACH;
bool is_all_zeros_addr = true;

for(size_t i = 0; i < dst_size; ++i) {
if (dst[i] != 0) {
is_all_zeros_addr = false;
break;
}
}

for (size_t i = 0; i < FIB_MAX_FIB_TABLE_ENTRIES; ++i) {

Expand Down Expand Up @@ -125,7 +133,8 @@ static int fib_find_entry(uint8_t *dst, size_t dst_size,
(universal_address_compare(fib_table[i].global, dst, &match_size) == 0)) {

/* If we found an exact match */
if (match_size == dst_size) {
if (match_size == dst_size
|| (is_all_zeros_addr && match_size == 0)) {
entry_arr[0] = &(fib_table[i]);
*entry_arr_size = 1;
/* we will not find a better one so we return */
Expand Down

0 comments on commit 213ef5d

Please sign in to comment.