summaryrefslogtreecommitdiff
path: root/src/odhcp6c.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/odhcp6c.c')
-rw-r--r--src/odhcp6c.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/odhcp6c.c b/src/odhcp6c.c
index 8149738..3712830 100644
--- a/src/odhcp6c.c
+++ b/src/odhcp6c.c
@@ -565,7 +565,8 @@ struct odhcp6c_entry* odhcp6c_find_entry(enum odhcp6c_state state, const struct
}
-bool odhcp6c_update_entry_safe(enum odhcp6c_state state, struct odhcp6c_entry *new, uint32_t safe)
+bool odhcp6c_update_entry(enum odhcp6c_state state, struct odhcp6c_entry *new,
+ uint32_t safe, bool filterexcess)
{
size_t len;
struct odhcp6c_entry *x = odhcp6c_find_entry(state, new);
@@ -576,7 +577,8 @@ bool odhcp6c_update_entry_safe(enum odhcp6c_state state, struct odhcp6c_entry *n
if (new->valid > 0) {
if (x) {
- if (new->valid >= x->valid && new->valid != UINT32_MAX &&
+ if (filterexcess && new->valid >= x->valid &&
+ new->valid != UINT32_MAX &&
new->valid - x->valid < min_update_interval &&
new->preferred >= x->preferred &&
new->preferred != UINT32_MAX &&
@@ -599,12 +601,6 @@ bool odhcp6c_update_entry_safe(enum odhcp6c_state state, struct odhcp6c_entry *n
}
-bool odhcp6c_update_entry(enum odhcp6c_state state, struct odhcp6c_entry *new)
-{
- return odhcp6c_update_entry_safe(state, new, 0);
-}
-
-
static void odhcp6c_expire_list(enum odhcp6c_state state, uint32_t elapsed)
{
size_t len;