Skip to content

Commit

Permalink
Merge pull request #20835 from xnumad/nib-route-hide-on-link-prefixes
Browse files Browse the repository at this point in the history
gnrc/ipv6: `nib route`: hide off-link PLEs
  • Loading branch information
benpicco authored Sep 24, 2024
2 parents 4e17dba + 92b77ed commit 5c06502
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
3 changes: 2 additions & 1 deletion sys/include/net/gnrc/ipv6/nib/ft.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ void gnrc_ipv6_nib_ft_del(const ipv6_addr_t *dst, unsigned dst_len);
*
* The iteration over all forwarding table entries in the NIB includes all
* entries added via @p gnrc_ipv6_nib_ft_add() and entries that are currently
* in the Destination Cache, in the Prefix List, and in the Default Router List.
* in the Destination Cache, in the Prefix List (only if they're on-link),
* and in the Default Router List.
*
* Usage example:
*
Expand Down
26 changes: 19 additions & 7 deletions sys/net/gnrc/network_layer/ipv6/nib/nib_ft.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,26 @@ bool gnrc_ipv6_nib_ft_iter(const ipv6_addr_t *next_hop, unsigned iface,

while ((offl = _nib_offl_iter(offl))) {
assert(offl->mode != 0);
if ((offl->next_hop != NULL) &&
((iface == 0) || (iface == _nib_onl_get_if(offl->next_hop))) &&
((next_hop == NULL) || ipv6_addr_equal(&offl->next_hop->ipv6,
next_hop))) {
_nib_ft_get(offl, fte);
*state = offl;
return true;
if (offl->next_hop == NULL) {
/* 'holey' NIB / dangling reference.
* there is no next hop (not even an interface) */
continue;
}
if (offl->mode == _PL && !(offl->flags & _PFX_ON_LINK)) {
/* prefix list entry is off-link */
continue;
}
if (iface && iface != _nib_onl_get_if(offl->next_hop)) {
/* interface does not match */
continue;
}
if (next_hop && !ipv6_addr_equal(&offl->next_hop->ipv6, next_hop)) {
/* next hop does not match */
continue;
}
_nib_ft_get(offl, fte);
*state = offl;
return true;
}
*state = NULL;
}
Expand Down

0 comments on commit 5c06502

Please # to comment.