mep.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. #include "slapi-private.h"
  24. /*
  25. * Plug-in defines
  26. */
  27. #define MEP_PLUGIN_SUBSYSTEM "managed-entries-plugin"
  28. #define MEP_FEATURE_DESC "Managed Entries"
  29. #define MEP_PLUGIN_DESC "Managed Entries plugin"
  30. #define MEP_INT_POSTOP_DESC "Managed Entries internal postop plugin"
  31. #define MEP_POSTOP_DESC "Managed Entries postop plugin"
  32. /*
  33. * Config type defines
  34. */
  35. #define MEP_SCOPE_TYPE "originScope"
  36. #define MEP_FILTER_TYPE "originFilter"
  37. #define MEP_MANAGED_BASE_TYPE "managedBase"
  38. #define MEP_MANAGED_TEMPLATE_TYPE "managedTemplate"
  39. /*
  40. * Link type defines
  41. */
  42. #define MEP_MANAGED_ENTRY_TYPE "mepManagedEntry"
  43. #define MEP_MANAGED_BY_TYPE "mepManagedBy"
  44. /*
  45. * Template type defines
  46. */
  47. #define MEP_STATIC_ATTR_TYPE "mepStaticAttr"
  48. #define MEP_MAPPED_ATTR_TYPE "mepMappedAttr"
  49. #define MEP_RDN_ATTR_TYPE "mepRDNAttr"
  50. /*
  51. * Objectclass defines
  52. */
  53. #define MEP_MANAGED_OC "mepManagedEntry"
  54. #define MEP_TEMPLATE_OC "mepTemplateEntry"
  55. #define MEP_ORIGIN_OC "mepOriginEntry"
  56. /*
  57. * Helper defines
  58. */
  59. #define IS_ATTRDESC_CHAR(c) (isalnum(c) || (c == '.') || (c == ';') || (c == '-'))
  60. /*
  61. * Linked list of config entries.
  62. */
  63. struct configEntry
  64. {
  65. PRCList list;
  66. Slapi_DN *sdn;
  67. char *origin_scope;
  68. Slapi_Filter *origin_filter;
  69. char *managed_base;
  70. Slapi_DN *template_sdn;
  71. Slapi_Entry *template_entry;
  72. char **origin_attrs;
  73. };
  74. /*
  75. * Config fetch function
  76. */
  77. PRCList *mep_get_config(void);
  78. /*
  79. * Config cache locking functions
  80. */
  81. void mep_config_read_lock(void);
  82. void mep_config_write_lock(void);
  83. void mep_config_unlock(void);
  84. /*
  85. * Plugin identity functions
  86. */
  87. void mep_set_plugin_id(void *pluginID);
  88. void *mep_get_plugin_id(void);
  89. void mep_set_plugin_dn(char *pluginDN);
  90. char *mep_get_plugin_dn(void);