Merge branch 'master' of ssh://jra@git.samba.org/data/git/samba
[kai/samba.git] / source4 / wrepl_server / wrepl_server.h
index fabba093896ebf29fdc4e4d448c1356c02025516..a001c6b3ae5258f964c026a367fdc4a66d30f2a5 100644 (file)
@@ -7,7 +7,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
@@ -16,8 +16,7 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 struct wreplsrv_service;
@@ -35,7 +34,7 @@ struct wreplsrv_in_call {
        struct wreplsrv_in_connection *wreplconn;
        struct wrepl_packet req_packet;
        struct wrepl_packet rep_packet;
-       BOOL terminate_after_send;
+       bool terminate_after_send;
 };
 
 /*
@@ -56,32 +55,23 @@ struct wreplsrv_in_connection {
         */
        struct wreplsrv_partner *partner;
 
-       /*
-        * we need to take care of our own ip address,
-        * as this is the WINS-Owner ID the peer expect
-        * from us.
-        */
-       const char *our_ip;
-
        /* keep track of the assoc_ctx's */
        struct {
-               BOOL stopped;
+               bool stopped;
                uint32_t our_ctx;
                uint32_t peer_ctx;
        } assoc_ctx;
 };
 
 /*
-  state of an outcoming wrepl connection
+  state of an outgoing wrepl connection
 */
 struct wreplsrv_out_connection {
        /* our global service context */
        struct wreplsrv_service *service;
 
        /*
-        * the partner that connects us,
-        * can be NULL, when we got a connection
-        * from an unknown address
+        * the partner we connect
         */
        struct wreplsrv_partner *partner;
 
@@ -172,8 +162,11 @@ struct wreplsrv_partner {
                /* change count till push notification */
                uint32_t change_count;
 
+               /* the last wins db maxVersion have reported to the partner */
+               uint64_t maxVersionID;
+
                /* we should use WREPL_REPL_INFORM* messages to this partner */
-               BOOL use_inform;
+               bool use_inform;
 
                /* the error count till the last success */
                uint32_t error_count;
@@ -213,13 +206,16 @@ struct wreplsrv_service {
        struct timeval startup_time;
 
        /* the winsdb handle */
-       struct ldb_context *wins_db;
+       struct winsdb_handle *wins_db;
 
        /* some configuration */
        struct {
                /* the wins config db handle */
                struct ldb_context *ldb;
 
+               /* the last wins config db seqnumber we know about */
+               uint64_t seqnumber;
+
                /* 
                 * the interval (in secs) till an active record will be marked as RELEASED 
                 */
@@ -273,6 +269,14 @@ struct wreplsrv_service {
        /* all partners (pull and push) */
        struct wreplsrv_partner *partners;
 
+       /*
+        * this is our local wins_owner entry, this is also in the table list
+        * but we need a pointer to it, because we need to update it on each 
+        * query to wreplsrv_find_owner(), as the local records can be added
+        * to the wins.ldb from external tools and the winsserver
+        */
+       struct wreplsrv_owner *owner;
+
        /* this is a list of each wins_owner we know about in our database */
        struct wreplsrv_owner *table;
 
@@ -299,8 +303,11 @@ struct wreplsrv_service {
                /*
                 * are we currently inside a scavenging run
                 */
-               BOOL processing;        
+               bool processing;        
        } scavenging;
 };
 
+struct socket_context;
+struct wrepl_name;
+#include "wrepl_server/wrepl_out_helpers.h"
 #include "wrepl_server/wrepl_server_proto.h"