mep.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2010 Red Hat, Inc.
  3. * All rights reserved.
  4. *
  5. * License: GPL (version 3 or any later version).
  6. * See LICENSE for details.
  7. * END COPYRIGHT BLOCK **/
  8. #ifdef HAVE_CONFIG_H
  9. # include <config.h>
  10. #endif
  11. /*
  12. * Managed entries plug-in header file
  13. */
  14. #include <stdio.h>
  15. #include <ctype.h>
  16. #include <string.h>
  17. #include <errno.h>
  18. #include "portable.h"
  19. #include "nspr.h"
  20. #include "slapi-plugin.h"
  21. #include "prclist.h"
  22. #include "ldif.h"
  23. /*
  24. * Plug-in defines
  25. */
  26. #define MEP_PLUGIN_SUBSYSTEM "managed-entries-plugin"
  27. #define MEP_FEATURE_DESC "Managed Entries"
  28. #define MEP_PLUGIN_DESC "Managed Entries plugin"
  29. #define MEP_INT_POSTOP_DESC "Managed Entries internal postop plugin"
  30. #define MEP_POSTOP_DESC "Managed Entries postop plugin"
  31. /*
  32. * Config type defines
  33. */
  34. #define MEP_SCOPE_TYPE "originScope"
  35. #define MEP_FILTER_TYPE "originFilter"
  36. #define MEP_MANAGED_BASE_TYPE "managedBase"
  37. #define MEP_MANAGED_TEMPLATE_TYPE "managedTemplate"
  38. /*
  39. * Link type defines
  40. */
  41. #define MEP_MANAGED_ENTRY_TYPE "mepManagedEntry"
  42. #define MEP_MANAGED_BY_TYPE "mepManagedBy"
  43. /*
  44. * Template type defines
  45. */
  46. #define MEP_STATIC_ATTR_TYPE "mepStaticAttr"
  47. #define MEP_MAPPED_ATTR_TYPE "mepMappedAttr"
  48. #define MEP_RDN_ATTR_TYPE "mepRDNAttr"
  49. /*
  50. * Objectclass defines
  51. */
  52. #define MEP_MANAGED_OC "mepManagedEntry"
  53. #define MEP_TEMPLATE_OC "mepTemplateEntry"
  54. #define MEP_ORIGIN_OC "mepOriginEntry"
  55. /*
  56. * Helper defines
  57. */
  58. #define IS_ATTRDESC_CHAR(c) ( isalnum(c) || (c == '.') || (c == ';') || (c == '-') )
  59. /*
  60. * Linked list of config entries.
  61. */
  62. struct configEntry {
  63. PRCList list;
  64. Slapi_DN *sdn;
  65. char *origin_scope;
  66. Slapi_Filter *origin_filter;
  67. char *managed_base;
  68. Slapi_DN *template_sdn;
  69. Slapi_Entry *template_entry;
  70. char **origin_attrs;
  71. };
  72. /*
  73. * Config fetch function
  74. */
  75. PRCList *mep_get_config();
  76. /*
  77. * Config cache locking functions
  78. */
  79. void mep_config_read_lock();
  80. void mep_config_write_lock();
  81. void mep_config_unlock();
  82. /*
  83. * Plugin identity functions
  84. */
  85. void mep_set_plugin_id(void *pluginID);
  86. void *mep_get_plugin_id();
  87. void mep_set_plugin_dn(char *pluginDN);
  88. char *mep_get_plugin_dn();