Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
O
OpenLDAP
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jaak Ristioja
OpenLDAP
Commits
7dc5a0bb
Commit
7dc5a0bb
authored
20 years ago
by
Pierangelo Masarati
Browse files
Options
Downloads
Patches
Plain Diff
fix negative counters; prepare for imrpved count of sent data
parent
48b7292f
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
servers/slapd/back-monitor/sent.c
+120
-244
120 additions, 244 deletions
servers/slapd/back-monitor/sent.c
servers/slapd/dn.c
+27
-0
27 additions, 0 deletions
servers/slapd/dn.c
servers/slapd/proto-slap.h
+1
-0
1 addition, 0 deletions
servers/slapd/proto-slap.h
with
148 additions
and
244 deletions
servers/slapd/back-monitor/sent.c
+
120
−
244
View file @
7dc5a0bb
...
...
@@ -27,6 +27,26 @@
#include
"slap.h"
#include
"back-monitor.h"
enum
{
MONITOR_SENT_ENTRIES
=
0
,
MONITOR_SENT_REFERRALS
,
MONITOR_SENT_PDU
,
MONITOR_SENT_BYTES
,
MONITOR_SENT_LAST
};
struct
monitor_sent_t
{
struct
berval
rdn
;
struct
berval
nrdn
;
}
monitor_sent
[]
=
{
{
BER_BVC
(
"cn=Entries"
),
BER_BVC
(
"cn=entries"
)
},
{
BER_BVC
(
"cn=Referrals"
),
BER_BVC
(
"cn=referrals"
)
},
{
BER_BVC
(
"cn=PDU"
),
BER_BVC
(
"cn=pdu"
)
},
{
BER_BVC
(
"cn=Bytes"
),
BER_BVC
(
"cn=bytes"
)
},
{
BER_BVNULL
,
BER_BVNULL
}
};
int
monitor_subsys_sent_init
(
BackendDB
*
be
...
...
@@ -34,10 +54,9 @@ monitor_subsys_sent_init(
{
struct
monitorinfo
*
mi
;
Entry
*
e
,
*
e_tmp
,
*
e_sent
;
Entry
*
e_tmp
,
*
e_sent
;
struct
monitorentrypriv
*
mp
;
char
buf
[
BACKMONITOR_BUFSIZE
];
struct
berval
bv
;
int
i
;
assert
(
be
!=
NULL
);
...
...
@@ -47,7 +66,7 @@ monitor_subsys_sent_init(
&
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
,
&
e_sent
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to get entry
'%s'
\n
%s%s"
,
"unable to get entry
\"
%s
\"
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
...
...
@@ -55,217 +74,63 @@ monitor_subsys_sent_init(
e_tmp
=
NULL
;
/*
* Entries
*/
snprintf
(
buf
,
sizeof
(
buf
),
"dn: cn=Entries,%s
\n
"
"objectClass: %s
\n
"
"structuralObjectClass: %s
\n
"
"cn: Entries
\n
"
"creatorsName: %s
\n
"
"modifiersName: %s
\n
"
"createTimestamp: %s
\n
"
"modifyTimestamp: %s
\n
"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_dn
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_startTime
.
bv_val
,
mi
->
mi_startTime
.
bv_val
);
e
=
str2entry
(
buf
);
if
(
e
==
NULL
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to create entry 'cn=Entries,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
}
bv
.
bv_val
=
"0"
;
bv
.
bv_len
=
1
;
attr_merge_one
(
e
,
mi
->
mi_ad_monitorCounter
,
&
bv
,
NULL
);
mp
=
(
struct
monitorentrypriv
*
)
ch_calloc
(
sizeof
(
struct
monitorentrypriv
),
1
);
e
->
e_private
=
(
void
*
)
mp
;
mp
->
mp_next
=
e_tmp
;
mp
->
mp_children
=
NULL
;
mp
->
mp_info
=
&
monitor_subsys
[
SLAPD_MONITOR_SENT
];
mp
->
mp_flags
=
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_flags
\
|
MONITOR_F_SUB
|
MONITOR_F_PERSISTENT
;
if
(
monitor_cache_add
(
mi
,
e
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to add entry 'cn=Entries,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
}
e_tmp
=
e
;
/*
* Referrals
*/
snprintf
(
buf
,
sizeof
(
buf
),
"dn: cn=Referrals,%s
\n
"
"objectClass: %s
\n
"
"structuralObjectClass: %s
\n
"
"cn: Referrals
\n
"
"creatorsName: %s
\n
"
"modifiersName: %s
\n
"
"createTimestamp: %s
\n
"
"modifyTimestamp: %s
\n
"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_dn
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_startTime
.
bv_val
,
mi
->
mi_startTime
.
bv_val
);
e
=
str2entry
(
buf
);
if
(
e
==
NULL
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to create entry 'cn=Referrals,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
}
bv
.
bv_val
=
"0"
;
bv
.
bv_len
=
1
;
attr_merge_one
(
e
,
mi
->
mi_ad_monitorCounter
,
&
bv
,
NULL
);
mp
=
(
struct
monitorentrypriv
*
)
ch_calloc
(
sizeof
(
struct
monitorentrypriv
),
1
);
e
->
e_private
=
(
void
*
)
mp
;
mp
->
mp_next
=
e_tmp
;
mp
->
mp_children
=
NULL
;
mp
->
mp_info
=
&
monitor_subsys
[
SLAPD_MONITOR_SENT
];
mp
->
mp_flags
=
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_flags
\
|
MONITOR_F_SUB
|
MONITOR_F_PERSISTENT
;
if
(
monitor_cache_add
(
mi
,
e
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to add entry 'cn=Referrals,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
}
e_tmp
=
e
;
/*
* PDU
*/
snprintf
(
buf
,
sizeof
(
buf
),
"dn: cn=PDU,%s
\n
"
"objectClass: %s
\n
"
"structuralObjectClass: %s
\n
"
"cn: PDU
\n
"
"creatorsName: %s
\n
"
"modifiersName: %s
\n
"
"createTimestamp: %s
\n
"
"modifyTimestamp: %s
\n
"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_dn
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_startTime
.
bv_val
,
mi
->
mi_startTime
.
bv_val
);
e
=
str2entry
(
buf
);
if
(
e
==
NULL
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to create entry 'cn=PDU,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
}
bv
.
bv_val
=
"0"
;
bv
.
bv_len
=
1
;
attr_merge_one
(
e
,
mi
->
mi_ad_monitorCounter
,
&
bv
,
NULL
);
for
(
i
=
MONITOR_SENT_LAST
;
--
i
>=
0
;
)
{
char
buf
[
BACKMONITOR_BUFSIZE
];
struct
berval
bv
;
Entry
*
e
;
snprintf
(
buf
,
sizeof
(
buf
),
"dn: %s,%s
\n
"
"objectClass: %s
\n
"
"structuralObjectClass: %s
\n
"
"cn: %s
\n
"
"creatorsName: %s
\n
"
"modifiersName: %s
\n
"
"createTimestamp: %s
\n
"
"modifyTimestamp: %s
\n
"
,
monitor_sent
[
i
].
rdn
.
bv_val
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_dn
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
&
monitor_sent
[
i
].
rdn
.
bv_val
[
STRLENOF
(
"cn="
)],
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_startTime
.
bv_val
,
mi
->
mi_startTime
.
bv_val
);
e
=
str2entry
(
buf
);
if
(
e
==
NULL
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to create entry
\"
%s,%s
\"\n
"
,
monitor_sent
[
i
].
rdn
.
bv_val
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
0
);
return
(
-
1
);
}
mp
=
(
struct
monitorentrypriv
*
)
ch_calloc
(
sizeof
(
struct
monitorentrypriv
),
1
);
e
->
e_private
=
(
void
*
)
mp
;
mp
->
mp_next
=
e_tmp
;
mp
->
mp_children
=
NULL
;
mp
->
mp_info
=
&
monitor_subsys
[
SLAPD_MONITOR_SENT
];
mp
->
mp_flags
=
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_flags
\
|
MONITOR_F_SUB
|
MONITOR_F_PERSISTENT
;
if
(
monitor_cache_add
(
mi
,
e
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to add entry 'cn=PDU,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
}
bv
.
bv_val
=
"0"
;
bv
.
bv_len
=
1
;
attr_merge_one
(
e
,
mi
->
mi_ad_monitorCounter
,
&
bv
,
NULL
);
e_tmp
=
e
;
/*
* Bytes
*/
snprintf
(
buf
,
sizeof
(
buf
),
"dn: cn=Bytes,%s
\n
"
"objectClass: %s
\n
"
"structuralObjectClass: %s
\n
"
"cn: Bytes
\n
"
"creatorsName: %s
\n
"
"modifiersName: %s
\n
"
"createTimestamp: %s
\n
"
"modifyTimestamp: %s
\n
"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_dn
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_oc_monitorCounterObject
->
soc_cname
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_creatorsName
.
bv_val
,
mi
->
mi_startTime
.
bv_val
,
mi
->
mi_startTime
.
bv_val
);
e
=
str2entry
(
buf
);
if
(
e
==
NULL
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to create entry 'cn=Bytes,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
}
bv
.
bv_val
=
"0"
;
bv
.
bv_len
=
1
;
attr_merge_one
(
e
,
mi
->
mi_ad_monitorCounter
,
&
bv
,
NULL
);
mp
=
(
struct
monitorentrypriv
*
)
ch_calloc
(
sizeof
(
struct
monitorentrypriv
),
1
);
e
->
e_private
=
(
void
*
)
mp
;
mp
->
mp_next
=
e_tmp
;
mp
->
mp_children
=
NULL
;
mp
->
mp_info
=
&
monitor_subsys
[
SLAPD_MONITOR_SENT
];
mp
->
mp_flags
=
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_flags
\
|
MONITOR_F_SUB
|
MONITOR_F_PERSISTENT
;
if
(
monitor_cache_add
(
mi
,
e
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to add entry
\"
%s,%s
\"\n
%s%s"
,
monitor_sent
[
i
].
rdn
.
bv_val
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
0
);
return
(
-
1
);
}
mp
=
(
struct
monitorentrypriv
*
)
ch_calloc
(
sizeof
(
struct
monitorentrypriv
),
1
);
e
->
e_private
=
(
void
*
)
mp
;
mp
->
mp_next
=
e_tmp
;
mp
->
mp_children
=
NULL
;
mp
->
mp_info
=
&
monitor_subsys
[
SLAPD_MONITOR_SENT
];
mp
->
mp_flags
=
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_flags
\
|
MONITOR_F_SUB
|
MONITOR_F_PERSISTENT
;
if
(
monitor_cache_add
(
mi
,
e
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"monitor_subsys_sent_init: "
"unable to add entry 'cn=Bytes,%s'
\n
%s%s"
,
monitor_subsys
[
SLAPD_MONITOR_SENT
].
mss_ndn
.
bv_val
,
""
,
""
);
return
(
-
1
);
e_tmp
=
e
;
}
e_tmp
=
e
;
mp
=
(
struct
monitorentrypriv
*
)
e_sent
->
e_private
;
mp
->
mp_children
=
e_tmp
;
...
...
@@ -281,51 +146,62 @@ monitor_subsys_sent_update(
Entry
*
e
)
{
struct
monitorinfo
*
mi
=
(
struct
monitorinfo
*
)
op
->
o_bd
->
be_private
;
long
n
=
-
1
;
struct
monitorinfo
*
mi
=
(
struct
monitorinfo
*
)
op
->
o_bd
->
be_private
;
struct
berval
rdn
;
unsigned
long
n
;
Attribute
*
a
;
char
buf
[]
=
"+9223372036854775807L"
;
int
i
;
assert
(
mi
);
assert
(
e
);
if
(
strncasecmp
(
e
->
e_ndn
,
"cn=entries"
,
sizeof
(
"cn=entries"
)
-
1
)
==
0
)
{
ldap_pvt_thread_mutex_lock
(
&
num_sent_mutex
);
dnRdn
(
&
e
->
e_nname
,
&
rdn
);
for
(
i
=
0
;
i
<
MONITOR_SENT_LAST
;
i
++
)
{
if
(
dn_match
(
&
rdn
,
&
monitor_sent
[
i
].
nrdn
)
)
{
break
;
}
}
if
(
i
==
MONITOR_SENT_LAST
)
{
return
0
;
}
ldap_pvt_thread_mutex_lock
(
&
num_sent_mutex
);
switch
(
i
)
{
case
MONITOR_SENT_ENTRIES
:
n
=
num_entries_sent
;
ldap_pvt_thread_mutex_unlock
(
&
num_sent_mutex
)
;
break
;
}
else
if
(
strncasecmp
(
e
->
e_ndn
,
"cn=referrals"
,
sizeof
(
"cn=referrals"
)
-
1
)
==
0
)
{
ldap_pvt_thread_mutex_lock
(
&
num_sent_mutex
);
case
MONITOR_SENT_REFERRALS
:
n
=
num_refs_sent
;
ldap_pvt_thread_mutex_unlock
(
&
num_sent_mutex
)
;
break
;
}
else
if
(
strncasecmp
(
e
->
e_ndn
,
"cn=pdu"
,
sizeof
(
"cn=pdu"
)
-
1
)
==
0
)
{
ldap_pvt_thread_mutex_lock
(
&
num_sent_mutex
);
case
MONITOR_SENT_PDU
:
n
=
num_pdu_sent
;
ldap_pvt_thread_mutex_unlock
(
&
num_sent_mutex
)
;
break
;
}
else
if
(
strncasecmp
(
e
->
e_ndn
,
"cn=bytes"
,
sizeof
(
"cn=bytes"
)
-
1
)
==
0
)
{
ldap_pvt_thread_mutex_lock
(
&
num_sent_mutex
);
case
MONITOR_SENT_BYTES
:
n
=
num_bytes_sent
;
ldap_pvt_thread_mutex_unlock
(
&
num_sent_mutex
);
}
if
(
n
!=
-
1
)
{
Attribute
*
a
;
char
buf
[]
=
"+9223372036854775807L"
;
a
=
attr_find
(
e
->
e_attrs
,
mi
->
mi_ad_monitorCounter
);
if
(
a
==
NULL
)
{
return
(
-
1
);
}
break
;
snprintf
(
buf
,
sizeof
(
buf
),
"%ld"
,
n
);
free
(
a
->
a_vals
[
0
].
bv_val
);
ber_str2bv
(
buf
,
0
,
1
,
&
a
->
a_vals
[
0
]
);
default:
assert
(
0
);
}
ldap_pvt_thread_mutex_unlock
(
&
num_sent_mutex
);
a
=
attr_find
(
e
->
e_attrs
,
mi
->
mi_ad_monitorCounter
);
if
(
a
==
NULL
)
{
return
-
1
;
}
return
(
0
);
snprintf
(
buf
,
sizeof
(
buf
),
"%lu"
,
n
);
free
(
a
->
a_vals
[
0
].
bv_val
);
ber_str2bv
(
buf
,
0
,
1
,
&
a
->
a_vals
[
0
]
);
return
0
;
}
This diff is collapsed.
Click to expand it.
servers/slapd/dn.c
+
27
−
0
View file @
7dc5a0bb
...
...
@@ -1126,6 +1126,33 @@ dnParent(
return
;
}
/*
* dnRdn - dn's rdn, in-place
* note: the incoming dn is assumed to be normalized/prettyfied,
* so that escaped rdn/ava separators are in '\'+hexpair form
*/
void
dnRdn
(
struct
berval
*
dn
,
struct
berval
*
rdn
)
{
char
*
p
;
*
rdn
=
*
dn
;
p
=
strchr
(
dn
->
bv_val
,
','
);
/* one-level dn */
if
(
p
==
NULL
)
{
return
;
}
assert
(
DN_SEPARATOR
(
p
[
0
]
)
);
assert
(
ATTR_LEADCHAR
(
p
[
1
]
)
);
rdn
->
bv_len
=
p
-
dn
->
bv_val
;
return
;
}
int
dnExtractRdn
(
struct
berval
*
dn
,
...
...
This diff is collapsed.
Click to expand it.
servers/slapd/proto-slap.h
+
1
−
0
View file @
7dc5a0bb
...
...
@@ -543,6 +543,7 @@ LDAP_SLAPD_F (void) build_new_dn LDAP_P((
void
*
memctx
));
LDAP_SLAPD_F
(
void
)
dnParent
LDAP_P
((
struct
berval
*
dn
,
struct
berval
*
pdn
));
LDAP_SLAPD_F
(
void
)
dnRdn
LDAP_P
((
struct
berval
*
dn
,
struct
berval
*
rdn
));
LDAP_SLAPD_F
(
int
)
dnX509normalize
LDAP_P
((
void
*
x509_name
,
struct
berval
*
out
));
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment