retrocl_rootdse.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  3. * Copyright (C) 2005 Red Hat, Inc.
  4. * All rights reserved.
  5. * END COPYRIGHT BLOCK **/
  6. #include "retrocl.h"
  7. /*
  8. * Function: retrocl_rootdse_search
  9. *
  10. * Returns: SLAPI_DSE_CALLBACK_OK always
  11. *
  12. * Arguments: See plugin API
  13. *
  14. * Description: callback function plugged into base object search of root DSE.
  15. * Adds changelog, firstchangenumber and lastchangenumber attributes.
  16. *
  17. */
  18. int
  19. retrocl_rootdse_search(Slapi_PBlock *pb, Slapi_Entry* e, Slapi_Entry* entryAfter, int *returncode, char *returntext, void *arg)
  20. {
  21. struct berval val;
  22. struct berval *vals[2];
  23. vals[0] = &val;
  24. vals[1] = NULL;
  25. /* Changelog information */
  26. if ( retrocl_be_changelog != NULL )
  27. {
  28. char buf[BUFSIZ];
  29. changeNumber cnum;
  30. /* Changelog suffix */
  31. val.bv_val = RETROCL_CHANGELOG_DN;
  32. if ( val.bv_val != NULL )
  33. {
  34. val.bv_len = strlen( val.bv_val );
  35. slapi_entry_attr_replace( e, "changelog", vals );
  36. }
  37. /* First change number contained in log */
  38. cnum = retrocl_get_first_changenumber();
  39. sprintf( buf, "%lu", cnum );
  40. val.bv_val = buf;
  41. val.bv_len = strlen( val.bv_val );
  42. slapi_entry_attr_replace( e, "firstchangenumber", vals );
  43. /* Last change number contained in log */
  44. cnum = retrocl_get_last_changenumber();
  45. sprintf( buf, "%lu", cnum );
  46. val.bv_val = buf;
  47. val.bv_len = strlen( val.bv_val );
  48. slapi_entry_attr_replace( e, "lastchangenumber", vals );
  49. }
  50. return SLAPI_DSE_CALLBACK_OK;
  51. }