]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slap.h
ITS#6270
[openldap] / servers / slapd / slap.h
index ef9c40f7b91665c74a16bdba18bab8790695912b..076b898a5b6ac60b4f2434d98939a6109bc3ac57 100644 (file)
@@ -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 {
@@ -2762,9 +2769,26 @@ typedef struct Listener Listener;
 /*
  * represents a connection from an ldap client
  */
+/* structure state (protected by connections_mutex) */
+enum sc_struct_state {
+       SLAP_C_UNINITIALIZED = 0,       /* MUST BE ZERO (0) */
+       SLAP_C_UNUSED,
+       SLAP_C_USED,
+       SLAP_C_PENDING
+};
+
+/* connection state (protected by c_mutex ) */
+enum sc_conn_state {
+       SLAP_C_INVALID = 0,             /* MUST BE ZERO (0) */
+       SLAP_C_INACTIVE,                /* zero threads */
+       SLAP_C_CLOSING,                 /* closing */
+       SLAP_C_ACTIVE,                  /* one or more threads */
+       SLAP_C_BINDING,                 /* binding */
+       SLAP_C_CLIENT                   /* outbound client conn */
+};
 struct Connection {
-       int                     c_struct_state; /* structure management state */
-       int                     c_conn_state;   /* connection state */
+       enum sc_struct_state    c_struct_state; /* structure management state */
+       enum sc_conn_state      c_conn_state;   /* connection state */
        int                     c_conn_idx;             /* slot in connections array */
        ber_socket_t    c_sd;
        const char      *c_close_reason; /* why connection is closing */