ldap-agent.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. /* --- BEGIN COPYRIGHT BLOCK ---
  2. * Copyright (C) 2005 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. #ifndef DSOPSTABLE_H
  12. #define DSOPSTABLE_H
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /* net-snmp-config.h defines
  17. all of these unconditionally - so we undefine
  18. them here to make the compiler warnings shut up
  19. hopefully we don't need the real versions
  20. of these, but then with no warnings the compiler
  21. will just silently redefine them to the wrong
  22. ones anyway
  23. Then undefine them after the include so that
  24. our own local defines will take effect
  25. */
  26. #undef PACKAGE_BUGREPORT
  27. #undef PACKAGE_NAME
  28. #undef PACKAGE_STRING
  29. #undef PACKAGE_TARNAME
  30. #undef PACKAGE_VERSION
  31. #include <net-snmp/net-snmp-config.h>
  32. #undef PACKAGE_BUGREPORT
  33. #undef PACKAGE_NAME
  34. #undef PACKAGE_STRING
  35. #undef PACKAGE_TARNAME
  36. #undef PACKAGE_VERSION
  37. #include <net-snmp/net-snmp-includes.h>
  38. #include <net-snmp/agent/net-snmp-agent-includes.h>
  39. #include <net-snmp/library/snmp_assert.h>
  40. #include <net-snmp/library/container.h>
  41. #include <net-snmp/agent/table_array.h>
  42. #include "../slapd/agtmmap.h"
  43. #include <semaphore.h>
  44. #include <fcntl.h>
  45. #ifdef HPUX
  46. /* HP-UX doesn't define SEM_FAILED like other platforms, so
  47. * we define it ourselves. We make this define HP-UX specific
  48. * since sem_open() doesn't seem to return the same value on
  49. * all platforms in a failure case (it's 1 on some platforms,
  50. * and 0 on others). */
  51. #define SEM_FAILED ((sem_t *)(-1))
  52. #endif
  53. #define MAXLINE 4096
  54. #define CACHE_REFRESH_INTERVAL 15
  55. #define UPDATE_THRESHOLD 20
  56. #define SNMP_NUM_SEM_WAITS 10
  57. #define LDAP_AGENT_PIDFILE "ldap-agent.pid"
  58. #define LDAP_AGENT_LOGFILE "ldap-agent.log"
  59. /*************************************************************
  60. * Trap value defines
  61. */
  62. #define SERVER_UP 6002
  63. #define SERVER_DOWN 6001
  64. #define STATE_UNKNOWN 0
  65. /*************************************************************
  66. * Structures
  67. */
  68. typedef struct server_instance_s {
  69. PRUint32 port;
  70. int server_state;
  71. char *stats_file;
  72. char *stats_sem_name;
  73. char *dse_ldif;
  74. struct server_instance_s *next;
  75. } server_instance;
  76. typedef struct stats_table_context_s {
  77. netsnmp_index index;
  78. struct hdr_stats_t hdr_tbl;
  79. struct ops_stats_t ops_tbl;
  80. struct entries_stats_t entries_tbl;
  81. server_instance *entity_tbl;
  82. } stats_table_context;
  83. /*************************************************************
  84. * Function Declarations
  85. */
  86. void exit_usage();
  87. void load_config(char *);
  88. void init_ldap_agent(void);
  89. void initialize_stats_table(void);
  90. int load_stats_table(netsnmp_cache *, void *);
  91. void free_stats_table(netsnmp_cache *, void *);
  92. stats_table_context *stats_table_create_row(unsigned long);
  93. stats_table_context *stats_table_find_row(unsigned long);
  94. int dsOpsTable_get_value(netsnmp_request_info *,
  95. netsnmp_index *,
  96. netsnmp_table_request_info *);
  97. int dsEntriesTable_get_value(netsnmp_request_info *,
  98. netsnmp_index *,
  99. netsnmp_table_request_info *);
  100. int dsEntityTable_get_value(netsnmp_request_info *,
  101. netsnmp_index *,
  102. netsnmp_table_request_info *);
  103. int send_DirectoryServerDown_trap(server_instance *);
  104. int send_DirectoryServerStart_trap(server_instance *);
  105. /*************************************************************
  106. * Oid Declarations
  107. */
  108. extern oid dsOpsTable_oid[];
  109. extern size_t dsOpsTable_oid_len;
  110. extern oid dsEntriesTable_oid[];
  111. extern size_t dsEntriesTable_oid_len;
  112. extern oid dsEntityTable_oid[];
  113. extern size_t dsEntityTable_oid_len;
  114. extern oid snmptrap_oid[];
  115. extern size_t snmptrap_oid_len;
  116. #define enterprise_OID 1,3,6,1,4,1,2312
  117. #define dsOpsTable_TABLE_OID enterprise_OID,6,1
  118. #define dsEntriesTable_TABLE_OID enterprise_OID,6,2
  119. #define dsEntityTable_TABLE_OID enterprise_OID,6,5
  120. #define snmptrap_OID 1,3,6,1,6,3,1,1,4,1,0
  121. #define DirectoryServerDown_OID enterprise_OID,0,6001
  122. #define DirectoryServerStart_OID enterprise_OID,0,6002
  123. /*************************************************************
  124. * dsOpsTable column defines
  125. */
  126. #define COLUMN_DSANONYMOUSBINDS 1
  127. #define COLUMN_DSUNAUTHBINDS 2
  128. #define COLUMN_DSSIMPLEAUTHBINDS 3
  129. #define COLUMN_DSSTRONGAUTHBINDS 4
  130. #define COLUMN_DSBINDSECURITYERRORS 5
  131. #define COLUMN_DSINOPS 6
  132. #define COLUMN_DSREADOPS 7
  133. #define COLUMN_DSCOMPAREOPS 8
  134. #define COLUMN_DSADDENTRYOPS 9
  135. #define COLUMN_DSREMOVEENTRYOPS 10
  136. #define COLUMN_DSMODIFYENTRYOPS 11
  137. #define COLUMN_DSMODIFYRDNOPS 12
  138. #define COLUMN_DSLISTOPS 13
  139. #define COLUMN_DSSEARCHOPS 14
  140. #define COLUMN_DSONELEVELSEARCHOPS 15
  141. #define COLUMN_DSWHOLESUBTREESEARCHOPS 16
  142. #define COLUMN_DSREFERRALS 17
  143. #define COLUMN_DSCHAININGS 18
  144. #define COLUMN_DSSECURITYERRORS 19
  145. #define COLUMN_DSERRORS 20
  146. #define COLUMN_DSCONNECTIONS 21
  147. #define COLUMN_DSCONNECTIONSINMAXTHREADS 22
  148. #define COLUMN_DSMAXTHREADSHIT 23
  149. #define dsOpsTable_COL_MIN 1
  150. #define dsOpsTable_COL_MAX 23
  151. /*************************************************************
  152. * dsEntriesTable column defines
  153. */
  154. #define COLUMN_DSMASTERENTRIES 1
  155. #define COLUMN_DSCOPYENTRIES 2
  156. #define COLUMN_DSCACHEENTRIES 3
  157. #define COLUMN_DSCACHEHITS 4
  158. #define COLUMN_DSSLAVEHITS 5
  159. #define dsEntriesTable_COL_MIN 1
  160. #define dsEntriesTable_COL_MAX 5
  161. /*************************************************************
  162. * dsEntityTable column defines
  163. */
  164. #define COLUMN_DSENTITYDESCR 1
  165. #define COLUMN_DSENTITYVERS 2
  166. #define COLUMN_DSENTITYORG 3
  167. #define COLUMN_DSENTITYLOCATION 4
  168. #define COLUMN_DSENTITYCONTACT 5
  169. #define COLUMN_DSENTITYNAME 6
  170. #define dsEntityTable_COL_MIN 1
  171. #define dsEntityTable_COL_MAX 6
  172. #ifdef __cplusplus
  173. }
  174. #endif
  175. #endif /** DSOPSTABLE_H */