]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/os-ip.c
rename ldap_pvt_init_utils() to ldap_int_utils_init() and provide
[openldap] / libraries / libldap / os-ip.c
index 46ab3a6d5aafc5abd37224144255bb6db541b475..e46ff5eb84c4af21e10dc569bb6161ea05e7c102 100644 (file)
@@ -1,4 +1,8 @@
 /*
+ * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/*  Portions
  *  Copyright (c) 1995 Regents of the University of Michigan.
  *  All rights reserved.
  *
@@ -29,7 +33,7 @@
 #include "ldap-int.h"
 
 int
-ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
+ldap_connect_to_host( Sockbuf *sb, const char *host, unsigned long address,
        int port, int async )
 /*
  * if host == NULL, connect using address
@@ -44,12 +48,10 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
        struct sockaddr_in      sin;
        struct hostent          *hp = NULL;
 #ifdef notyet
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
-       int                     status; /* for ioctl call */
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
+       ioctl_t                 status; /* for ioctl call */
 #endif /* notyet */
    
-       /* buffers for ldap_int_gethostbyname_a */
+       /* buffers for ldap_pvt_gethostbyname_a */
        struct hostent          he_buf;
        int                     local_h_errno;
        char                    *ha_buf=NULL;
@@ -65,7 +67,7 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
            /* This was just a test for -1 until OSF1 let inet_addr return
               unsigned int, which is narrower than 'unsigned long address' */
            if ( address == 0xffffffff || address == (unsigned long) -1 ) {
-               if ( ( ldap_int_gethostbyname_a( host, &he_buf, &ha_buf,
+               if ( ( ldap_pvt_gethostbyname_a( host, &he_buf, &ha_buf,
                        &hp, &local_h_errno) < 0) || (hp==NULL))
                {
 #ifdef HAVE_WINSOCK
@@ -85,13 +87,11 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
                        DO_RETURN( -1 );
                }
 #ifdef notyet
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
                status = 1;
                if ( async && ioctl( s, FIONBIO, (caddr_t)&status ) == -1 ) {
                        Debug( LDAP_DEBUG_ANY, "FIONBIO ioctl failed on %d\n",
                            s, 0, 0 );
                }
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 #endif /* notyet */
                (void)memset( (char *)&sin, 0, sizeof( struct sockaddr_in ));
                sin.sin_family = AF_INET;
@@ -110,7 +110,6 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
                        errno = WSAGetLastError();
 #endif
 #ifdef notyet
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
 #ifdef EAGAIN
                        if ( errno == EINPROGRESS || errno == EAGAIN ) {
 #else /* EAGAIN */
@@ -121,7 +120,6 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
                                rc = -2;
                                break;
                        }
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 #endif /* notyet */
 
 #ifdef LDAP_DEBUG              
@@ -136,17 +134,16 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
                }
        }
 
-       sb->sb_sd = s;
+       ber_pvt_sb_set_desc( sb, s );           
 
        if ( connected ) {
+          
 #ifdef notyet
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
                status = 0;
                if ( !async && ioctl( s, FIONBIO, (caddr_t)&on ) == -1 ) {
                        Debug( LDAP_DEBUG_ANY, "FIONBIO ioctl failed on %d\n",
                            s, 0, 0 );
                }
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 #endif /* notyet */
 
                Debug( LDAP_DEBUG_TRACE, "sd %d connected to: %s\n",
@@ -154,8 +151,6 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
        }
 
        DO_RETURN( rc );
-       
-       
 }
    
 #undef DO_RETURN
@@ -164,11 +159,11 @@ ldap_connect_to_host( Sockbuf *sb, char *host, unsigned long address,
 void
 ldap_close_connection( Sockbuf *sb )
 {
-    tcp_close( sb->sb_sd );
+       ber_pvt_sb_close( sb );
 }
 
 
-#ifdef HAVE_KERBEROS
+#if defined( HAVE_KERBEROS ) || defined( HAVE_TLS )
 char *
 ldap_host_connected_to( Sockbuf *sb )
 {
@@ -185,7 +180,8 @@ ldap_host_connected_to( Sockbuf *sb )
    
        (void)memset( (char *)&sin, 0, sizeof( struct sockaddr_in ));
        len = sizeof( sin );
-       if ( getpeername( sb->sb_sd, (struct sockaddr *)&sin, &len ) == -1 ) {
+
+       if ( getpeername( ber_pvt_sb_get_desc(sb), (struct sockaddr *)&sin, &len ) == -1 ) {
                return( NULL );
        }
 
@@ -194,13 +190,14 @@ ldap_host_connected_to( Sockbuf *sb )
         * this is necessary for kerberos to work right, since the official
         * hostname is used as the kerberos instance.
         */
-       if ((ldap_int_gethostbyaddr_a( (char *) &sin.sin_addr,
+       if ((ldap_pvt_gethostbyaddr_a( (char *) &sin.sin_addr,
                sizeof( sin.sin_addr ), 
                AF_INET, &he_buf, &ha_buf,
                &hp,&local_h_errno ) ==0 ) && (hp != NULL) )
        {
                if ( hp->h_name != NULL ) {
-                       DO_RETURN( ldap_strdup( hp->h_name ));
+                       char *host = strdup( hp->h_name );   
+                       DO_RETURN( host );
                }
        }
 
@@ -208,10 +205,9 @@ ldap_host_connected_to( Sockbuf *sb )
 }
 #undef DO_RETURN   
    
-#endif /* HAVE_KERBEROS */
+#endif /* HAVE_KERBEROS || HAVE_TLS */
 
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
 /* for UNIX */
 struct selectinfo {
        fd_set  si_readfds;
@@ -227,8 +223,8 @@ ldap_mark_select_write( LDAP *ld, Sockbuf *sb )
        struct selectinfo       *sip;
 
        sip = (struct selectinfo *)ld->ld_selectinfo;
-
-       if ( !FD_ISSET( sb->sb_sd, &sip->si_writefds )) {
+       
+       if ( !FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_writefds )) {
                FD_SET( (u_int) sb->sb_sd, &sip->si_writefds );
        }
 }
@@ -241,7 +237,7 @@ ldap_mark_select_read( LDAP *ld, Sockbuf *sb )
 
        sip = (struct selectinfo *)ld->ld_selectinfo;
 
-       if ( !FD_ISSET( sb->sb_sd, &sip->si_readfds )) {
+       if ( !FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_readfds )) {
                FD_SET( (u_int) sb->sb_sd, &sip->si_readfds );
        }
 }
@@ -254,8 +250,8 @@ ldap_mark_select_clear( LDAP *ld, Sockbuf *sb )
 
        sip = (struct selectinfo *)ld->ld_selectinfo;
 
-       FD_CLR( (u_int) sb->sb_sd, &sip->si_writefds );
-       FD_CLR( (u_int) sb->sb_sd, &sip->si_readfds );
+       FD_CLR( (u_int) ber_pvt_sb_get_desc(sb), &sip->si_writefds );
+       FD_CLR( (u_int) ber_pvt_sb_get_desc(sb), &sip->si_readfds );
 }
 
 
@@ -266,7 +262,7 @@ ldap_is_write_ready( LDAP *ld, Sockbuf *sb )
 
        sip = (struct selectinfo *)ld->ld_selectinfo;
 
-       return( FD_ISSET( sb->sb_sd, &sip->si_use_writefds ));
+       return( FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_use_writefds ));
 }
 
 
@@ -277,7 +273,7 @@ ldap_is_read_ready( LDAP *ld, Sockbuf *sb )
 
        sip = (struct selectinfo *)ld->ld_selectinfo;
 
-       return( FD_ISSET( sb->sb_sd, &sip->si_use_readfds ));
+       return( FD_ISSET( ber_pvt_sb_get_desc(sb), &sip->si_use_readfds ));
 }
 
 
@@ -334,4 +330,3 @@ do_ldap_select( LDAP *ld, struct timeval *timeout )
        return( select( tblsize, &sip->si_use_readfds, &sip->si_use_writefds,
            NULL, timeout ));
 }
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */