summaryrefslogtreecommitdiff
path: root/source4/wrepl_server/wrepl_server.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-12-31 09:44:04 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:49:33 -0500
commit60d27d8505c483c2fac852d3ddc9148f476dfc6b (patch)
treedca93255ac934f5db62a50b5fa5df00410e926c9 /source4/wrepl_server/wrepl_server.c
parent1d63dc5fe4000de6e3414e3eb45f65f6216cea61 (diff)
downloadsamba-60d27d8505c483c2fac852d3ddc9148f476dfc6b.tar.gz
samba-60d27d8505c483c2fac852d3ddc9148f476dfc6b.tar.bz2
samba-60d27d8505c483c2fac852d3ddc9148f476dfc6b.zip
r12642: only do push notifications when something changed
metze (This used to be commit 61f1c8c347d26f34e3e924ceae55e99e6c1461f7)
Diffstat (limited to 'source4/wrepl_server/wrepl_server.c')
-rw-r--r--source4/wrepl_server/wrepl_server.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/source4/wrepl_server/wrepl_server.c b/source4/wrepl_server/wrepl_server.c
index 9f1664bc22..018b137d7e 100644
--- a/source4/wrepl_server/wrepl_server.c
+++ b/source4/wrepl_server/wrepl_server.c
@@ -197,6 +197,34 @@ failed:
return maxVersion;
}
+uint64_t wreplsrv_local_db_seqnumber(struct wreplsrv_service *service)
+{
+ int ret;
+ struct ldb_context *ldb = service->wins_db->ldb;
+ struct ldb_dn *dn;
+ struct ldb_result *res = NULL;
+ TALLOC_CTX *tmp_ctx = talloc_new(service);
+ uint64_t seqnumber = 0;
+
+ dn = ldb_dn_explode(tmp_ctx, "@BASEINFO");
+ if (!dn) goto failed;
+
+ /* find the record in the WINS database */
+ ret = ldb_search(ldb, dn, LDB_SCOPE_BASE,
+ NULL, NULL, &res);
+ if (ret != LDB_SUCCESS) goto failed;
+ talloc_steal(tmp_ctx, res);
+ if (res->count > 1) goto failed;
+
+ if (res->count == 1) {
+ seqnumber = ldb_msg_find_uint64(res->msgs[0], "sequenceNumber", 0);
+ }
+
+failed:
+ talloc_free(tmp_ctx);
+ return seqnumber;
+}
+
NTSTATUS wreplsrv_fill_wrepl_table(struct wreplsrv_service *service,
TALLOC_CTX *mem_ctx,
struct wrepl_table *table_out,