Don't update the same IP more than 2 times in success.
[bpdyndnsd] / src / service.hpp
index fd5924f..e0410f1 100644 (file)
@@ -35,9 +35,10 @@ private:
 
     int UpdateInterval;
     int MaxUpdatesWithinInterval;
+    int MaxEqualUpdatesInSuccession;
     int DNSCacheTTL;
 
-    std::list<time_t> LastUpdates;
+    std::map<time_t,std::string> LastUpdates;
 
     int ErrorCount;
     time_t ErrorServiceBlockedUntil;
@@ -54,6 +55,7 @@ private:
         ar & ActualIP;
         ar & UpdateInterval;
         ar & MaxUpdatesWithinInterval;
+        ar & MaxEqualUpdatesInSuccession;
         ar & DNSCacheTTL;
     }
 
@@ -73,7 +75,9 @@ public:
 
     bool update_allowed(const time_t current_time, bool changed_to_online);
 
-    void set_last_update(const time_t current_time);
+    void set_last_update(const time_t current_time, const std::string& ip);
+
+    time_t get_last_update_time();
 
     int get_update_interval()const;
     void set_update_interval(const int _update_interval);
@@ -81,6 +85,9 @@ public:
     int get_max_updates_within_interval() const;
     void set_max_updates_within_interval(const int _max_updates_within_interval);
 
+    int get_max_equal_updates_in_succession() const;
+    void set_max_equal_updates_in_succession(const int _max_equal_updates_in_succession);
+
     int get_dns_cache_ttl() const;
     void set_dns_cache_ttl(const int _dns_cache_ttl);
 
@@ -96,8 +103,8 @@ public:
     void set_password(const std::string& _password);
     std::string get_password() const;
 
-    void set_last_updates(std::list<time_t> _last_updates);
-    const std::list<time_t> get_last_updates() const;
+    void set_last_updates(std::map<time_t,std::string> _last_updates);
+    const std::map<time_t,std::string> get_last_updates() const;
 
     void set_actual_ip(const std::string& _actual_ip);
     std::string get_actual_ip() const;