* if so, return attributes which the class requires/allows
                 */
                oc = attrs->an_oc;
-               if( oc == NULL ) {
-                       oc = oc_bvfind( &attrs->an_name );
+               if( oc == NULL && attrs->an_name.bv_val ) {
+                       switch( attrs->an_name.bv_val[0] ) {
+                               case '+':
+                               case '-': {
+                                       struct berval ocname;
+                                       ocname.bv_len = attrs->an_name.bv_len - 1;
+                                       ocname.bv_val = &attrs->an_name.bv_val[1];
+                                       oc = oc_bvfind( &ocname );
+                               } break;
+                               default:
+                                       oc = oc_bvfind( &attrs->an_name );
+                       }
                        attrs->an_oc = oc;
                }
                if( oc != NULL ) {
 
 
 echo "Using ldapsearch to retrieve the root DSE..."
 for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -b "" -s base -h $LOCALHOST -p $PORT 'extensibleObject' > $SEARCHOUT 2>&1
+       $LDAPSEARCH -b "" -s base -h $LOCALHOST -p $PORT '+extensibleObject' > $SEARCHOUT 2>&1
        RC=$?
        if test $RC = 0 ; then
                break
 
 if test $RC = 0 -a $MONITORDB = yes ; then
        echo "Using ldapsearch to retrieve the cn=Monitor..."
-       $LDAPSEARCH -b "cn=Monitor" -s base -h $LOCALHOST -p $PORT 'extensibleObject' >> $SEARCHOUT 2>&1
+       $LDAPSEARCH -b "cn=Monitor" -s base -h $LOCALHOST -p $PORT -- '-extensibleObject' >> $SEARCHOUT 2>&1
        RC=$?
 fi