Don't apply excess filter to DHCPv6 and unify odhcp6c_update_entry
[project/odhcp6c.git] / src / odhcp6c.c
index 8149738ade5d6d84cc88d7c14c55a8639236c232..37128308f26666d8e75a7941bb758ff92635d9e9 100644 (file)
@@ -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;