#include <eim.h> int eimDeleteDomain(char * ldapURL, EimConnectInfo connectInfo, EimRC * eimrc)Service Program Name: QSYS/QSYEIM
The eimDeleteDomain() function deletes the EIM domain information. If there are any registries or identifiers in the domain then it cannot be deleted.
ldap://host:port/dn or ldaps://host:port/dn
where:
Examples:
If the system is configured to connect to a secure port, EimSSLInfo is required.
For EIM_SIMPLE connect type, the creds field should contain the EimSimpleConnectInfo structure with a binddn and password. EimPasswordProtect is used to determine the level of password protection on the ldap bind.
EIM_PROTECT_NO (0) | The clear-text password is sent on the bind. |
EIM_PROTECT_CRAM_MD5 (1) | The protected password is sent on the bind. The server side must support cram-md5 protocol to send the protected password. |
EIM_PROTECT_CRAM_MD5_OPTIONAL (2) | The protected password is sent on the bind if the cram-md5 protocol is supported. Otherwise, the clear-text password is sent. |
For EIM_KERBEROS, the default logon credentials are used. The kerberos creds field must be NULL.
For EIM_CLIENT_AUTHENTICATION, the creds field is ignored. EimSSLInfo must be provided.
The structure layouts follow:
enum EimPasswordProtect { EIM_PROTECT_NO, EIM_PROTECT_CRAM_MD5, EIM_PROTECT_CRAM_MD5_OPTIONAL }; enum EimConnectType { EIM_SIMPLE, EIM_KERBEROS, EIM_CLIENT_AUTHENTICATION }; typedef struct EimSimpleConnectInfo { enum EimPasswordProtect protect; char * bindDn; char * bindPw; } EimSimpleConnectInfo; typedef struct EimSSLInfo { char * keyring; char * keyring_pw; char * certificateLabel; } EimSSLInfo; typedef struct EimConnectInfo { enum EimConnectType type; union { gss_cred_id_t * kerberos; EimSimpleConnectInfo simpleCreds; } creds; EimSSLInfo * ssl; } EimConnectInfo;
The return value from the API. Following each return value is the list of possible values for the messageCatalogMessageID field in the eimrc parameter for that value.
EIMERR_ACCESS (1) | Insufficient access to EIM data. |
EIMERR_NODOMAIN (24) | EIM Domain not found or insufficient access to EIM data. |
EIMERR_DATA_CONVERSION (13) | Error occurred when converting data between code pages. |
EIMERR_CONN_INVAL (54) | Connection type is not valid. |
EIMERR_NOT_SECURE (32) | The system is not configured to connect to a secure port. Connection type of EIM_CLIENT_AUTHENTICATION is not valid. |
EIMERR_PARM_REQ (34) | Missing required parameter. Please check API documentation. |
EIMERR_PROTECT_INVAL (22) | The protect parameter in EimSimpleConnectInfo is not valid. |
EIMERR_PTR_INVAL (35) | Pointer parameter is not valid. |
EIMERR_SSL_REQ (42) | The system is configured to connect to a secure port. EimSSLInfo is required. |
EIMERR_URL_NODN (45) | URL has no dn (required). |
EIMERR_URL_NODOMAIN (46) | URL has no domain (required). |
EIMERR_URL_NOHOST (47) | URL does not have a host. |
EIMERR_URL_NOTLDAP (49) | URL does not begin with ldap. |
EIMERR_INVALID_DN (66) | Distinguished Name (DN) is not valid. |
EIMERR_NOMEM (27) | No memory available. Unable to allocate required space. |
EIMERR_DOMAIN_NOTEMPTY (15) | Cannot delete a domain when it has registries or identifiers. |
EIMERR_CONN_NOTSUPP (12) | Connection type is not supported. |
EIMERR_URL_READ_ONLY (50) | LDAP connection can only be made to a replica ldap server. Change the connection information and try the request again. |
EIMERR_LDAP_ERR (23) | Unexpected LDAP error. %s |
EIMERR_UNKNOWN (44) | Unknown error or unknown system state. |
See Code disclaimer information for information pertaining to code examples.
The following example deletes the specified EIM domain information.
#include <eim.h> int main(int argc, char *argv[]) { int rc; char eimerr[100]; EimRC * err; char * ldapURL = "ldap://eimsystem:389/ibm-eimDomainName=myEimDomain,o=mycompany,c=us"; EimConnectInfo con; /* Set up connection information */ con.type = EIM_SIMPLE; con.creds.simpleCreds.protect = EIM_PROTECT_NO; con.creds.simpleCreds.bindDn = "cn=admin"; con.creds.simpleCreds.bindPw = "secret"; con.ssl = NULL; /* Set up error structure. */ memset(eimerr,0x00,100); err = (EimRC *)eimerr; err->memoryProvidedByCaller = 100; /* Delete this domain */ if (0 != (rc = eimDeleteDomain(ldapURL, con, err))) printf("Delete domain error = %d", rc); return 0; }
Top | Security APIs | APIs by category |