File: agtmmap.h

package info (click to toggle)
389-ds-base 2.3.1%2Bdfsg1-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 37,536 kB
  • sloc: ansic: 306,972; python: 96,937; cpp: 10,257; perl: 2,854; makefile: 2,046; sh: 925; yacc: 806; xml: 379; lex: 366; javascript: 148; java: 50
file content (193 lines) | stat: -rw-r--r-- 5,539 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/** BEGIN COPYRIGHT BLOCK
 * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
 * Copyright (C) 2021 Red Hat, Inc.
 * All rights reserved.
 *
 * License: GPL (version 3 or any later version).
 * See LICENSE for details.
 * END COPYRIGHT BLOCK **/

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif


/********************************************************************
 *
 *      agtmmap.h: Memory Map interface for SNMP sub-agent for
 *                 Directory Server stats (for UNIX environment).
 *
 *      Revision History:
 *      07/22/97        Created                 Steve Ross
 *
 *
 *
 **********************************************************************/


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include "nspr.h"

#ifdef __cplusplus
extern "C" {
#endif


#define NUM_SNMP_INT_TBL_ROWS 5
#define SNMP_FIELD_LENGTH 100

#if !defined(_MAX_PATH)
#define _MAX_PATH 256
#endif
#define AGT_STATS_EXTENSION ".stats"
#define AGT_STATS_FILE "slapd" AGT_STATS_EXTENSION
#define AGT_MJR_VERSION 1
#define AGT_MNR_VERSION 0


typedef enum { AGT_MAP_UNINIT = 0,
               AGT_MAP_READ,
               AGT_MAP_RDWR } agt_mmap_type;

typedef struct
{
    agt_mmap_type maptype;
    int fd;
    caddr_t fp;
} agt_mmap_context_t;

struct hdr_stats_t
{
    /*
     *  Header
     */
    int restarted; /* 1/0 = Yes/No */
    time_t startTime;
    time_t updateTime;
    char dsVersion[SNMP_FIELD_LENGTH];
    char dsName[SNMP_FIELD_LENGTH];
    char dsDescription[SNMP_FIELD_LENGTH];
    char dsOrganization[SNMP_FIELD_LENGTH];
    char dsLocation[SNMP_FIELD_LENGTH];
    char dsContact[SNMP_FIELD_LENGTH];
};

struct ops_stats_t
{
    /*
     *      Ops Table attributes
     */
    uint64_t dsAnonymousBinds;
    uint64_t dsUnAuthBinds;
    uint64_t dsSimpleAuthBinds;
    uint64_t dsStrongAuthBinds;
    uint64_t dsBindSecurityErrors;
    uint64_t dsInOps;
    uint64_t dsReadOps;
    uint64_t dsCompareOps;
    uint64_t dsAddEntryOps;
    uint64_t dsRemoveEntryOps;
    uint64_t dsModifyEntryOps;
    uint64_t dsModifyRDNOps;
    uint64_t dsListOps;
    uint64_t dsSearchOps;
    uint64_t dsOneLevelSearchOps;
    uint64_t dsWholeSubtreeSearchOps;
    uint64_t dsReferrals;
    uint64_t dsChainings;
    uint64_t dsSecurityErrors;
    uint64_t dsErrors;
    uint64_t dsConnections;             /* Number of currently connected clients */
    uint64_t dsConnectionSeq;           /* Monotonically increasing number bumped on each new conn est */
    uint64_t dsMaxThreadsHits;          /* Number of times a connection hit max threads */
    uint64_t dsConnectionsInMaxThreads; /* current number of connections that are in max threads */
    uint64_t dsBytesRecv;               /* Count of bytes read from clients */
    uint64_t dsBytesSent;               /* Count of bytes sent to clients */
    uint64_t dsEntriesReturned;         /* Number of entries returned by the server */
    uint64_t dsReferralsReturned;       /* Number of entries returned by the server */
};

struct entries_stats_t
{
    /*
     *  Entries Table Attributes
     */
    uint64_t dsSupplierEntries;
    uint64_t dsCopyEntries;
    uint64_t dsCacheEntries;
    uint64_t dsCacheHits;
    uint64_t dsConsumerHits;
};

struct int_stats_t
{
    /*
     *   Interaction Table Attributes
     */
    int32_t dsIntIndex;
    char dsName[SNMP_FIELD_LENGTH];
    time_t dsTimeOfCreation;
    time_t dsTimeOfLastAttempt;
    time_t dsTimeOfLastSuccess;
    uint64_t dsFailuresSinceLastSuccess;
    uint64_t dsFailures;
    uint64_t dsSuccesses;
    char dsURL[SNMP_FIELD_LENGTH];
};

struct agt_stats_t
{
    struct hdr_stats_t hdr_stats;
    struct ops_stats_t ops_stats;
    struct entries_stats_t entries_stats;
    struct int_stats_t int_stats[NUM_SNMP_INT_TBL_ROWS];
};

extern agt_mmap_context_t mmap_tbl[];

/****************************************************************************
 *
 *  agt_mopen_stats () - open and Memory Map the stats file.  agt_mclose_stats()
 *              must be called prior to invoking agt_mopen_stats() again.
 * Inputs:
 *     statsfile ->  Name of stats file including full path or NULL.
 *                      If NULL, default ($NETSITE_ROOT/daemonstats.ldap) is assumed.
 *    mode      ->  Must be one of O_RDONLY / O_RDWR.
 *              O_RDWR creates the file if it does not exist.
 * Outputs:
 *    hdl      ->  Opaque handle to the mapped file. Should be
 *              passed to a subsequent agt_mupdate_stats() or
 *              agt_mread_stats() or agt_mclose_stats() call.
 * Return Values:
 *              Returns 0 on successfully doing the memmap or error
 *               codes as defined in <errno.h>, otherwise.
 *
 ****************************************************************************/

int agt_mopen_stats(char *statsfile, int mode, int *hdl);

/****************************************************************************
 *
 *  agt_mclose_stats () - Close the Memory Map'ed stats file.
 *
 *
 * Inputs:
 *    hdl      ->  Opaque handle to the mapped file. Should have been
 *              returned by an earlier call to agt_mopen_stats().
 *
 * Outputs:          <NONE>
 *
 * Return Values:     Returns 0 on normal completion or error codes
 *               as defined in <errno.h>, otherwise.
 *
 ****************************************************************************/
int agt_mclose_stats(int hdl);

int agt_mread_stats(int hdl, struct hdr_stats_t *, struct ops_stats_t *, struct entries_stats_t *);

#ifdef __cplusplus
}
#endif