From ca09d2dca8ffa7ca9676acafa6edd80d68f9021c Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Sun, 22 Nov 2009 17:28:23 +0000
Subject: [PATCH] use macros for fake connid

---
 servers/slapd/backend.c    | 2 +-
 servers/slapd/connection.c | 2 +-
 servers/slapd/slap.h       | 7 +++++++
 servers/slapd/syncrepl.c   | 2 +-
 tests/data/monitor1.out    | 4 ++--
 5 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c
index b003354219..1032008353 100644
--- a/servers/slapd/backend.c
+++ b/servers/slapd/backend.c
@@ -762,7 +762,7 @@ be_shadow_update( Operation *op )
 	/* This assumes that all internal ops (connid <= -1000) on a syncrepl
 	 * database are syncrepl operations.
 	 */
-	return (( SLAP_SYNC_SHADOW( op->o_bd ) && op->o_connid <= -1000 ) ||
+	return ( ( SLAP_SYNC_SHADOW( op->o_bd ) && SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) ||
 		( SLAP_SHADOW( op->o_bd ) && be_isupdate_dn( op->o_bd, &op->o_ndn ) ) );
 }
 
diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c
index 2f426d6106..7f8331f532 100644
--- a/servers/slapd/connection.c
+++ b/servers/slapd/connection.c
@@ -48,7 +48,7 @@ static ldap_pvt_thread_mutex_t connections_mutex;
 static Connection *connections = NULL;
 
 static ldap_pvt_thread_mutex_t conn_nextid_mutex;
-static unsigned long conn_nextid = 0;
+static unsigned long conn_nextid = SLAPD_SYNC_SYNCCONN_OFFSET;
 
 static const char conn_lost_str[] = "connection lost";
 
diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h
index 6015dbf837..076b898a5b 100644
--- a/servers/slapd/slap.h
+++ b/servers/slapd/slap.h
@@ -1703,6 +1703,13 @@ struct syncinfo_s;
 
 #define SLAP_SYNC_RID_MAX	999
 #define SLAP_SYNC_SID_MAX	4095	/* based on liblutil/csn.c field width */
+
+/* fake conn connid constructed as rid; real connids start
+ * at SLAPD_SYNC_CONN_OFFSET */
+#define SLAPD_SYNC_SYNCCONN_OFFSET (SLAP_SYNC_RID_MAX + 1)
+#define SLAPD_SYNC_IS_SYNCCONN(connid) ((connid) < SLAPD_SYNC_SYNCCONN_OFFSET)
+#define SLAPD_SYNC_RID2SYNCCONN(rid) (rid)
+
 #define SLAP_SYNCUUID_SET_SIZE 256
 
 struct sync_cookie {
diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c
index 414ab32506..a9b3d7150b 100644
--- a/servers/slapd/syncrepl.c
+++ b/servers/slapd/syncrepl.c
@@ -1354,7 +1354,7 @@ do_syncrepl(
 	connection_fake_init( &conn, &opbuf, ctx );
 	op = &opbuf.ob_op;
 	/* o_connids must be unique for slap_graduate_commit_csn */
-	op->o_connid = -1000 - si->si_rid;
+	op->o_connid = SLAPD_SYNC_RID2SYNCCONN(si->si_rid);
 
 	op->o_managedsait = SLAP_CONTROL_NONCRITICAL;
 	be = si->si_be;
diff --git a/tests/data/monitor1.out b/tests/data/monitor1.out
index 06beecc891..59192485ae 100644
--- a/tests/data/monitor1.out
+++ b/tests/data/monitor1.out
@@ -1,4 +1,4 @@
-dn: cn=Connection 1,cn=Connections,cn=Monitor
+dn: cn=Connection 1001,cn=Connections,cn=Monitor
 structuralObjectClass: monitorConnection
 monitorConnectionProtocol: 3
 monitorConnectionOpsReceived: 2
@@ -11,7 +11,7 @@ monitorConnectionWrite: 0
 monitorConnectionMask: rx
 monitorConnectionListener: ldap://localhost:@PORT1@/
 monitorConnectionLocalAddress: IP=127.0.0.1:@PORT1@
-entryDN: cn=Connection 1,cn=Connections,cn=Monitor
+entryDN: cn=Connection 1001,cn=Connections,cn=Monitor
 
 dn: cn=Connections,cn=Monitor
 structuralObjectClass: monitorContainer
-- 
GitLab