#define WAS_LATE 0x100
#define WAS_DOWN 0x200
+#define WAS_INIT 0x400
#define MONFILTER "(objectClass=monitorOperation)"
for (i=0; i<numservers; i++) {
printf("\n%s", servers[i].url );
+ if ( !(servers[i].flags & WAS_INIT )) {
+ printf(", unknown");
+ }
if ( servers[i].flags & WAS_DOWN ) {
printf(", down@");
timestamp( &servers[i].down );
}
int
-setup_server( struct tester_conn_args *config, server *sv, int first )
+setup_server( struct tester_conn_args *config, server *sv )
{
config->uri = sv->url;
- tester_init_ld( &sv->ld, config, first ? 0 : TESTER_INIT_NOEXIT );
+ tester_init_ld( &sv->ld, config, TESTER_INIT_NOEXIT );
if ( !sv->ld )
return -1;
default:
tester_ldap_error( ld, "ldap_search_ext_s(cn=Monitor)", sv->url );
- if ( first )
- exit( EXIT_FAILURE );
}
ldap_msgfree( res );
default:
tester_ldap_error( ld, "ldap_search_ext_s(baseDN)", sv->url );
- if ( first )
- exit( EXIT_FAILURE );
}
}
}
} else if ( sv->flags & HAS_MONITOR ) {
sv->monitorfilter = (char *)default_monfilter;
}
- if ( first )
+ if ( !( sv->flags & WAS_INIT )) {
+ sv->flags |= WAS_INIT;
rotate_stats( sv );
+ }
return 0;
}
int i, rc, *msg1, *msg2;
char **sids = NULL;
struct tester_conn_args *config;
- int first = 1;
config = tester_init( "slapd-watcher", TESTER_TESTER );
config->authmethod = LDAP_AUTH_SIMPLE;
msg2[i] = 0;
}
if ( !servers[i].ld ) {
- setup_server( config, &servers[i], first );
+ setup_server( config, &servers[i] );
} else {
ld = servers[i].ld;
rc = -1;
attrs, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &msg1[i] );
if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_search_ext(cn=Monitor)", servers[i].url );
- if ( first )
- exit( EXIT_FAILURE );
- else {
server_down1:
- ldap_unbind_ext( ld, NULL, NULL );
- servers[i].flags |= WAS_DOWN;
- servers[i].ld = NULL;
- gettimeofday( &tv, NULL );
- servers[i].down = tv.tv_sec;
- msg1[i] = 0;
- msg2[i] = 0;
- continue;
- }
+ ldap_unbind_ext( ld, NULL, NULL );
+ servers[i].flags |= WAS_DOWN;
+ servers[i].ld = NULL;
+ gettimeofday( &tv, NULL );
+ servers[i].down = tv.tv_sec;
+ msg1[i] = 0;
+ msg2[i] = 0;
+ continue;
}
}
if (( servers[i].flags & HAS_BASE ) && !msg2[i] ) {
attrs, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &msg2[i] );
if ( rc != LDAP_SUCCESS ) {
tester_ldap_error( ld, "ldap_search_ext(baseDN)", servers[i].url );
- if ( first )
- exit( EXIT_FAILURE );
- else
- goto server_down1;
+ goto server_down1;
}
}
if ( rc != -1 )
rc = ldap_result( ld, msg1[i], LDAP_MSG_ALL, &tv, &res );
if ( rc < 0 ) {
tester_ldap_error( ld, "ldap_result(cn=Monitor)", servers[i].url );
- if ( first )
- exit( EXIT_FAILURE );
- else {
server_down2:
- ldap_unbind_ext( ld, NULL, NULL );
- servers[i].flags |= WAS_DOWN;
- servers[i].ld = NULL;
- servers[i].down = servers[i].c_curr.time.tv_sec;
- msg1[i] = 0;
- msg2[i] = 0;
- continue;
- }
+ ldap_unbind_ext( ld, NULL, NULL );
+ servers[i].flags |= WAS_DOWN;
+ servers[i].ld = NULL;
+ servers[i].down = servers[i].c_curr.time.tv_sec;
+ msg1[i] = 0;
+ msg2[i] = 0;
+ continue;
}
if ( rc == 0 ) {
if ( !( servers[i].flags & WAS_LATE ))
rc = ldap_result( ld, msg2[i], LDAP_MSG_ALL, &tv, &res );
if ( rc < 0 ) {
tester_ldap_error( ld, "ldap_result(baseDN)", servers[i].url );
- if ( first )
- exit( EXIT_FAILURE );
- else
- goto server_down2;
+ goto server_down2;
}
if ( rc == 0 ) {
if ( !( servers[i].flags & WAS_LATE ))
}
display();
sleep(interval);
- first = 0;
}
exit( EXIT_SUCCESS );