ITS#7182 Expose the connection flags.

The flags are exposed using a multivalued parameter so that other
connection flags (like back-meta's) could be exported without needing
additional code.
This commit is contained in:
Ondrej Kuznik 2012-02-28 15:02:51 +01:00 committed by Howard Chu
parent cfc947dd54
commit fa3a79c1b9

View File

@ -40,6 +40,7 @@ static ObjectClass *oc_olmLDAPConnection;
static AttributeDescription *ad_olmDbURIList; static AttributeDescription *ad_olmDbURIList;
static AttributeDescription *ad_olmDbOperations; static AttributeDescription *ad_olmDbOperations;
static AttributeDescription *ad_olmDbBoundDN; static AttributeDescription *ad_olmDbBoundDN;
static AttributeDescription *ad_olmDbConnFlags;
/* /*
* Stolen from back-monitor/operations.c * Stolen from back-monitor/operations.c
@ -62,6 +63,24 @@ struct ldap_back_monitor_ops_t {
{ BER_BVNULL } { BER_BVNULL }
}; };
/* Corresponds to connection flags in back-ldap.h */
static struct {
unsigned flag;
struct berval name;
} s_flag[] = {
{ LDAP_BACK_FCONN_ISBOUND, BER_BVC( "bound" ) },
{ LDAP_BACK_FCONN_ISANON, BER_BVC( "anonymous" ) },
{ LDAP_BACK_FCONN_ISPRIV, BER_BVC( "privileged" ) },
{ LDAP_BACK_FCONN_ISTLS, BER_BVC( "TLS" ) },
{ LDAP_BACK_FCONN_BINDING, BER_BVC( "binding" ) },
{ LDAP_BACK_FCONN_TAINTED, BER_BVC( "tainted" ) },
{ LDAP_BACK_FCONN_ABANDON, BER_BVC( "abandon" ) },
{ LDAP_BACK_FCONN_ISIDASR, BER_BVC( "idassert" ) },
{ LDAP_BACK_FCONN_CACHED, BER_BVC( "cached" ) },
{ 0 }
};
/* /*
* NOTE: there's some confusion in monitor OID arc; * NOTE: there's some confusion in monitor OID arc;
@ -109,6 +128,13 @@ static struct {
"NO-USER-MODIFICATION " "NO-USER-MODIFICATION "
"USAGE dSAOperation )", "USAGE dSAOperation )",
&ad_olmDbBoundDN }, &ad_olmDbBoundDN },
{ "( olmLDAPAttributes:4 "
"NAME ( 'olmDbConnFlags' ) "
"DESC 'monitor connection flags' "
"SUP monitoredInfo "
"NO-USER-MODIFICATION "
"USAGE dSAOperation )",
&ad_olmDbConnFlags },
{ NULL } { NULL }
}; };
@ -131,6 +157,7 @@ static struct {
"SUP monitorConnection STRUCTURAL " "SUP monitorConnection STRUCTURAL "
"MAY ( " "MAY ( "
"olmDbBoundDN " "olmDbBoundDN "
"$ olmDbConnFlags "
") )", ") )",
&oc_olmLDAPConnection }, &oc_olmLDAPConnection },
@ -345,6 +372,7 @@ ldap_back_monitor_conn_entry(
monitor_entry_t *mp; monitor_entry_t *mp;
char buf[SLAP_TEXT_BUFLEN]; char buf[SLAP_TEXT_BUFLEN];
struct berval bv, dn, ndn; struct berval bv, dn, ndn;
int i;
e = entry_alloc(); e = entry_alloc();
@ -367,6 +395,14 @@ ldap_back_monitor_conn_entry(
attr_merge_normalize_one( e, ad_olmDbBoundDN, &lc->lc_bound_ndn, NULL ); attr_merge_normalize_one( e, ad_olmDbBoundDN, &lc->lc_bound_ndn, NULL );
for ( i = 0; s_flag[i].flag; i++ )
{
if ( lc->lc_flags & s_flag[i].flag )
{
attr_merge_normalize_one( e, ad_olmDbConnFlags, &s_flag[i].name, NULL );
}
}
mp = monitor_entrypriv_create(); mp = monitor_entrypriv_create();
e->e_private = mp; e->e_private = mp;
mp->mp_info = arg->ms; mp->mp_info = arg->ms;