]> git.sur5r.net Git - openldap/commitdiff
A subentries control framework
authorKurt Zeilenga <kurt@openldap.org>
Wed, 9 Jan 2002 00:05:49 +0000 (00:05 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 9 Jan 2002 00:05:49 +0000 (00:05 +0000)
include/ldap.h
servers/slapd/controls.c
servers/slapd/proto-slap.h

index 42c7355c5c4672c5d7b0943c58281235a43a955f..f7a10c5c29e56188b057432fc54e1405ba9ee00f 100644 (file)
@@ -187,12 +187,13 @@ typedef struct ldapcontrol {
 #define LDAP_CHASE_EXTERNAL_REFERRALS  0x0040U
 #endif
 
+#define LDAP_CONTROL_SUBENTRIES "1.3.6.1.4.1.4203.666.5.1"
 #define LDAP_CONTROL_MANAGEDSAIT "2.16.840.1.113730.3.4.2"
 
-#define LDAP_CONTROL_DUPENT    LDAP_CONTROL_DUPENT_REQUEST
 #define LDAP_CONTROL_DUPENT_REQUEST            "2.16.840.1.113719.1.27.101.1"
 #define LDAP_CONTROL_DUPENT_RESPONSE   "2.16.840.1.113719.1.27.101.2"
 #define LDAP_CONTROL_DUPENT_ENTRY              "2.16.840.1.113719.1.27.101.3"
+#define LDAP_CONTROL_DUPENT    LDAP_CONTROL_DUPENT_REQUEST
 
 /* Experimental Controls */
 
index b5e5b9db5de3d32b31b551bf1c3637faa8a01a94..97824331289edfa491dd13b34380b7682f6725ab 100644 (file)
@@ -21,6 +21,7 @@
 
 char *supportedControls[] = {
        LDAP_CONTROL_MANAGEDSAIT,
+       LDAP_CONTROL_SUBENTRIES,
        NULL
 };
 
@@ -244,3 +245,26 @@ int get_manageDSAit( Operation *op )
 
        return SLAP_NO_CONTROL;
 }
+
+int get_subentries( Operation *op, int *visibility )
+{
+       int i;
+       if( op == NULL || op->o_ctrls == NULL ) {
+               return SLAP_NO_CONTROL;
+       }
+
+       for( i=0; op->o_ctrls[i] != NULL; i++ ) {
+               if( strcmp( LDAP_CONTROL_SUBENTRIES,
+                       op->o_ctrls[i]->ldctl_oid )     == 0 )
+               {
+                       /* need to parse the value */
+                       *visibility = 0;
+
+                       return op->o_ctrls[i]->ldctl_iscritical
+                               ? SLAP_CRITICAL_CONTROL
+                               : SLAP_NONCRITICAL_CONTROL;
+               }
+       }
+
+       return SLAP_NO_CONTROL;
+}
index bd535925757583cbb4fa9e40c8c3db15c58da6a6..998d5f1383a8a44fde2c00c28039b440050b2d75 100644 (file)
@@ -297,6 +297,7 @@ LDAP_SLAPD_F (int) get_ctrls LDAP_P((
        int senderrors ));
 
 LDAP_SLAPD_F (int) get_manageDSAit LDAP_P(( Operation *op ));
+LDAP_SLAPD_F (int) get_subentries LDAP_P(( Operation *op, int *visibility ));
 
 /*
  * config.c