]> git.sur5r.net Git - openldap/blobdiff - libraries/liblber/lber-int.h
Move schema needed by slapd to core.schema so that only one file
[openldap] / libraries / liblber / lber-int.h
index aeab66b2ba5c73c09e571021f8971b8f9f3d4511..10b8b2cbd7410cc2d83edfee79ad5e2ed710aafd 100644 (file)
@@ -1,5 +1,6 @@
+/* $OpenLDAP$ */
 /*
- * Copyright 1998 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /* Portions
 
 LDAP_BEGIN_DECL
 
-#define LBER_ITEM_BERELEMENT 1
-#define LBER_ITEM_SOCKBUF 2
+LIBLBER_F (BER_ERRNO_FN) ber_int_errno_fn;
 
-extern int lber_int_debug;
-#define lber_log_printf lber_pvt_log_printf
+struct lber_options {
+       short lbo_valid;
+#define LBER_UNINITIALIZED             0x0
+#define LBER_INITIALIZED               0x1
+#define LBER_VALID_BERELEMENT  0x2
+#define LBER_VALID_SOCKBUF             0x3
+
+       unsigned short lbo_options;
+       int lbo_debug;
+};
+
+LIBLBER_F (struct lber_options) ber_int_options;
+#define ber_int_debug ber_int_options.lbo_debug
 
 struct berelement {
-       short           ber_item_type;  /* always LBER_ITEM_BERELEMENT */
-       short           ber_options;
-       int                     ber_debug;
+       struct          lber_options ber_opts;
+#define ber_valid              ber_opts.lbo_valid
+#define ber_options            ber_opts.lbo_options
+#define ber_debug              ber_opts.lbo_debug
 
-       int                     ber_usertag;
+       ber_tag_t       ber_usertag;
 
-       unsigned long   ber_tag;
-       unsigned long   ber_len;
+       ber_tag_t       ber_tag;
+       ber_len_t       ber_len;
 
        char            *ber_buf;
        char            *ber_ptr;
@@ -48,7 +60,11 @@ struct berelement {
        BERTranslateProc ber_encode_translate_proc;
        BERTranslateProc ber_decode_translate_proc;
 };
-#define NULLBER        ((BerElement *) 0)
+#define BER_VALID(ber) ((ber)->ber_valid==LBER_VALID_BERELEMENT)
+
+
+#define ber_pvt_ber_bytes(ber)         ((ber)->ber_ptr - (ber)->ber_buf)
+#define ber_pvt_ber_remaining(ber)     ((ber)->ber_end - (ber)->ber_ptr)
 
 struct sockbuf;
 
@@ -56,13 +72,12 @@ struct sockbuf_io {
        int     (*sbi_setup)( struct sockbuf * sb, void *arg );
        int     (*sbi_remove)( struct sockbuf *sb );
        
-       long    (*sbi_read)( struct sockbuf *sb, void *buf, long len );
-       long    (*sbi_write)( struct sockbuf *sb, void *buf, long len );
+       ber_slen_t      (*sbi_read)( struct sockbuf *sb, void *buf, ber_len_t len );
+       ber_slen_t      (*sbi_write)( struct sockbuf *sb, void *buf, ber_len_t len );
        int     (*sbi_close)( struct sockbuf *sb );
 };
 
-struct sockbuf_sec
-{
+struct sockbuf_sec {
        int     (*sbs_setup)( struct sockbuf * sb, void *arg );
        int     (*sbs_remove)( struct sockbuf *sb );
    
@@ -72,11 +87,10 @@ struct sockbuf_sec
                               char *out0, long olen0, char *out1, long olen1 );
 };
 
