Skip to content

Commit

Permalink
Merge pull request #18126 from miri64/gnrc_ipv6_nib/fix/i17512
Browse files Browse the repository at this point in the history
gnrc_ipv6_nib: fix inconsistent ABR valid lifetime representation
  • Loading branch information
miri64 authored May 23, 2022
2 parents cfefcae + 3398898 commit bbf0b3a
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
14 changes: 11 additions & 3 deletions sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,17 @@ static gnrc_pktsnip_t *_build_ext_opts(gnrc_netif_t *netif,
}
}
}
ltime_min = (gnrc_netif_is_6lbr(netif)) ?
(SIXLOWPAN_ND_OPT_ABR_LTIME_DEFAULT) :
_nib_abr_entry_valid_offset(abr);
if (gnrc_netif_is_6lbr(netif)) {
ltime_min = 0U;

/* update valid time */
abr->valid_until_ms = evtimer_now_msec() + (
SIXLOWPAN_ND_OPT_ABR_LTIME_DEFAULT * MS_PER_SEC * SEC_PER_MIN
);
}
else {
ltime_min = _nib_abr_entry_valid_offset(abr);
}
(void)ltime_min; /* gnrc_sixlowpan_nd_opt_abr_build might evaluate to NOP */
abro = gnrc_sixlowpan_nd_opt_abr_build(abr->version, ltime_min, &abr->addr,
ext_opts);
Expand Down
8 changes: 4 additions & 4 deletions sys/net/gnrc/network_layer/ipv6/nib/nib_abr.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ int gnrc_ipv6_nib_abr_add(const ipv6_addr_t *addr)
_nib_release();
return -ENOMEM;
}
abr->valid_until_ms = 0U;
abr->valid_until_ms = evtimer_now_msec() + (
SIXLOWPAN_ND_OPT_ABR_LTIME_DEFAULT * MS_PER_SEC * SEC_PER_MIN
);
/* Associate all existing prefixes in the prefix list of the border router's
* downstream interface to the authoritative border router so they are
* advertised in a Router Advertisement with the Authoritative Border Router
Expand Down Expand Up @@ -93,9 +95,7 @@ void gnrc_ipv6_nib_abr_print(gnrc_ipv6_nib_abr_t *abr)
printf("%s v%" PRIu32 " expires %" PRIu32 "min\n",
ipv6_addr_to_str(addr_str, &abr->addr, sizeof(addr_str)),
abr->version,
(abr->valid_until_ms != 0) ?
gnrc_ipv6_nib_abr_valid_offset(abr) :
SIXLOWPAN_ND_OPT_ABR_LTIME_DEFAULT);
gnrc_ipv6_nib_abr_valid_offset(abr));
}
#else
typedef int dont_be_pedantic;
Expand Down

0 comments on commit bbf0b3a

Please sign in to comment.