Your plug-in can retrieve parameters specified in the configuration settings property argument, which is multivalued. Directory Server makes the argument available to the plug-in through the parameter block passed to the plug-in initialization function.
If you include parameters in the configuration settings, the following apply:
SLAPI_PLUGIN_ARGC specifies the number of parameters
SLAPI_PLUGIN_ARGV contains the parameters
The following example uses slapi_pblock_get() to retrieve the arguments from install-path/examples/testextendedop.c.
#include "slapi-plugin.h" Slapi_PluginDesc expdesc = { "test-extendedop", /* plug-in identifier */ "Sun Microsystems, Inc.", /* vendor name */ "6.0", /* plug-in revision number */ "Sample extended operation plug-in"/* plug-in description */ }; /* Register the plug-in with the server. */ #ifdef _WIN32 __declspec(dllexport) #endif int testexop_init(Slapi_PBlock * pb) { char ** argv; /* Args from configuration */ int argc; /* entry for plug-in. */ char ** oid_list; /* OIDs supported */ int rc = 0; /* 0 means success */ int i; /* Get the arguments from the configuration entry. */ rc |= slapi_pblock_get(pb, SLAPI_PLUGIN_ARGV, &argv); rc |= slapi_pblock_get(pb, SLAPI_PLUGIN_ARGC, &argc); if (rc != 0) { slapi_log_info_ex( SLAPI_LOG_INFO_AREA_PLUGIN, SLAPI_LOG_INFO_LEVEL_DEFAULT, SLAPI_LOG_NO_MSGID, SLAPI_LOG_NO_CONNID, SLAPI_LOG_NO_OPID, "testexop_init in test-extendedop plug-in", "Could not get plug-in arguments.\n" ); return (rc); } /* Extended operation plug-ins may handle a range of OIDs. */ oid_list = (char **)slapi_ch_malloc((argc + 1) * sizeof(char *)); for (i = 0; i < argc; ++i) { oid_list[i] = slapi_ch_strdup(argv[i]); slapi_log_info_ex( SLAPI_LOG_INFO_AREA_PLUGIN, SLAPI_LOG_INFO_LEVEL_DEFAULT, SLAPI_LOG_NO_MSGID, SLAPI_LOG_NO_CONNID, SLAPI_LOG_NO_OPID, "testexop_init in test-extendedop plug-in", "Registering plug-in for extended operation %s.\n", oid_list[i] ); } oid_list[argc] = NULL; rc |= slapi_pblock_set( /* Plug-in API version */ pb, SLAPI_PLUGIN_VERSION, SLAPI_PLUGIN_CURRENT_VERSION ); rc |= slapi_pblock_set( /* Plug-in description */ pb, SLAPI_PLUGIN_DESCRIPTION, (void *) &expdesc ); rc |= slapi_pblock_set( /* Extended op. handler */ pb, SLAPI_PLUGIN_EXT_OP_FN, (void *) test_extendedop ); rc |= slapi_pblock_set( /* List of OIDs handled */ pb, SLAPI_PLUGIN_EXT_OP_OIDLIST, oid_list ); return (rc); }
You can specify multiple arguments by using multiple properties in the command line. The dsconf command causes the server to provide the arguments to the plug-in in the order you specify on the command line. When you change the list of arguments by using the dsconf command, the new arguments replace the existing arguments. The arguments are not appended to the list.