-struct sockbuf_buf
-{
-       long    buf_size;
-       long    buf_ptr;
-       long    buf_end;
+struct sockbuf_buf {
+       ber_len_t       buf_size;
+       ber_len_t       buf_ptr;
+       ber_len_t       buf_end;
        char    *buf_base;
 };
 
@@ -84,23 +98,16 @@ typedef struct sockbuf_io Sockbuf_IO;
 typedef struct sockbuf_sec Sockbuf_Sec;
 typedef struct sockbuf_buf Sockbuf_Buf;
 
-#define        lber_pvt_sb_get_desc( sb ) ((sb)->sb_sd)
-#define lber_pvt_sb_set_desc( sb, val ) ((sb)->sb_sd =(val))
-#define lber_pvt_sb_in_use( sb ) ((sb)->sb_sd!=-1)
+LIBLBER_F( Sockbuf_IO ) ber_pvt_sb_io_tcp;
+LIBLBER_F( Sockbuf_IO ) ber_pvt_sb_io_udp;
 
-#ifdef USE_SASL
-#define lber_pvt_sb_data_ready( sb ) \
-(((sb)->sb_buf_ready) || ((sb)->sb_trans_ready) || ((sb)->sb_sec_ready))
-#else
-#define lber_pvt_sb_data_ready( sb ) \
-(((sb)->sb_buf_ready) || ((sb)->sb_trans_ready))
-#endif
 
 struct sockbuf {
-       short           sb_item_type;   /* always LBER_ITEM_SOCKBUF */
-       short           sb_options;     /* to support copying ber elements */
+       struct lber_options sb_opts;
+#define        sb_valid                sb_opts.lbo_valid
+#define        sb_options              sb_opts.lbo_options
+#define        sb_debug                sb_opts.lbo_debug
 
-       int             sb_debug:1;
        int             sb_non_block:1; 
        int             sb_read_ahead:1;
    
@@ -108,6 +115,12 @@ struct sockbuf {
        int             sb_trans_ready:1;
        int             sb_sec_ready:1;
       
+       /* these bits indicate if the transport layer 
+        * needs to read or write 
+        */
+       int             sb_trans_needs_read:1;
+       int             sb_trans_needs_write:1;
+
        int             sb_fd;
    
        void            *sb_iodata;     /* transport-layer data pointer */
@@ -117,12 +130,9 @@ struct sockbuf {
        void            *sb_sdata;      /* security-layer data pointer */
        Sockbuf_Sec     *sb_sec;
 #endif 
-       
-#ifndef MACOS
-       int             sb_sd;
-#else /* MACOS */
-       void            *sb_sd;
-#endif /* MACOS */
+
+       ber_socket_t    sb_sd;
+
 #ifdef DEADWOOD
        long            sb_max_incoming;
 #endif
@@ -130,61 +140,157 @@ struct sockbuf {
 #ifdef LDAP_SASL   
        Sockbuf_Buf     sb_sec_buf_in;
        Sockbuf_Buf     sb_sec_buf_out;
-       long            sb_sec_prev_len;
+       ber_len_t       sb_sec_prev_len;
 #endif   
 };
+#define SOCKBUF_VALID(ber)     ((sb)->sb_valid==LBER_VALID_SOCKBUF)
+
+/* these should be internal ie: ber_int_* */
+#define        ber_pvt_sb_get_desc( sb ) ((sb)->sb_sd)
+#define ber_pvt_sb_set_desc( sb, val ) ((sb)->sb_sd =(val))
+
+#define ber_pvt_sb_in_use( sb ) ((sb)->sb_sd != AC_SOCKET_INVALID)
+
+#ifdef USE_SASL
+#define ber_pvt_sb_data_ready( sb ) \
+(((sb)->sb_buf_ready) || ((sb)->sb_trans_ready) || ((sb)->sb_sec_ready))
+#else
+#define ber_pvt_sb_data_ready( sb ) \
+(((sb)->sb_buf_ready) || ((sb)->sb_trans_ready))
+#endif
+#define ber_pvt_sb_needs_read( sb ) \
+((sb)->sb_trans_needs_read)
+#define ber_pvt_sb_needs_write( sb ) \
+((sb)->sb_trans_needs_write)
 
 #define READBUFSIZ     8192
 
 struct seqorset {
        BerElement      *sos_ber;
-       unsigned long   sos_clen;
-       unsigned long   sos_tag;
+       ber_len_t       sos_clen;
+       ber_tag_t       sos_tag;
        char            *sos_first;
        char            *sos_ptr;
        struct seqorset *sos_next;
 };
-#define NULLSEQORSET   ((Seqorset *) 0)
+
+
+/*
+ * io.c
+ */
+int ber_realloc LDAP_P((
+       BerElement *ber,
+       ber_len_t len ));
 
 /*
  * bprint.c
  */
-LDAP_F int lber_log_bprint LDAP_P((
+#define ber_log_printf ber_pvt_log_printf
+
+LIBLBER_F( int )
+ber_log_bprint LDAP_P((
        int errlvl,
        int loglvl,
-       char *data,
-       int len ));
+       const char *data,
+       ber_len_t len ));
 
-LDAP_F int lber_log_dump LDAP_P((
+LIBLBER_F( int )
+ber_log_dump LDAP_P((
        int errlvl,
        int loglvl,
        BerElement *ber,
        int inout ));
 
-LDAP_F int lber_log_sos_dump LDAP_P((
+LIBLBER_F( int )
+ber_log_sos_dump LDAP_P((
        int errlvl,
        int loglvl,
        Seqorset *sos ));
 
+
+/* memory.c */
+       /* simple macros to realloc for now */
+LIBLBER_F (BerMemoryFunctions *)       ber_int_memory_fns;
+
+#ifdef CSRIMALLOC
+#define LBER_INT_MALLOC                malloc
+#define LBER_INT_CALLOC                calloc
+#define LBER_INT_REALLOC       realloc
+#define LBER_INT_FREE          free
+#define LBER_INT_VFREE         ber_memvfree
+#define LBER_INT_STRDUP                strdup
+
+#define LBER_MALLOC                    malloc
+#define LBER_CALLOC                    calloc
+#define LBER_REALLOC           realloc
+#define LBER_FREE                      free
+#define LBER_VFREE                     ber_memvfree
+#define LBER_STRDUP                    strdup
+
+#else
+#define LBER_INT_MALLOC(s)             ber_memalloc((s))
+#define LBER_INT_CALLOC(n,s)   ber_memcalloc((n),(s))
+#define LBER_INT_REALLOC(p,s)  ber_memrealloc((p),(s))
+#define LBER_INT_FREE(p)               ber_memfree((p))
+#define LBER_INT_VFREE(v)              ber_memvfree((void**)(v))
+#define LBER_INT_STRDUP(s)             ber_strdup((s))
+
+#define LBER_MALLOC(s)         ber_memalloc((s))
+#define LBER_CALLOC(n,s)       ber_memcalloc((n),(s))
+#define LBER_REALLOC(p,s)      ber_memrealloc((p),(s))
+#define LBER_FREE(p)           ber_memfree((p))        
+#define LBER_VFREE(v)          ber_memvfree((void**)(v))
+#define LBER_STRDUP(s)         ber_strdup((s))
+#endif
+
 /* sockbuf.c */
 
-LDAP_F int lber_pvt_sb_init LDAP_P(( Sockbuf *sb ));
-LDAP_F int lber_pvt_sb_destroy LDAP_P(( Sockbuf *sb ));
+/* these should be ber_int*() functions */
+
+LIBLBER_F( int )
+ber_pvt_sb_init LDAP_P(( Sockbuf *sb ));
+
+LIBLBER_F(     int )
+ber_pvt_sb_destroy LDAP_P(( Sockbuf *sb ));
+
 #ifdef USE_SASL
-LDAP_F  int lber_pvt_sb_set_sec LDAP_P(( Sockbuf *sb, Sockbuf_Sec *sec, void *arg ));
-LDAP_F  int lber_pvt_sb_clear_sec LDAP_P(( Sockbuf *sb ));
+LIBLBER_F( int )
+ber_pvt_sb_set_sec LDAP_P(( Sockbuf *sb, Sockbuf_Sec *sec, void *arg ));
+
+LIBLBER_F( int )
+ber_pvt_sb_clear_sec LDAP_P(( Sockbuf *sb ));
 #endif
-LDAP_F int lber_pvt_sb_set_io LDAP_P(( Sockbuf *sb, Sockbuf_IO *layer, void *arg ));
-LDAP_F int lber_pvt_sb_clear_io LDAP_P(( Sockbuf *sb ));
-LDAP_F int lber_pvt_sb_close LDAP_P((Sockbuf *sb ));
-LDAP_F  int lber_pvt_sb_set_nonblock LDAP_P(( Sockbuf *sb, int nb ));
-LDAP_F  int lber_pvt_sb_set_readahead LDAP_P(( Sockbuf *sb, int rh ));
-LDAP_F  long lber_pvt_sb_read LDAP_P(( Sockbuf *sb, void *buf, long len ));
-LDAP_F  long lber_pvt_sb_write LDAP_P(( Sockbuf *sb, void *buf, long len ));
-LDAP_F int lber_pvt_sb_udp_set_dst LDAP_P((Sockbuf *sb, void *addr ));
-LDAP_F void *lber_pvt_sb_udp_get_src LDAP_P((Sockbuf *sb ));
-
-extern Sockbuf_IO lber_pvt_sb_io_tcp;
-extern Sockbuf_IO lber_pvt_sb_io_udp;
+
+LIBLBER_F(     int )
+ber_pvt_sb_set_io LDAP_P(( Sockbuf *sb, Sockbuf_IO *layer, void *arg ));
+
+LIBLBER_F(     int )
+ber_pvt_sb_clear_io LDAP_P(( Sockbuf *sb ));
+
+LIBLBER_F(     int )
+ber_pvt_sb_close LDAP_P((Sockbuf *sb ));
+
+LIBLBER_F( int )
+ber_pvt_sb_set_nonblock LDAP_P(( Sockbuf *sb, int nb ));
+
+LIBLBER_F( int )
+ber_pvt_sb_set_readahead LDAP_P(( Sockbuf *sb, int rh ));
+
+LIBLBER_F( ber_slen_t )
+ber_pvt_sb_read LDAP_P(( Sockbuf *sb, void *buf, ber_len_t len ));
+
+LIBLBER_F( ber_slen_t )
+ber_pvt_sb_write LDAP_P(( Sockbuf *sb, void *buf, ber_len_t len ));
+
+LIBLBER_F(     int )
+ber_pvt_sb_udp_set_dst LDAP_P((Sockbuf *sb, void *addr ));
+
+LIBLBER_F(     void * )
+ber_pvt_sb_udp_get_src LDAP_P((Sockbuf *sb ));
+
+LIBLBER_F( int )
+ber_pvt_socket_set_nonblock LDAP_P(( ber_socket_t sd, int nb ));
+
+LDAP_END_DECL
 
 #endif /* _LBER_INT_H */