#include <eim.h> int eimListPolicyFilters(EimHandle * eim, enum EimPolicyFilterType filterType, char * registryName, unsigned int lengthOfListData, EimList * listData, EimRC * eimrc)Service Program Name: QSYS/QSYEIM
The eimListPolicyFilters() function lists policy filters for the domain.
EIM version 2 must be supported by the local EIM APIs to use this API (see eimGetVersion()--Get EIM Version).
The list returned contains only the information that the user has authority to access.
EIM_ALL_FILTERS (0) | List all policy filters. |
EIM_CERTIFICATE_FILTER (1) | List certificate policy filters. |
The EimList structure contains information about the returned data. The API will return as much data as space has been provided. The data returned is a linked list of EimPolicyFilter structures. firstEntry is used to get to the first EimPolicyFilter structure in the linked list.
EimList structure:
typedef struct EimList { unsigned int bytesReturned; /* Number of bytes actually returned by the API */ unsigned int bytesAvailable; /* Number of bytes of available data that could have been returned by the API */ unsigned int entriesReturned; /* Number of entries actually returned by the API */ unsigned int entriesAvailable; /* Number of entries available to be returned by the API */ unsigned int firstEntry; /* Displacement to the first linked list entry. This byte offset is relative to the start of the EimList structure. */ } EimList;
EimPolicyFilter structure:
typedef struct EimPolicyFilter { unsigned int nextEntry; /* Displacement to next entry. This byte offset is relative to the start of this structure */ enum EimPolicyFilterType type; /* Type of policy filter. */ EimListData sourceRegistry; /* Source registry name the policy filter is defined for. */ EimListData filterValue; /* Policy filter value. */ } EimPolicyFilter;
EimListData structure:
typedef struct EimListData { unsigned int length; /* Length of data */ unsigned int disp; /* Displacement to data. This byte offset is relative to the start of the parent structure; that is, the structure containing this structure. */ } EimListData;
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_NOREG (28) | EIM Registry not found or insufficient access to EIM data. |
EIMERR_NOLOCK (26) | Unable to allocate internal system object. |
EIMERR_DATA_CONVERSION (13) | Error occurred when converting data between code pages. |
EIMERR_EIMLIST_SIZE (16) | Length of EimList is not valid. EimList must be at least 20 bytes in length. |
EIMERR_HANDLE_INVAL (17) | EimHandle is not valid. |
EIMERR_PARM_REQ (34) | Missing required parameter. Please check API documentation. |
EIMERR_PTR_INVAL (35) | Pointer parameter is not valid. |
EIMERR_SPACE (41) | Unexpected error accessing parameter. |
EIMERR_POLICY_FILTER_TYPE_ INVAL (60) | Policy filter type is not valid. |
EIMERR_FUNCTION_NOT_ SUPPORTED (70) | The specified function is not supported by the EIM version. |
EIMERR_NOMEM (27) | No memory available. Unable to allocate required space. |
EIMERR_NOT_CONN (31) | Not connected to LDAP. Use eimConnect() API and try the request again. |
EIMERR_LDAP_ERR (23) | Unexpected LDAP error. %s |
EIMERR_UNKNOWN (44) | Unknown error or unknown system state. |
EIMERR_UNEXP_OBJ_VIOLATION (56) | Unexpected object violation. |
The following example lists certificate policy filters for a registry.
Note: By using the code examples, you agree to the terms of the Code license and disclaimer information.
#include <eim.h> #include <stddef.h> #include <stdio.h> #include <stdlib.h> void printPolicyFilterType(int type); void printListResults(EimList * list); void printListData(char * fieldName, void * entry, int offset); int main (int argc, char *argv[]) { int rc; char eimerr[100]; EimRC * err; EimHandle * handle; char listData[1000]; EimList * list = (EimList * ) listData; /* Get eim handle from input arg. */ /* This handle is already connected to EIM. */ handle = (EimHandle *)argv[1]; /* Set up error structure. */ memset(eimerr,0x00,100); err = (EimRC *)eimerr; err->memoryProvidedByCaller = 100; /* Get source registry policies */ if (0 != (rc = eimListPolicyFilters(handle, EIM_CERTIFICATE_FILTER, "MySourceRegistry", 1000, list, err))) { printf("List EIM Policy Filters error = %d", rc); return -1; } /* Print the results */ printListResults(list); return 0; } void printListResults(EimList * list) { int i; EimPolicyFilter * entry; printf("___________\n"); printf(" bytesReturned = %d\n", list->bytesReturned); printf(" bytesAvailable = %d\n", list->bytesAvailable); printf(" entriesReturned = %d\n", list->entriesReturned); printf(" entriesAvailable = %d\n", list->entriesAvailable); printf("\n"); entry = (EimPolicyFilter *)((char *)list + list->firstEntry); for (i = 0; i < list->entriesReturned; i++) { printf("\n"); printf("===============\n"); printf("Entry %d.\n", i); /* Print out results */ printPolicyFilterType(entry->type); printListData("Source Registry", entry, offsetof(EimPolicyFilter, sourceRegistry)); printListData("Filter Value", entry, offsetof(EimPolicyFilter, filterValue)); /* advance to next entry */ entry = (EimPolicyFilter *)((char *)entry + entry->nextEntry); } printf("\n"); } void printPolicyFilterType(int type) { switch(type) { case EIM_CERTIFICATE_FILTER: printf(" Certificate Filter Policy.\n"); break; default: printf("ERROR - unknown policy filter type.\n"); break; } } void printListData(char * fieldName, void * entry, int offset) { EimListData * listData; char * data; int dataLength; printf(" %s = ",fieldName); /* Address the EimListData object */ listData = (EimListData *)((char *)entry + offset); /* Print out results */ data = (char *)entry + listData->disp; dataLength = listData->length; if (dataLength > 0) printf("%.*s\n",dataLength, data); else printf("Not found.\n"); }
[ Back to top | Security APIs | APIs by category ]