}
+void PowerLDAP::add( const string &dn, LDAPMod *mods[] )
+{
+ int rc;
+
+ rc = ldap_add_ext_s( d_ld, dn.c_str(), mods, NULL, NULL );
+ if ( rc == LDAP_SERVER_DOWN || rc == LDAP_CONNECT_ERROR )
+ throw LDAPNoConnection();
+ else if ( rc != LDAP_SUCCESS )
+ throw LDAPException( "Error adding LDAP entry " + dn + ": " + getError( rc ) );
+}
+
+
void PowerLDAP::modify( const string &dn, LDAPMod *mods[], LDAPControl **scontrols, LDAPControl **ccontrols )
{
int rc;
}
+void PowerLDAP::del( const string& dn )
+{
+ int rc;
+
+ rc = ldap_delete_ext_s( d_ld, dn.c_str(), NULL, NULL );
+ if ( rc == LDAP_SERVER_DOWN || rc == LDAP_CONNECT_ERROR )
+ throw LDAPNoConnection();
+ else if ( rc != LDAP_SUCCESS && rc != LDAP_NO_SUCH_OBJECT )
+ throw LDAPException( "Error deleting LDAP entry " + dn + ": " + getError( rc ) );
+}
+
+
PowerLDAP::SearchResult::Ptr PowerLDAP::search( const string& base, int scope, const string& filter, const char** attr )
{
int msgid, rc;
void bind( const string& ldapbinddn = "", const string& ldapsecret = "", int method = LDAP_AUTH_SIMPLE );
void simpleBind( const string& ldapbinddn = "", const string& ldapsecret = "" );
SearchResult::Ptr search( const string& base, int scope, const string& filter, const char** attr = 0 );
+ void add( const string &dn, LDAPMod *mods[] );
void modify( const string& dn, LDAPMod *mods[], LDAPControl **scontrols = 0, LDAPControl **ccontrols = 0 );
+ void del( const string& dn );
bool getSearchEntry( int msgid, sentry_t& entry, bool dn = false );
void getSearchResults( int msgid, sresult_t& result, bool dn = false );