]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-monitor/listener.c
Set peeraddr also for IPv6, fixes ITS#1918
[openldap] / servers / slapd / back-monitor / listener.c
index d9c4cfa5d2534951f50db726b00bf8a60b80f48e..7dc98bed559ee3533e4e648968b320f8b6e7b354 100644 (file)
@@ -47,7 +47,6 @@ monitor_subsys_listener_init(
        Entry                   *e, *e_listener, *e_tmp;
        int                     i;
        struct monitorentrypriv *mp;
-       struct berval           bv[2];
        Listener                **l;
 
        assert( be != NULL );
@@ -87,41 +86,61 @@ monitor_subsys_listener_init(
        }
 
        e_tmp = NULL;
-       for ( i = 0; l[i]; i++ ) {
+       for ( i = 0; l[i]; i++ );
+       for ( ; i--; ) {
                char            buf[1024];
 
                snprintf( buf, sizeof( buf ),
-                               "dn: cn=%s,%s\n"
+                               "dn: cn=Listener %d,%s\n"
                                SLAPD_MONITOR_OBJECTCLASSES
-                               "cn: %s\n",
-                               l[i]->sl_name,
+                               "cn: Listener %d\n"
+                               "description: %s\n"
+                               "labeledURI: %s",
+                               i,
                                monitor_subsys[SLAPD_MONITOR_LISTENER].mss_dn.bv_val,
-                               l[i]->sl_name );
+                               i,
+                               l[i]->sl_name,
+
+                               l[i]->sl_url );
                
                e = str2entry( buf );
                if ( e == NULL ) {
 #ifdef NEW_LOGGING
                        LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
                                "monitor_subsys_listener_init: "
-                               "unable to create entry 'cn=%s,%s'\n",
-                               l[i]->sl_name,
+                               "unable to create entry 'cn=Listener, %d,%s'\n",
+                               i,
                                monitor_subsys[SLAPD_MONITOR_LISTENER].mss_ndn.bv_val ));
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_listener_init: "
-                               "unable to create entry 'cn=%s,%s'\n%s",
-                               l[i]->sl_name, 
+                               "unable to create entry 'cn=Listener %d,%s'\n%s",
+                               i,
                                monitor_subsys[SLAPD_MONITOR_LISTENER].mss_ndn.bv_val,
                                "" );
 #endif
                        return( -1 );
                }
-               
-               bv[1].bv_val = NULL;
-               bv[0].bv_val = l[i]->sl_url;
-               bv[0].bv_len = strlen( bv[0].bv_val );
-               attr_merge( e, monitor_ad_desc, bv );
-               
+
+#ifdef HAVE_TLS
+               if ( l[i]->sl_is_tls ) {
+                       struct berval bv[2];
+                       bv[1].bv_val = NULL;
+                       bv[0].bv_val = "TLS";
+                       bv[0].bv_len = sizeof("TLS")-1;
+                       attr_merge( e, monitor_ad_desc, bv );
+               }
+#endif /* HAVE_TLS */
+#ifdef LDAP_CONNECTIONLESS
+               if ( l[i]->sl_is_udp ) {
+                       struct berval bv[2];
+                       bv[1].bv_val = NULL;
+                       bv[0].bv_val = "UDP";
+                       bv[0].bv_len = sizeof("UDP")-1;
+                       attr_merge( e, monitor_ad_desc, bv );
+               }
+#endif /* HAVE_TLS */
+
                mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
                e->e_private = ( void * )mp;
                mp->mp_next = e_tmp;
@@ -134,14 +153,14 @@ monitor_subsys_listener_init(
 #ifdef NEW_LOGGING
                        LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
                                "monitor_subsys_listener_init: "
-                               "unable to add entry 'cn=%s,%s'\n",
-                               l[i]->sl_name, 
+                               "unable to add entry 'cn=Listener %d,%s'\n",
+                               i,
                                monitor_subsys[SLAPD_MONITOR_LISTENER].mss_ndn.bv_val ));
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_listener_init: "
-                               "unable to add entry 'cn=%s,%s'\n",
-                               l[i]->sl_name, 
+                               "unable to add entry 'cn=Listener %d,%s'\n",
+                               i,
                                monitor_subsys[SLAPD_MONITOR_LISTENER].mss_ndn.bv_val,
                                0 );
 #endif