#include <eim.h>
int eimDeleteDomain(char * ldapURL,
EimConnectInfo connectInfo,
EimRC * eimrc)
Service Program Name: QSYS/QSYEIMThe 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 |