]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/url.c
skeleton of ldap_str2nd/dn2str; works with most of the simple cases, but there's...
[openldap] / libraries / libldap / url.c
index 6fe98adafba9840d629090c8e6e2a94557db9ad1..48b8f7b30d44970837f7987b3b0f25e90b73e42c 100644 (file)
@@ -60,6 +60,11 @@ int ldap_pvt_url_scheme2proto( const char *scheme )
        if( strcmp("ldaps", scheme) == 0 ) {
                return LDAP_PROTO_TCP;
        }
+#ifdef LDAP_CONNECTIONLESS
+       if( strcmp("cldap", scheme) == 0 ) {
+               return LDAP_PROTO_UDP;
+       }
+#endif
 
        return -1;
 }
@@ -126,6 +131,25 @@ ldap_is_ldapi_url( LDAP_CONST char *url )
        return strcmp(scheme, "ldapi") == 0;
 }
 
+#ifdef LDAP_CONNECTIONLESS
+int
+ldap_is_ldapc_url( LDAP_CONST char *url )
+{
+       int     enclosed;
+       const char * scheme;
+
+       if( url == NULL ) {
+               return 0;
+       }
+
+       if( skip_url_prefix( url, &enclosed, &scheme ) == NULL ) {
+               return 0;
+       }
+
+       return strcmp(scheme, "cldap") == 0;
+}
+#endif
+
 static const char*
 skip_url_prefix(
        const char *url,
@@ -181,6 +205,16 @@ skip_url_prefix(
                return( p );
        }
 
+#ifdef LDAP_CONNECTIONLESS
+       /* check for "cldap://" prefix */
+       if ( strncasecmp( p, LDAPC_URL_PREFIX, LDAPC_URL_PREFIX_LEN ) == 0 ) {
+               /* skip over "cldap://" prefix and return success */
+               p += LDAPC_URL_PREFIX_LEN;
+               *scheme = "cldap";
+               return( p );
+       }
+#endif
+
        return( NULL );
 }
 
@@ -732,6 +766,10 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
        if ((*ludpp)->lud_port == 0) {
                if( strcmp((*ludpp)->lud_scheme, "ldap") == 0 ) {
                        (*ludpp)->lud_port = LDAP_PORT;
+#ifdef LDAP_CONNECTIONLESS
+               } else if( strcmp((*ludpp)->lud_scheme, "cldap") == 0 ) {
+                       (*ludpp)->lud_port = LDAP_PORT;
+#endif
                } else if( strcmp((*ludpp)->lud_scheme, "ldaps") == 0 ) {
                        (*ludpp)->lud_port = LDAPS_PORT;
                }