40static const unsigned long primes[] =
81#if APR_HAS_SHARED_MEMORY
82 if (
cache->rmm_addr) {
102#if APR_HAS_SHARED_MEMORY
103 if (
cache->rmm_addr) {
119#if APR_HAS_SHARED_MEMORY
120 if (
cache->rmm_addr) {
162 for (
i = (
i - 1);
i >= 0;
i--) {
191 for (
i = 0;
i < (*sgl)->len;
i++) {
206 unsigned long h=0,
g;
214 if ( (
g =
h & 0xf0000000 ) ) {
256 if (
p->add_time <
cache->marktime) {
272 cache->avg_purgetime =
290 st->search_cache_size,
291 st->search_cache_ttl,
298 st->compare_cache_size,
299 st->compare_cache_ttl,
306 st->compare_cache_size,
307 st->compare_cache_ttl,
349#if APR_HAS_SHARED_MEMORY
356#if APR_HAS_SHARED_MEMORY
357 if (!
st->cache_rmm) {
370#if APR_HAS_SHARED_MEMORY
371 cache->rmm_addr =
st->cache_rmm;
372 cache->shm_addr =
st->cache_shm;
375 cache->numentries = 0;
377 if (
cache->size < 64)
403 cache->avg_purgetime = 0.0;
404 cache->numpurges = 0;
405 cache->last_purge = 0;
484 "Purge of LDAP cache failed");
497 "LDAPSharedCacheSize is too small. Increase it or "
498 "reduce LDAPCacheEntries/LDAPOpCacheEntries!");
512 "Could not allocate memory for LDAP cache entry");
525 "LDAPSharedCacheSize is too small. Increase it or "
526 "reduce LDAPCacheEntries/LDAPOpCacheEntries!");
539 "Could not allocate memory for LDAP cache value");
561 return node->payload;
625 "<a href=\"%s?%s\">%s</a>",
637 "<td align='right' nowrap>%lu (%.0f%% full)</td>"
638 "<td align='right'>%.1f</td>"
639 "<td align='right'>%lu/%lu</td>"
640 "<td align='right'>%.0f%%</td>"
641 "<td align='right'>%lu/%lu</td>",
644 (
double)
cache->numentries / (
double)
cache->maxentries * 100.0,
648 (
cache->fetches > 0 ? (
double)(
cache->hits) / (
double)(
cache->fetches) * 100.0 : 100.0),
652 if (
cache->numpurges) {
658 "<td align='right'>%lu</td>\n"
659 "<td align='right' nowrap>%s</td>\n",
666 "%s<td colspan='2' align='center'>(none)</td>\n",
680 char *
argfmt =
"cache=%s&id=%d&off=%d";
681 char *
scanfmt =
"cache=%4s&id=%u&off=%u%1s";
690 ap_rputs(
"<tr valign='top'><td nowrap colspan=7>Cache has not been enabled/initialised.</td></tr>",
r);
696 unsigned int id,
off;
712 "<table border='0'>\n"
714 "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Cache Name:</b></font></td>"
715 "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%s (%s)</b></font></td>"
721 (
cachetype[0] ==
'c' ?
"Compares" :
"DNCompares")));
733 "<table border='0'>\n"
735 "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Size:</b></font></td>"
736 "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%ld</b></font></td>"
739 "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Max Entries:</b></font></td>"
740 "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%ld</b></font></td>"
743 "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b># Entries:</b></font></td>"
744 "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%ld</b></font></td>"
747 "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>TTL (sec):</b></font></td>"
748 "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%" APR_TIME_T_FMT "</b></font></td>"
751 "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Full Mark:</b></font></td>"
752 "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%ld</b></font></td>"
755 "<td bgcolor='#000000'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Full Mark Time:</b></font></td>"
756 "<td bgcolor='#ffffff'><font size='-1' face='Arial,Helvetica' color='#000000'><b>%s</b></font></td>"
767 "<table border='0'>\n"
768 "<tr bgcolor='#000000'>\n"
769 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>LDAP URL</b></font></td>"
770 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Size</b></font></td>"
771 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Max Entries</b></font></td>"
772 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b># Entries</b></font></td>"
773 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>TTL (sec)</b></font></td>"
774 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Full Mark</b></font></td>"
775 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Full Mark Time</b></font></td>"
790 "<table border='0'>\n"
791 "<tr bgcolor='#000000'>\n"
792 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>LDAP Filter</b></font></td>"
793 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>User Name</b></font></td>"
794 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Last Bind</b></font></td>"
798 for (
i=0;
i <
n->search_cache->size; ++
i) {
799 for (
p =
n->search_cache->nodes[
i];
p !=
NULL;
p =
p->next) {
801 (*
n->search_cache->display)(
r,
n->search_cache,
p->payload);
809 "<table border='0'>\n"
810 "<tr bgcolor='#000000'>\n"
811 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>DN</b></font></td>"
812 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Attribute</b></font></td>"
813 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Value</b></font></td>"
814 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Last Compare</b></font></td>"
815 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Result</b></font></td>"
816 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Sub-groups?</b></font></td>"
817 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>S-G Checked?</b></font></td>"
821 for (
i=0;
i <
n->compare_cache->size; ++
i) {
822 for (
p =
n->compare_cache->nodes[
i];
p !=
NULL;
p =
p->next) {
824 (*
n->compare_cache->display)(
r,
n->compare_cache,
p->payload);
832 "<table border='0'>\n"
833 "<tr bgcolor='#000000'>\n"
834 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Require DN</b></font></td>"
835 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Actual DN</b></font></td>"
839 for (
i=0;
i <
n->dn_compare_cache->size; ++
i) {
840 for (
p =
n->dn_compare_cache->nodes[
i];
p !=
NULL;
p =
p->next) {
842 (*
n->dn_compare_cache->display)(
r,
n->dn_compare_cache,
p->payload);
859 "<table border='0'>\n"
860 "<tr bgcolor='#000000'>\n"
861 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Cache Name</b></font></td>"
862 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Entries</b></font></td>"
863 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Avg. Chain Len.</b></font></td>"
864 "<td colspan='2'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Hits</b></font></td>"
865 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Ins/Rem</b></font></td>"
866 "<td colspan='2'><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Purges</b></font></td>"
867 "<td><font size='-1' face='Arial,Helvetica' color='#ffffff'><b>Avg Purge Time</b></font></td>"
char * strdup(const char *str)
#define APLOG_USE_MODULE(foo)
const unsigned char * buf
int ap_rprintf(request_rec *r, const char *fmt,...) __attribute__((format(printf
static APR_INLINE int ap_rputs(const char *str, request_rec *r)
#define ap_escape_uri(ppool, path)
#define ap_escape_html(p, s)
const char int apr_pool_t * pool
const char apr_uint32_t * id
const char const char *const * args
#define apr_time_sec(time)
A structure that represents the current request.
apr_status_t apr_ctime(char *date_str, apr_time_t t)
This switches LDAP support on or off.