]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9339 slapd-monitor: Add schema arc for overlays
authorHoward Chu <hyc@openldap.org>
Sun, 6 Sep 2020 12:43:31 +0000 (13:43 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 10 Sep 2020 02:29:19 +0000 (02:29 +0000)
Not directly related to syncrepl, but adds a necessary schema arc.
Also add a convenience function for obtaining an entry with known ndn.
Also fix to ignore outbound connections.

servers/slapd/back-monitor/back-monitor.h
servers/slapd/back-monitor/conn.c
servers/slapd/back-monitor/entry.c
servers/slapd/back-monitor/init.c
servers/slapd/back-monitor/proto-back-monitor.h

index b206ee9d5e6361fda5e37aa8f5b2f84174a9317f..e2d54ad1b9de0fe2e66d9de095dade6a6c1db369 100644 (file)
@@ -314,6 +314,7 @@ typedef struct monitor_extra_t {
                struct berval *modify );
        monitor_entry_t * (*entrypriv_create)( void );
        int (*register_subsys_late)( monitor_subsys_t *ms );
+       Entry * (*entry_get_unlocked)( struct berval *ndn );
 } monitor_extra_t;
 
 LDAP_END_DECL
index be4df072f83795f8f393f16662780894063834ec..79903788d979855b59ae7c6618e9d32c0e1aadf7 100644 (file)
@@ -219,7 +219,7 @@ monitor_subsys_conn_update(
        dnRdn( &e->e_nname, &rdn );
        
        if ( dn_match( &rdn, &total_bv ) ) {
-               n = connections_nextid();
+               n = connections_nextid() - SLAPD_SYNC_SYNCCONN_OFFSET;
 
        } else if ( dn_match( &rdn, &current_bv ) ) {
                Connection      *c;
@@ -229,7 +229,9 @@ monitor_subsys_conn_update(
                                c != NULL;
                                n++, c = connection_next( c, &connindex ) )
                {
-                       /* No Op */ ;
+                       /* Ignore outbound connections */
+                       if ( c->c_conn_state == SLAP_C_CLIENT )
+                               n--;
                }
                connection_done( c );
        }
@@ -456,6 +458,10 @@ monitor_subsys_conn_create(
                {
                        monitor_entry_t         *mp;
 
+                       /* ignore outbound for now, nothing to show */
+                       if ( c->c_conn_state == SLAP_C_CLIENT )
+                               continue;
+
                        if ( conn_create( mi, c, &e, ms ) != SLAP_CB_CONTINUE
                                        || e == NULL )
                        {
index 13504a2f29d20e60379da3b38006627db46645a6..8c1d83f9cbbb085fd7be87330e0bce4734b9ab13 100644 (file)
@@ -221,3 +221,16 @@ monitor_entry_stub(
        }
        return e;
 }
+
+Entry *
+monitor_entry_get_unlocked(
+       struct berval *ndn
+)
+{
+       monitor_info_t *mi = ( monitor_info_t * )be_monitor->be_private;
+       Entry *ret = NULL;
+
+       if ( !monitor_cache_get( mi, ndn, &ret ))
+               monitor_cache_release( mi, ret );
+       return ret;
+}
index d4e62be229323c2014309d8cd2755efd10d174bb..c541863e0c57fddd6a6f926ac05e1a98112184c6 100644 (file)
@@ -68,7 +68,8 @@ static const monitor_extra_t monitor_extra = {
 
        monitor_back_entry_stub,
        monitor_back_entrypriv_create,
-       monitor_back_register_subsys_late
+       monitor_back_register_subsys_late,
+       monitor_back_entry_get_unlocked
 };
        
 
@@ -1961,6 +1962,7 @@ monitor_back_initialize(
                { "olmSubSystemAttributes",             "olmAttributes:0" },
                { "olmGenericAttributes",               "olmSubSystemAttributes:0" },
                { "olmDatabaseAttributes",              "olmSubSystemAttributes:1" },
+               { "olmOverlayAttributes",               "olmSubSystemAttributes:2" },
 
                /* for example, back-mdb specific attrs
                 * are in "olmDatabaseAttributes:12"
@@ -1972,6 +1974,7 @@ monitor_back_initialize(
                { "olmSubSystemObjectClasses",          "olmObjectClasses:0" },
                { "olmGenericObjectClasses",            "olmSubSystemObjectClasses:0" },
                { "olmDatabaseObjectClasses",           "olmSubSystemObjectClasses:1" },
+               { "olmOverlayObjectClasses",            "olmSubSystemObjectClasses:2" },
 
                /* for example, back-mdb specific objectClasses
                 * are in "olmDatabaseObjectClasses:12"
index 20084e4229158ff9e1470848d1abf574041e339a..a0ae00ca5a432ff9d34f97bf8fd7ddbe78e0c133 100644 (file)
@@ -134,9 +134,13 @@ monitor_back_entry_stub LDAP_P((
        ObjectClass             *oc,
        struct berval   *create,
        struct berval   *modify ));
+extern Entry *
+monitor_back_entry_get_unlocked LDAP_P((
+       struct berval   *ndn ));
 
 #define monitor_entrypriv_create monitor_back_entrypriv_create
 #define monitor_entry_stub monitor_back_entry_stub
+#define monitor_entry_get_unlocked monitor_back_entry_get_unlocked
 
 /*
  * init