-char *supportedControls[] = {
- LDAP_CONTROL_MANAGEDSAIT,
-/* LDAP_CONTROL_X_CHANGE_PASSWD, */
- NULL
+#define SLAP_CTRL_ABANDON 0x0001
+#define SLAP_CTRL_ADD 0x2002
+#define SLAP_CTRL_BIND 0x0004
+#define SLAP_CTRL_COMPARE 0x1008
+#define SLAP_CTRL_DELETE 0x2010
+#define SLAP_CTRL_MODIFY 0x2020
+#define SLAP_CTRL_RENAME 0x2040
+#define SLAP_CTRL_SEARCH 0x1080
+#define SLAP_CTRL_UNBIND 0x0100
+
+#define SLAP_CTRL_INTROGATE (SLAP_CTRL_COMPARE|SLAP_CTRL_SEARCH)
+#define SLAP_CTRL_UPDATE \
+ (SLAP_CTRL_ADD|SLAP_CTRL_DELETE|SLAP_CTRL_MODIFY|SLAP_CTRL_RENAME)
+#define SLAP_CTRL_ACCESS (SLAP_CTRL_INTROGATE|SLAP_CTRL_UPDATE)
+
+typedef int (SLAP_CTRL_PARSE_FN) LDAP_P((
+ Connection *conn,
+ Operation *op,
+ LDAPControl *ctrl,
+ const char **text ));
+
+static SLAP_CTRL_PARSE_FN parseManageDSAit;
+static SLAP_CTRL_PARSE_FN parseSubentries;
+
+static struct slap_control {
+ char *sc_oid;
+ int sc_ops_mask;
+ char **sc_extendedops;
+ SLAP_CTRL_PARSE_FN *sc_parse;
+
+} supportedControls[] = {
+ { LDAP_CONTROL_MANAGEDSAIT,
+ SLAP_CTRL_ACCESS, NULL,
+ parseManageDSAit },
+ { LDAP_CONTROL_SUBENTRIES,
+ SLAP_CTRL_SEARCH, NULL,
+ parseSubentries },
+ { NULL }